ズンドコ
ズンドコって?
文字列を出力していき、「ズン」「ズン」「ズン」「ズン」「ドコ」という文字が出たら「キ・ヨ・シ!」と返すプログラム
コードゴルフって?
どれだけ目的のプログラムを短い行数で書けるかを競う
ズンドコしてみる
今回はPerlを使いコードゴルフをしていく
基本的には改行も削るが、今回は見やすくするために残す
最初のコード
do
{
$text = "";
$text .= int rand 2 for 1..5;
$tmp = $text;
$text =~s/0/ズン/g;
$text =~s/1/ドコ/g;
print $text."\n";
}
while($tmp ne"00001");
print "キ・ヨ・シ!";
とりあえず目的の動作を完璧に実行するために、文字数は気にせず作成
改善できそうな点
- 変数名が長い
- printが長い
- $textの呼び出しが多い
- 条件文の見直しができないか
とりあえずこのあたりを考えながら書き直してみる
二回目のコード
for(;$t ne"ズン"x4 ."ドコ";print"$t\n")
{
$t="";$t.=rand 2<1?"ズン":"ドコ"for 1..5
}
print"キ・ヨ・シ!"
145->86(空白を含む)
31(0b11111)までを乱数で生成して、それを2進数0埋めにしてそれを元に配列から~とかも試したがこれが一番短そう
$t="";あたりを上手いことなんとかできないかを考えたが思い浮かばなかった