發表文章

目前顯示的是 9月, 2017的文章

2048遊戲:數字合併方法

2048遊戲 是個單人遊戲,玩家在 4 x 4 的格子內使用上、下、左、右來移動格子內的數字,移動之後相鄰且相同的數字會加總起來。(詳細遊戲規則可參考: https://char.tw/blog/post/41098784 ) 而此遊戲其中的數字合併加總的方法被 Coursera 的 Principles 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程式碼 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

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

圖片
最近想著怎麼教國中生二分搜尋法(Binary Search),就找到在 可汗學院 上的 猜數字遊戲 ,就將此網頁的教學觀念改成在下的版本。 可汗學院上的猜數字有兩題,一題是猜1到16的數字: 一題是猜1到300的數字: 根據以上的範例,就找了這個網頁  http://ftp.phjh.tc.edu.tw/~klychen/Research/FinalNumber/ChooseNum.php  給學生試試,並詢問學生底下兩個問題: 能在幾次內猜中? 用了什麼策略? 之後再解釋怎麼做才能保證在10次內猜中 1 到 1000 之間的數字,並解釋什麼是二分搜尋法, 結果發現其實有些國中生早就有怎麼解題的觀念了,只是不知道這個觀念是二分搜尋法的基礎,二分搜尋法適合在已經排序好的資料,而且也是個類似 divide and conquer 的方法。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

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

圖片
此文為閱讀  <輕鬆的運算思維> 一文的心得。 運算思維可以融入其他科目中,例如數學或國文。因為「預測與邏輯判斷」是運算思維的核心之一。 舉例來說,我們要用電腦來判斷兩個數字大小時,流程可能如下(以中文表示): 請輸入第一個數字。 請輸入第二個數字。 如果 第一個數字 大於 第二個數字 時     顯示 【第一個數字比第二個數字大】 否則     顯示 【第二個數字比第一個數字大】 可使用 Scratch 來完成: 將積木換成英文版: 也可以 Python 來達成: 最後以 C 程式語言當結尾: 簡言之, 若不考慮用哪種程式語言時,可以用中文的句子來描述並訓練一些邏輯概念,邏輯有了之後,利用 Blockly 相關工具(例如陳會安的 ArduBlockly中文離線版 、Blockly的範例程式 CodeEditor )來熟悉一些邏輯觀念與程式語言語法之間的轉換,最後再開始學習程式語言的語法 。 ( 筆者就是曾經深受程式語言的語法所困擾 )。數學的例子可參考 第一式:必殺-剪刀石頭布 。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

OpenCV-Python on Windows with Anaconda 3

圖片
OpenCV is a open source computer vision library for real-time applications. It supports many programming languages such as C++, C, Python and Java. In this tutorial, OpenCV is installed with Anaconda 3 running on Windows 10. OK, let's get started. OpenCV 是一套開發電腦視覺即時處理的函式庫,支援多種程式語言,例如C++、C、Python、Java,本文會在Windows 10上安裝OpenCV與Anaconda 3,我們開始吧! 1. Anaconda 3 安裝 (Anaconda 3 Installation) Go to https://www.anaconda.com/download/ and download Anaconda 3. Then install it with default settings. 至  https://www.anaconda.com/download/  下載 Anaconda 3,使用預設設定來安裝。 2. 使用 Anaconda Prompt (Using Anaconda Prompt) Open the Anaconda Prompt in Anaconda 3 application folder. And test it with the command: 開啟應用程式Anaconda中的Prompt,輸入下面指令: 1 conda --version The conda version will display on the prompt windows: conda的版本資訊會顯示在 prompt 視窗中: 3. 建立Python環境 (Create an Python Environment) Enter the following commands in the prompt windows: 在prompt視窗中輸入下面指令: ...

OpenCV-Python in Windows 在Windows上使用OpenCV-Python

圖片
筆者嘗試在自己的筆電上裝OpenCV-Python,參考的文章為: Install OpenCV-Python in Windows 。需要下載三個軟體套件: Python-2.7.x .  Numpy .  Matplotlib ( 選擇性的套件,建議安裝,因為OpenCV的教學文章常用到 ) 使用預設選項安裝此三個套件,而Python會安裝在 C:\Python27\ 安裝完後請開啟 Python IDLE,輸入 import numpy檢查Numpy是否可正常使用。 從  sourceforge site 下載最新版的 OpenCV,並解壓縮。 將 opencv/build/python/2.7/x86/ 的 cv2.pyd 複製到  C:/Python27/lib/site-packages , 請開啟 Python IDLE,輸入 import cv2 與 print( cv2.__version__ ) 指令,若有輸出 OpenCV 的版本,就是安裝成功了。 接下來就可以使用 OpenCV 與 Python 來做 Computer Vision 相關的應用了。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

程式設計師需要知道的圖形使用者介面(GUI)觀念 ( Basic GUI Concepts for a Programmer )

圖片
早期的電腦( DOS 時代)都是文字介面,也就沒什麼講究畫面的設計方式,約莫五六年前吧,UI設計已經成為一個產品重要的因素之一,最經典的例子就是 iPhone 手機的硬體介面。想了解什麼是UI可參考此文: 什麼是 UI/使用者介面 。本文會以程式設計師的角度來談談所需要知道的觀念: 什麼是圖形使用者介面(Graphical User Interface)。 事件處理(Event Handling)。 MVC模式(Model–view–controller)。 手機GUI程式和電腦GUI程式有什麼不同。 什麼是圖形使用者介面(Graphical User Interface) 簡單來說就是 使用者與電腦互動的圖形畫面 ,例如Linux上的Unity、GNOME、KDE、Android手機畫面、iPhone手機畫面等。請參考由  https://en.wikipedia.org/wiki/Graphical_user_interface 所節錄的畫面: GNOME Shell ( Gnome‑3 )   KDE Plasma 5   Unity   Xfce   Enlightenment   Sugar   A  twm   X Window System environment   Windows on a  Wayland compositor   The  dwm   tiling window manager   Cinnamon 事件處理(Event Handling) 看過GUI的畫面之後,程式設計師應該會想知道如何寫一個GUI程式吧!那就需要了解GUI程式中是如何處理使用者按下滑鼠左鍵、用鍵盤打字等訊息。這部分的觀念清楚後,要學GUI程式設計就不會那麼難了。首先可以玩玩 Code.org 上的 製作一個Flappy遊戲 來認識什麼是事件。 再來看一下鍵盤...