以下のソースコードがO言語のHello, Worldです。
"Hello, World!"o
O言語はコードゴルフのために作られた難解プログラミング言語で、いわゆるスタックマシンです。
Hello, World!のソースコードの最後にoという一文字がありますが、これはtypoではありません。
最初の "Hello, World!" という部分で Hello, World!という文字列をスタックに詰み、それを o で画面に出力しています。
なお、プログラムの最後にスタックに積まれているものを全て出力するため、 o は必要なく、これでも動作します。
"Hello, World!"
また、Readmeによると、 H,;]* で入力値の階乗を求められるようですが、公式ドキュメントに載っていない記号が登場するため、解読が難しいです。
と思ったら、こちらを見るとコマンドのリファレンスがあるようなので、これを見ながら解読していきます。
まずは、H は [Q のマクロなので、このようになります。
[Q,;]*
そして、Qはユーザーからの入力を受け取り、数値なら数値型として、そうでないなら文字列型としてスタックにプッシュするコマンドです。
そのため、例えば 5 を入力した場合は [5,;]* と等価になります。
そして、5, という部分で、0 1 2 3 4 5 という値たちがスタックにpushされて、 ; でトップの要素がpopされるので、[1, 2, 3, 4, 5] という5つの要素からなる配列1つがスタックに残ります。
最後に * を配列に作用させると、配列内の全ての要素の積を計算するため、階乗が計算されます。
また、フィボナッチ数列を計算するプログラムはこちらのものですが、疲れたのでどなたか解読できたらコメント欄でお教えください。
0J;1Kpj{K:VJ+:KpV:J;}d