reading self-descriptive fizzbuzz

67
超絶プログラマーへの道 @chiastolite 12101日月曜日

Upload: hiroyuki-morita

Post on 18-Jul-2015

597 views

Category:

Technology


0 download

TRANSCRIPT

超絶プログラマーへの道@chiastolite

12年10月1日月曜日

スゴイプログラマーに

なりたい12年10月1日月曜日

でもどうすれば?

12年10月1日月曜日

プログラム上達するためには?

12年10月1日月曜日

人のソースを読む

12年10月1日月曜日

でも

12年10月1日月曜日

まずは基礎を固めたい

12年10月1日月曜日

プログラマの基礎といえば?

12年10月1日月曜日

FizzBuzz問題

12年10月1日月曜日

なるほどわかりました

12年10月1日月曜日

これですね12年10月1日月曜日

ReadingSelf-descriptive

FizzBuzz@chiastolite

12年10月1日月曜日

• Rubyを用いた超絶技巧プログラミング

• http://www.slideshare.net/mametter/ruby-2012

•遠藤侑介さん(@mametter)作

• Ruby2.0 リリースマネージャ& コミッター

Self-descriptiveFizzBuzz

12年10月1日月曜日

demo

12年10月1日月曜日

さっそくソースを読んでみましょう

12年10月1日月曜日

eval(s=s= %w@proc{| n|z=32.ch r;k="[#{n +=1}]";u=":>==;<==?"[m=n**4%-15,m+13]||"#{$f=k}";d="Y.E.#{c=64.chr}*'')";$f||d<<z+k;t="eval(s=s=%w# {c+s=s[0, 334]}#$f# ";25.time s{|y|m=u. bytes.map {|v|t<<s; (0..[62-v ,2].min). map{|x|"i f0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr".to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<<z}.join.rstrip;y>23&&m[-9,9]=d;puts(m)}}[1]#pY.E.@*'')

12年10月1日月曜日

なるほど

12年10月1日月曜日

わからん12年10月1日月曜日

基礎謎知識

•自己複製

•フォント圧縮

•実行可能なアスキーアート

12年10月1日月曜日

遠藤さんのスライドを参照します

12年10月1日月曜日

12年10月1日月曜日

12年10月1日月曜日

12年10月1日月曜日

つまり

“自己複製”をするプログラムを”フォント圧縮”で得たビットパターン合わせて”実行可能なアスキーアート”として出力している

12年10月1日月曜日

何を言ってるのかわからねーと思うが(ry

12年10月1日月曜日

ソースコードに戻ります

12年10月1日月曜日

eval(s=s= %w@proc{| n|z=32.ch r;k="[#{n +=1}]";u=":>==;<==?"[m=n**4%-15,m+13]||"#{$f=k}";d="Y.E.#{c=64.chr}*'')";$f||d<<z+k;t="eval(s=s=%w# {c+s=s[0, 334]}#$f# ";25.time s{|y|m=u. bytes.map {|v|t<<s; (0..[62-v ,2].min). map{|x|"i f0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr".to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<<z}.join.rstrip;y>23&&m[-9,9]=d;puts(m)}}[1]#pY.E.@*'')

12年10月1日月曜日

読みやすくします

12年10月1日月曜日

eval(s=s=%w@proc{|n| z=32.chr; k="[#{n+=1}]"; u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'')

12年10月1日月曜日

とりあえず1行ずつ

読んでみる12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| z=32.chr; k="[#{n+=1}]"; u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'')

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; k="[#{n+=1}]"; u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(‘’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= ???? d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

• n=1ならm=-14

• u=’[1]’

• n=2ならm=-14

• u=’[2]’

• n=3ならm=-9

• u=’:>==’

• n=5ならm=-5

• u=’;<==?’

• n=15ならm=-0

• u=’>==;<==?’

u=":>==;<==?"[m=n**4%-15,m+13]||"#{$f=k}"

12年10月1日月曜日

FizzBuzz判定…だと…!?

12年10月1日月曜日

FizzBuzz判定…だと…!?

…なんであれで計算できるのか誰か教えてください

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')";

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s=%w@proc{|n|z=32.chr;k="[#{n+=1}]";u=":>==;<==?"[m=n**4%-15,m+13]||"#{$f=k}";d="Y.E.#{c=64.chr}*'')";$f||d<<z+k;t="eval(s=s=%w#{c+s=s[0,334]}#$f#";25.times{|y|m=u.bytes.map{|v|t<<s;(0..[62-v,2].min).map{|x|"if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr".to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<<z}.join.rstrip;y>23&&m[-9,9]=d;puts(m)}}[1]#pY.E.@*'')

s[0,334]

ここ

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| #<= ? "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

• u.bytes.map{|v| ... }

• u=’[1]’• u=’:>==;’ # fizz• u=’;<==?’ # buzz• u=’:>==;<==?’ # fizzbuzz

vに入る値

12年10月1日月曜日

• [“0”, "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?"].map{|v| v.bytes.to_a}.flatten

• [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]

12年10月1日月曜日

• [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63].map{|v| [62-v,2].min}

• [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, -1]

12年10月1日月曜日

?12年10月1日月曜日

12年10月1日月曜日

2 2 2 2 2 2 2 2 2 2 2 2 2 1 0 -1

12年10月1日月曜日

表示横幅の…だと…!?

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため) k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| #<= 出力文字列の幅 "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため)

k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| #<= 出力文字列の幅 "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z # <= ビットパターンから空白にするかソースにするか }.join.rstrip; y>23&&m[-9,9]=d; puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

!x+32+v*3-y/5*44

!n=2のとき

12年10月1日月曜日

182 183 184 182 183 184 182 183 184 182 183 184 182 183 184 138 139 140 138 139 140 138 139 140 138 139 140 138 139 140 94 95 96 94 95 96 94 95 96 94 95 96 94 95 96 50 51 52 50 51 52 50 51 52 50 51 52 50 51 52 6 7 8 6 7 8 6 7 8 6 7 8 6 7 8

12年10月1日月曜日

!"if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr".to_i(36)[x+32+v*3-y/5*44]

!n=2のとき12年10月1日月曜日

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

12年10月1日月曜日

"if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr".to_i(36)[x+32+v*3-y/5*44]<1? z*9:’*’*9

!n=2のとき12年10月1日月曜日

*************************************************************************************************************************************** ********* ********* ********* ********* ********************************************************************************************************************************************************* ********* ********* ********* ********* ***************************************************************************************************************************************

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため)

k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| #<= 出力文字列の幅 "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z # <= ビットパターンから空白にするかソースにするか }.join.rstrip; y>23&&m[-9,9]=d; # <= 最終行なら署名を入れる puts(m) }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

eval(s=s= #<= 自己複製用にソースをsに代入%w@proc{|n| # <= eval で実行する用の文字列配列 @~@ nには前回の数値 z=32.chr; # <= 半角スペース(通常のはjoinで消えるため)

k="[#{n+=1}]"; # <= nをカウントアップ + 次回用の文字列生成 u=":>==;<==?"[m=n**4% -15,m+13]||"#{$f=k}"; #<= FizzBuzzでした d="Y.E.#{c=64.chr}*'')"; #<= 署名(cは@)

$f||d<<z+k; # <= ‘Fizz’,‘Buzz’,‘FizzBuzz’の際は’[n]’を別表示するため t="eval(s=s=%w#{c+s=s[0,334]}#$f#"; #<= evalつけて’[n]‘とかつけて 25.times{|y| # <= 1行毎に表示 m=u.bytes.map{|v| <= 先頭の文字から表示 t<<s; # <= 出力が可変長なので余裕を見て追加 (0..[62-v,2].min).map{|x| #<= 出力文字列の幅 "if0zgl11p0zghuhku744d8hzeg41qtfx7xs7twflr"\ .to_i(36)[x+32+v*3-y/5*44]<1?z*9:t.slice!(0,9)}<< z # <= ビットパターンから空白にするかソースにするか }.join.rstrip; y>23&&m[-9,9]=d; # <= 最終行なら署名を入れる puts(m) # <= 1行毎に出力 }}[1]#pY.E.@*'') # <= * ‘’ は Array.join(’’)の シンタックスシュガー

12年10月1日月曜日

以上

12年10月1日月曜日

結論

12年10月1日月曜日

超絶プログラマーへの道は険しい

12年10月1日月曜日