※ 引述《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