ズンドコキヨシ・コードゴルフ
■平成から令和を跨ぐズンドコキヨシのせいだよwith Delphi
https://qiita.com/e99h2121/items/b67c03b3b53477e9847d
という記事をみて、最近コードゴルフやってないなあと思ってズンドコキヨシ・コードゴルフやってみたんだけど、そんなに短くできなかった。
インライン変数宣言ができるようになったし、割と短くできるんじゃない?と思ったのに。
##2021/02/22 追記2
DEKO さんのコメントにあるコードをパクって参考にして 122 Byte!
begin Randomize;var F:=1;repeat F:=F*128+Random(2);Write(Copy('ズンドコ',1and F*2+1,2))until F=1;Write('キ・ヨ・シ!')end.
begin
Randomize;
var F:=1;
repeat
F:=F*128+Random(2);
Write(Copy('ズンドコ',1and F*2+1,2))
until F=1;
Write('キ・ヨ・シ!')
end.
##2021/02/22 追記
DEKO さんの記事のコメントに 125 文字版が!
##2021/02/21 追記
130 文字のができたけど、概ね DEKO さんのアルゴリズムと同じ感じになってしまった。収斂進化?
begin Randomize;var Z:=['ドコ','ズン'];var F:=0;repeat F:=F*2and$1f+Random(2);Write(Z[1and F])until F=30;Write('キ・ヨ・シ!')end.
begin
Randomize;
var Z:=['ドコ','ズン'];
var F:=0;
repeat
F:=F*2and$1F+Random(2);
Write(Z[1and F])
until F=30;
Write('キ・ヨ・シ!')
end.
ここから下は前のもの
出来上がったコードは↓で、167文字
begin Randomize;var Z:='ズンズンズンズンドコ';var S:='';repeat S:='';repeat S:=S+Copy(Z,Random(2)*2+7,2)until Length(S)>9;Write(S)until S=Z;Writeln('キ・ヨ・シ!')end.
Randomize を無しにすると、156 文字
整形すると↓
begin
Randomize;
var Z := 'ズンズンズンズンドコ';
var S := '';
repeat
S := '';
repeat
S := S + Copy(Z, Random(2) * 2 + 7, 2)
until Length(S) > 9;
Write(S)
until S = Z;
Writeln('キ・ヨ・シ!')
end.
var 節で S:String
と書くより var S:=''
の方が短いけど2回 S:=''
が出てくるのを何とかしたかった。
実行結果は↓
令和の Delphi はインライン変数宣言宣言以外にも色々機能が増えた1んだけど、コードゴルフで短くしようと思うとインライン変数宣言以外の機能は出番が無かった。
無念。