LoginSignup
3
0

More than 5 years have passed since last update.

[Perl] ズンドコでコードゴルフ

Last updated at Posted at 2018-07-12

ズンドコ

ズンドコって?

文字列を出力していき、「ズン」「ズン」「ズン」「ズン」「ドコ」という文字が出たら「キ・ヨ・シ!」と返すプログラム

コードゴルフって?

どれだけ目的のプログラムを短い行数で書けるかを競う

ズンドコしてみる

今回は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="";あたりを上手いことなんとかできないかを考えたが思い浮かばなかった

3
0
2

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
3
0