TSG第4回コードゴルフ大会

コードゴルフ大会も今回で4回目。私は頭のおかしい言語をやってたら1週間過ぎていました。

結局やったのはFugueという言語だけです。Pure Foldersというこれまた頭のおかしな言語もありましたが、入出力で手間取っている間にコンテスト終了。第5回で出会ったら絶対に〇す。

Fugueとは

ざっくり言うとmidiがプログラムになります。

Fugue(フーガ)はmidiファイルに音符を打ち込んで作るプログラミング言語で、Preludeという言語と実質等価です。

Preludeを書きます

はい。

                           v 0         v -      v +         v      #(1-)# (1-)v 0 v+      #
                          v #v  v #v #v #v #v #v -v #v #v #v #   ^      #0 v+  #     0 ^+  ^+  0 v+
                         v #v #v #v  v #v #v #v #v #v #v #v   v   #0 ^+       #  (1-)#(1-)   ^v     # ^-
                        v #v #v  v  v #v #v -v #v #v #v  v # # #v^                             #(1-)#(1-)^  0 v+
                       v  v #v #v #v #v #v -v #v #v #v #v # ^    #                                        ^v     # ^+   0 v+
6(1-)                 v #v #v #v #v #v  v #v #v #v #v  v #v    #                                         ^  #(1-)#(1-)^v     # ^-
  8+     v    #      v #v  v #v #v #v  v #v #v -v  v #v #  # #^ v                                                       #(1-)#(1-)^  0 v+
      ?^-  ^+ ?^-+?#  #  #   #  #  #  #  #  #  #  #  #      ^    #                                                                 ^v     # ^-
  2+ (1- 9(1-)#     )^ #^ #0^ -^ #^ #^ #^ #^ #^ +^ ^  #^ #  # # v v                                                                v #(1-)#(1-)^
                      ^ #^ # ^ #^ #^  ^ #^ #^ #^ #^ #^ #^ #^ ^ # # #    v                                                                       ^  0 v+
                       ^ #^ # ^ #^ #^  ^ #^ #^ #^ #^ #^ -^ #  ^          #                                                                       ^v     # ^+  
                        ^  ^ # ^ #^ #^ #^ #^ #^ #^  ^ #^ #^ #                                                                                   ^  #(1-)#(1-)^  0 v+
                         ^ #^   ^ #^ #^ #^ #^ #^ #^ #^ #^- ^ #                                                                                                ^v     # ^-                                                                                                           v         #
                          ^ #^ # ^ #^  ^ #^ #^ #^ #^  ^ #   ^ #                                                                                              ^  #(1-)#(1-)^  0 v+                                                #                                       v         # 1+ #^        8+ !
                           ^ #^ # ^ #^  ^ #^ #^ #^ #   ^ -   ^ #                                                                                                           ^v     # ^+                                           #                            v         # 1+ #^    55+-(55++0)#   8+  !
                            ^ #^ # ^     ^ #^ #^ #^     ^ #   ^ #                                                                                                         ^  #(1-)#(1-)^  0 v+                                   #                 v         # 1+ #^    55+-(55++0)#              8+   !
                             ^  ^ # ^ #   ^ #^ #^ #^ #   ^-    ^ #                                                                                                                      ^v     # ^-                              #      v         # 1+ #^    55+-(55++0)#                         8+    !
                                 ^ # ^ #   ^ #^  ^ #^           ^ #                                                                                                                    ^  #(1-)#(1-)^  0 v+                      #       1+  #^   55+-(55++0)#                                    8+     !
                                  ^ # ^ #   ^ #^  ^ #            ^-                                                                                                                                  ^v     # ^+                 #   1+55+-(55++0)#                                               8+      !
                                   ^   ^ #   ^ #   ^              ^ #                                                                                                                               ^  #(1-)#(1-)^  0 v+      0 1+ (1-                                                         )6(1-)
                                        ^     ^ #   ^ #            ^-                                                                                                                                             ^v     # ^-  (6-)               
                                               ^     ^                                                                                                                                                           ^  #(1-)#(1-)

Preludeはスタックを複数使って、先頭の値をスタック間でやり取りして何とかする言語です。細かい解説は最後のURLにそれとなく書いてるし、brainf∨ck並みに出来る処理が少ないので頑張る感じです。

MIDIに打ち込みます

Dominoを使って頑張ります。出来た楽譜がこんな感じ。

感想

頭おかしい。

細かいことは全部第4回コードゴルフ大会 WriteUp · hakatashi/esolang-battle Wiki · GitHubに書いたので、ここのコンテンツはただpdfと音楽を置きたかったの一言に集約されています。