2048遊戲:數字合併方法

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

2048遊戲是個單人遊戲,玩家在 4 x 4 的格子內使用上、下、左、右來移動格子內的數字,移動之後相鄰且相同的數字會加總起來。(詳細遊戲規則可參考:https://char.tw/blog/post/41098784)

而此遊戲其中的數字合併加總的方法被CourseraPrinciples of computing part I
當成一個mini project作為python練習題,於是筆者照著網頁所提到的方法來練習一下。方法如下:
步驟一
將輸入的非零數字往左移動。
例如:
[0, 2, 0, 2] ==> [2, 2, 0, 0]
[2, 0, 0, 2] ==> [2, 2, 0, 0]

步驟二
合併相同的數字。
例如:
[2, 2, 0, 0] ==> [4, 0, 0, 0]
[2, 2, 2, 0] ==> [4, 2, 0, 0]
[2, 4, 4, 2] ==> [2, 8, 2, 0]


實作出來的Python程式碼

演算法:二分搜尋法( Binary Search Algorithm )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

最近想著怎麼教國中生二分搜尋法(Binary Search),就找到在可汗學院上的猜數字遊戲,就將此網頁的教學觀念改成在下的版本。

可汗學院上的猜數字有兩題,一題是猜1到16的數字:


一題是猜1到300的數字:

根據以上的範例,就找了這個網頁 http://ftp.phjh.tc.edu.tw/~klychen/Research/FinalNumber/ChooseNum.php 給學生試試,並詢問學生底下兩個問題:

  1. 能在幾次內猜中?
  2. 用了什麼策略?

之後再解釋怎麼做才能保證在10次內猜中 1 到 1000 之間的數字,並解釋什麼是二分搜尋法,
結果發現其實有些國中生早就有怎麼解題的觀念了,只是不知道這個觀念是二分搜尋法的基礎,二分搜尋法適合在已經排序好的資料,而且也是個類似 divide and conquer 的方法。

<輕鬆的運算思維>一文閱讀心得

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

此文為閱讀 <輕鬆的運算思維> 一文的心得。

運算思維可以融入其他科目中,例如數學或國文。因為「預測與邏輯判斷」是運算思維的核心之一。

舉例來說,我們要用電腦來判斷兩個數字大小時,流程可能如下(以中文表示):
請輸入第一個數字。
請輸入第二個數字。
如果 第一個數字
大於 第二個數字 時
    顯示 【第一個數字比第二個數字大】
否則
    顯示 【第二個數字比第一個數字大】
可使用 Scratch 來完成:

將積木換成英文版:


也可以 Python 來達成:



最後以 C 程式語言當結尾:

簡言之,若不考慮用哪種程式語言時,可以用中文的句子來描述並訓練一些邏輯概念,邏輯有了之後,利用 Blockly 相關工具(例如陳會安的ArduBlockly中文離線版、Blockly的範例程式CodeEditor)來熟悉一些邏輯觀念與程式語言語法之間的轉換,最後再開始學習程式語言的語法(筆者就是曾經深受程式語言的語法所困擾)。數學的例子可參考第一式:必殺-剪刀石頭布