※ 引述《EEQQ102938 (EEQQ)》之銘言:
: 欸那個
: 現在正在填Dartmouth College的CS碩士申請表啦
: 哇靠勒
: 表單有一個選項說要上繳100行不限語言的程式碼
: ?_?
: 還要說明為什麼要選擇這100行
: 有沒有人可以推薦我怎麼生出100行潮到出水的程式啊?
既然不限程式語言,你又想寫出「潮到出水」,那來參考 smallpt:
https://www.kevinbeason.com/smallpt/
99 行 C++ 撰寫出來的光線追蹤 [1],運用 unbiased Monte Carlo path tracing
機制實作。你可透過 clang++ 或 g++ 來編譯該程式:
g++ -O3 -fopenmp smallpt.cpp -o smallpt
執行 smallpt 後,會得到名為 "image.ppm" 的檔案輸出,你可使用 ImageMagick [2]
來轉換檔案,例如:
convert image.ppm image.png
Matthias Moulin 進一步將上述 smallpt 用不同程式語言改寫:
https://github.com/matt77hias/smallpt
現有的程式語言包含 C, C++, C#, CoffeeScript, CUDA, Erlang, GLSL, Haskell,
Java, JavaScript, J#, Prolog, Python 2/3, Racket, TypeScript 等,並加上
多執行緒的實作,是很好的學習案例。
[1] https://en.wikipedia.org/wiki/Ray_tracing_(graphics)
[2] https://imagemagick.org/
: 用brainfuck寫是不是最機智的選擇
你可撰寫一套 Brainfuck Self Interpreter,例如:
https://github.com/kmyk/brainfuck-self-interpreter
交叉對照這篇報告:
https://arxiv.org/html/cs/0311032