2018/07/30

Arduino 無線電子鎖

昨天忽然想到,祇要利用 Arduino + 藍芽模組 + 馬達 + 齒輪 + 門閂就可以做一個簡易型的無線電子鎖了。

Arduino 無線電子鎖 圖、Arduino 無線電子鎖

利用這個電子鎖,門上連鑰匙孔都不需要,出門時用手機藍芽連上 Arduino,控制馬達將門閂帶上;回家時也是藍芽連上 Arduino 將門打開。小偷來到家門外,看到大門上連個鑰匙孔都沒有,完全不知道該怎麼下手,所以一開始想到時覺得這好像是個不錯的設計。

2018/07/28

人人寫程式是為補習班鋪路嗎?

教育部說 5 年內半數大學生需修過程式設計,想當然又引發不少爭論,很多人覺得文組學程式幹嘛啊?該不會是要為補習班鋪路吧?屆時滿街都是程式設計補習班,一堆在學校要被當掉的人趕快到補習班惡補以求期末不要被當。

是不是要為補習班鋪路我們暫且不論,但寫程式能夠大幅減少重覆的人工,其實是值得所有人學習的。以現在來說,學個 python 寫爬蟲抓資料應該是每個科系都用的到的技能,老貓在《文科生需要會寫程式嗎?》這篇文章裡也提到中文系的學生學會程式後,更容易去古文典籍裡面撈資料,所以我覺得讓所有人學寫程式是一個不錯的方向。

Coding 程式設計 圖、Coding 程式設計

但要怎麼對文組學生教程式設計呢?非資工科系的學生需要的應該是像《氣餒止步!該怎樣教文組的人寫程式?》這篇文章裡面提到以實務為主的程式教學。但是說真的,師資很難找,因為那是許多新聞界先行者嘗試許久之後才發現的實用路徑。

現在台灣有太多科系自己還不知道需要什麼樣的程式教育,祇能請外系教授從 Hello World 開始教,但這樣的教學方式讓學生完全不知道學完程式語言能做什麼?要怎麼應用在工作上?

在教程式語言之前,各科系可能要統計一下系友畢業後的出路,他們有哪些會耗費大量人工的工作是可以利用程式來取代的,再回推回來看看大學時期需要教什麼程式設計。

這些需求可能各個科系不同,但這才會是對文組學生真正有幫助的方式。

2018/07/08

1A2B 猜數字遊戲

我很喜歡 1A2B 這個遊戲,想要寫一個小程式讓電腦出題,平常無聊時就可以猜電腦出的數字。

1A2B 遊戲規則

1A2B 這個遊戲在國外叫 mastermind 或 cows and bulls,玩法是選個 4 位數的數字,這 4 位數中的數字不能重覆,比方說 1231 這樣是不行的,因為 1 重覆使用了。另外,我自己玩的時候最高位數不能為 0,比方說 0123 這樣是不行的,但我看其他人在玩的時候最高位數還是可以為 0。

假設我選的數字是 1234,對手猜 9801,那對手猜中 1 這個數字,但是位子不對,這樣的情況稱為 B。因為對手沒有猜中其他數字,所以總計起來就是 1 個 B 而已,所以我會回報對手 『0A1B』,告訴他:『你猜中了一個數字,但這數字不在正確的位子上。』

如果對手猜 1987,那麼 1 被它猜中了,而且位子也在正確的地方,這樣的情況稱為 A, 因為對手沒有猜中其他數字,所以總計起來就是 1 個 A 而已,所以我會回報 『1A0B』,告訴他:『你猜中了一個數字,而且這數字在正確的位子。』

下次對手猜 4201,4 這個數字猜中了,但位子不對,1 個 B;2 這個數字猜中了,而且位子也正確,1 個 A;1 這個數字猜中了,但位子不對,1 個 B,總計就是 1 個 A 還有 2 個 B,所以我回報給對手:『1A2B』,遊戲的目標就是要達到 4A -- 4 位數都猜中,而且數字都在正確的位置上。