P-99 :(接近) 99 道 Prolog 程式練習題

“P-99″ , 99 道程式練習題,是 Prolog 學生所感到孰悉的一份題目。以下網址為一份備份。

http://www.ic.unicamp.br/~meidanis/courses/mc336/2009s2/prolog/problemas/

細看程式內容,深度可以困難到一般資訊科學學系的大學生讀到畢業之後,應該知道的幾種資料結構或演算法,包含有幾種分類:陣列、數論、敘述邏輯、樹論、圖論等等。

這份題目我大概做了三次。

第一次大約在 2009 年到 2011 年之間,盲目地寫到 P81 。

第二次約在 2015 年初之間,將 unit test 手法也一起寫進來。如本網址 https://github.com/YauHsien/p99/tree/master/src 。寫了 25 題,感覺非常難寫,不容易堅持下去。

現在正在寫第三次: https://github.com/YauHsien/work/blob/master/src/p99.prolog

Prolog 對我的意義,是早在學習 Erlang 之前,我已經經常在練習寫 Prolog 程式,因此對於遞迴與 pattern matching ,都算是比較孰悉的。而由此獲得的遞迴觀念,也比一般人更感到觀念清晰,切換到 C / C++ 語言上寫遞迴程式也沒什麼問題。

寫題目寫第三次,我覺得對於 Prolog 的語言特質,感到更清楚、細緻,並且與 Erlang 的觀念徹底劃分彼此。這次,有些早已忘記的基礎知識,包括數論的互質、 Prolog 的運算優先權,都重新翻閱一些資料來做複習。寫題目的速度也算平穩,一天只解大約 20 題,才方便核對自己經過一天之後,完成了那些思考過程。

今天最後所寫的 P50 ,產生 Huffman code ,因為一時心急,失去了邏輯感受,卻使用了以往寫程式工作的技巧來寫,本來一口氣寫了 100 行,卻難以測試,並且消耗了超過 8 小時的時間在檢查那些 legacy code 的問題。後來,等疲勞之後乍然清醒,將大半程式刪掉,補寫成近 50 行,則程式裡的概念操作得比較清晰。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Prolog, Uncategorized。將永久鏈結加入書籤。