コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

超速‼︎世界のフィズバズ問題

超速ってなんだろう

超速ってどのくらいの速さなんでしょうね。僕は時速でいったら80キロぐらいな感じがします。まあ、明確な定義なんてないので人それぞれですね。人によってはサラマンダーよりははやいのかもしれませんね。さて、そんなわけで今夜もやってまいりました。あの大人気記事の第二弾となります。

第一弾
爆速‼︎ハローワールド - コミュ障だから明日が僕らをよんだって返事もろくにしなかった


まあ、大人気ってのは大嘘ですけどね。前回やっていたKuinの続きが出来たので、作りました。

そして、前回ガワでなく中身をいじるといったな。あれは嘘だ。


Kuinがはやいらしい ~ take 2

前回紹介した「Hello World」以外にも下のような特殊な挙動をする面白要素があるらしいです。そうか…、ならガワバッチの拡張をするしかないですね。

指定した.kn内に「q」の1文字だけ書かれていた場合は「q」を出力するQuineプログラム(自身のソースコードを出力するプログラム)になる。
指定した.kn内に「f」の1文字だけ書かれていた場合は「Fizz Buzz」プログラムになる。
指定した.kn内に「9」の1文字だけ書かれていた場合は童謡「99 Bottles of Beer」の歌詞を出力するプログラムになる。

というわけで、上のような機能があるらしいです。聞きなれない「Fizz Buzz」はこんなのです。

FizzBuzz
プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は「Fizz」(Bizz Buzzの場合は「Bizz」)、5で割り切れる場合は「Buzz」、両者で割り切れる場合(すなわち15で割り切れる場合)は「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。

プログラムの世界だと、このルールでコードが書けるかがプログラマの腕試しに使われるそうです。しかし、Kuinだとそんなコードを書く必要もありません。すごいね。


じゃあ早速前回の延長みたいな感じでコードを書いていきましょうかね。

@echo off
rem Quine
rem SET /P X=q<NUL > sample.kn
kuincl -i sample.kn -o sample.exe -e wnd
sample.exe

まずは"Quineプログラム(自身のソースコードを出力するプログラム"です。
f:id:andron:20171014172944p:plain
実行するとこんなんなります。ところで、前回は黒い画面でやってましたが、今回は黒くない画面で実行しています。このあたりの切り替えが簡単にできるのは良いですね。

@echo off
rem FizzBuzz
rem SET /P X=f<NUL > sample.kn
kuincl -i sample.kn -o sample.exe -e wnd
sample.exe

そしてFizzBuzzです。
f:id:andron:20171014174034p:plain
実行するとこんな感じです。ここまでコードを書いていないのになんか動かしている気になれるのはすごいね。


最後におまけで「99 Bottles of Beer」です。

@echo off
rem 99 Bottles of Beer
SET /P X="9"<NUL > sample.kn

kuincl -i sample.kn -o sample.exe -e wnd
sample.exe

f:id:andron:20171014173731p:plain
実行するとこんな感じです。

作ってて思ったけど、バッチファイルだとechoで強制的に改行されてしまうのね。その辺の修正が面倒だった。まあ、次回こそは中身の方を作っていきたいね。アップデートで面白挙動が追加されたらその限りではないがな。