一些比較罕見的程式語言
或者說是範式(paradigm)不同的程式語言
為了讓新人有些方向,會有入門的99題
代表的以及說最早的就是
Lisp-99、Prolog-99
都是早期比較偏人工智慧的程式語言
Lisp跟Prolog都是直譯式語言
至少Common Lisp跟Starwbarry Prolog是啦
雖然後來是有現代工具可以做成.exe
(簡單來說跟Python的狀況差不多
那跟Python狀況差不多的意思也就是
跟Perl差不多
幾乎都是以前Unix、類unix、各種版本的Linux系統
早期大型主機那種有終端機所使用的系統
底下的程式語言的普遍狀況啦
畢竟美國學術界發展電腦比較早
所以比較不會以個人電腦為主
不過我們又不是美國就是了)
所以也因此一般人不會把這兩個程式語言的結果給人使用
因為不清楚怎麼用
會比較傾向於開放原始碼
直接讓人複製貼上達到重現出同樣的程式效果這樣
或者是用個.py
(沒用過.py的話就想成.bat
用編輯器開啟能看到具體指令的那樣的檔案
原理就是點了那檔案之後
它會把檔案內容依序填入 命令提示字元 並執行
就跟程式設計競賽的檔案原理相同
只是程式設計競賽會多個串流操作
以Microsoft來說就是 會用 > 接自訂檔案名稱
代表本來要輸出在螢幕的內容,會寫在 自訂檔案內容裡面
然後用 < 輸入檔案名稱
用來執行參賽者的原始碼
把輸出的檔案內容
把輸出的檔案內容
跟考試方準備好的測試資料跟標準答案比對後
就可以判出是AC(accept)還是WA(wrong answer)
不過TLE 超時錯誤的話我就比較不清楚具體是用什麼指令了
那如果檔案本身沒加密,跟開放原始碼意思差不多
不過開放原始碼不一定代表是免費軟體
就像自由軟體不一定免費這樣
呀,這些詞也不是很重要
稍微看看即可)
那樣的檔案自動執行
因為在不編譯的狀況下也只能這麼做了
之後當然也出現了Haskell-99跟其它的
但常見的傳統語言因為程式語言範式不同
(可以想成程式語言類別不同)
所以相對而言Lisp、Prolog它們的入門99題
在傳統語言中是比較進階的題目
前幾題都固定是List
那Lisp整個語言都是List
Lisp的程式就在一堆()之內
Prolog比較基礎的是謂詞或者說是事實
印象中會是像是 Family(Andy,Bob)這樣之類的句子組成的
但我也不知道為什麼
Prolog 99題跟Lisp 99題內容看起來是一樣的
可能傳統Prolog入門
跟Starwberry Prolog的範例不太一樣
但在傳統程式語言裡面
以C語言來說
List有兩種以上的存法
一種是用陣列來表示,另一種是用指標(Linked List)
這就是為什麼說比較進階
所以傳統語言不知道哪年之後
(印象中還蠻晚的,好像網路比較開始流行之後才有這說法
或者說如果是Visual basic入門的
就沒有Hello World的說法)
開始流行從Hello World開始寫第一個C-like程式
不過第二個程式就比較沒有什麼固定、流行的說法了
有興趣的人可以花99天
或者是297天或者是495天接觸看看
題目如果懶得找
那就點這個吧↓
https://www.ic.unicamp.br/~meidanis/courses/mc336/problemas-lisp/L-99_Ninety-Nine_Lisp_Problems.html
我從來沒有一次全部做完過就是了
以後想到的話就稍微講一下
像第一題
取出最後一個List內容
在比較新的程式語言中
或者是舊程式語言比較新的規範中
大多有支持負索引的功能
也就是說可以 陣列[-1] 取出最後一個元素
陣列[-2] 取出倒數第二個元素這樣的功能
不過如果我們懷舊一點
這類程式還是要自己想辦法解決的
(老實說以傳統C語言來說
陣列的大小是自己分配的
所以取出最後一個元素沒什麼問題
直接指定 陣列[陣列元素數目-1]這樣就行了
不過在傳統程式語言中
題目應該會變成
取出最後一個非空元素的陣列這樣吧
當然比較正規的做法不是用陣列
是寫成Linked List)
嗯,都是陳年往事了
以現代的做法來說就是
拿個例題找類似ChatGPT的問
大概都能得到理想、不至於差太遠的答案
因為這些都是經典考古題了
題外話:
最近《星穹鐵道》比較悠閒玩
不強迫所有帳號解每日了
這個版本的主線全部解完之後
突然覺得有些慵懶
所以多出很多時間
是該注意下身體健康了
應該比較有機會創新坑跟把之前的坑填一填這樣