發表文章

用APL產生六合彩組合

圖片
姑且用生成六合彩投注號碼做第一個例子,感覺應該比較有趣和生活化。 説穿了就是要從1至49“隨機”挑選6個數字,實在簡單到不行。這裡使用 NARS2000 直譯器,安裝過程就省略了,打開後,輸入  6?49 到唯一一個看似Notepad的視窗中: 之後按 Enter,結果將會在下一行顯示: 實再言簡意賅到不得了。  6?49 的意思就是從1至49中抽取6個不同的元素。在此,  ? 係一個 函數 ,其左右兩邊各自有數字 引數   6 和  49 。由於 ? 使用左右引數,這稱之爲 ? 函數的 雙價 用法。所返回的是有6個元素的 陣列 。 既然有雙價就勢必有 單價 吧?不錯, 單價 使用下, ? 返回 1至49内的一個數字 純量 : 關於 純量 與 陣列 的區別與用法,往後會再探討。 另外,將左引數換成49的話,所得就是1至49的隨機排列 (permutation) 了: 試想想,以上功能如果用 Java / C / Python 編寫的話要如何處理?

APL相關資源

關於APL的資料,大多以英文爲主而鮮有中文的。簡單的Google搜尋一下“APL 語言 site:tw”或者“APL 語言 site:hk”便知道中文資料有多貧乏。 直譯器 https://tryapl.org/ 網上APL直譯器,免除安裝的麻煩,有virtual keyboard可以無痛輸入APL符號 https://www.dyalog.com/ 我初次使用的APL直譯器,需要安裝附帶的輸入法用以輸入APL符號 http://www.nars2000.org/ 我現在主要使用的APL interpreter,無需另外安裝輸入法 Youtube 短片 https://www.youtube.com/watch?v=_DTpQ4Kk2wA 1975年英國皇家學院示範使用"teletype"遙距使用APL。現代的人大概難以想像,當年使用電腦,係需要用一部打字機,通過電話綫連接遠端伺服器傳送指令,伺服器傳回結果再由打字機列印出來...... https://www.youtube.com/watch?v=DmT80OseAGs Dyalog APL的John Scholes示範用Dyalog APL解決數獨題目 https://www.youtube.com/watch?v=a9xAKttWgP4 同樣來自John Scholes,使用Dyalog APL編寫經典電腦"遊戲"Game of Life 學習資源(入門級) https://www.dyalog.com/uploads/documents/MasteringDyalogAPL.pdf Dyalog APL的電子書,亦係我最初使用的教材,適合絕對初學者 http://microapl.com/APL/LearningAPLwithAPLX.pdf MicroAPL的教材,以其產品APLX爲基礎。不過MicroAPL已被Dyalog APL拼購,APLX雖然可供下載,但不會再有更新 https://aplwiki.com/wiki/Main_Page 開放的APL維基,可惜仍然只有英語內容,非常值得閱讀。其中關於APL 慣用語 的一頁更加值得玩味 學習資源(進階) http://www.so...