LoginSignup
4
0

More than 3 years have passed since last update.

[Delphi][ネタ]ズンドコキヨシ・コードゴルフ

Last updated at Posted at 2021-02-20

ズンドコキヨシ・コードゴルフ

■平成から令和を跨ぐズンドコキヨシのせいだよwith Delphi
https://qiita.com/e99h2121/items/b67c03b3b53477e9847d

という記事をみて、最近コードゴルフやってないなあと思ってズンドコキヨシ・コードゴルフやってみたんだけど、そんなに短くできなかった。
インライン変数宣言ができるようになったし、割と短くできるんじゃない?と思ったのに。

2021/02/22 追記2

DEKO さんのコメントにあるコードをパクって参考にして 122 Byte!

1行
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 さんのアルゴリズムと同じ感じになってしまった。収斂進化?

1行
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:='' が出てくるのを何とかしたかった。

実行結果は↓

image.png

令和の Delphi はインライン変数宣言宣言以外にも色々機能が増えた1んだけど、コードゴルフで短くしようと思うとインライン変数宣言以外の機能は出番が無かった。
無念。

4
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0