Mais conteúdo relacionado
Semelhante a Reading Self-descriptive FizzBuzz (6)
Reading Self-descriptive FizzBuzz
- 2. スゴイ
プログラマーに
なりたい
12年10月1日月曜日
- 10. なるほど
わかりました
12年10月1日月曜日
- 12. Reading
Self-descriptive
FizzBuzz
@chiastolite
12年10月1日月曜日
- 13. Self-descriptive
FizzBuzz
• Rubyを用いた超絶技巧プログラミング
• http://www.slideshare.net/
mametter/ruby-2012
• 遠藤侑介さん(@mametter)作
• Ruby2.0 リリースマネージャ& コミッター
12年10月1日月曜日
- 16. 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
f0zgl11p0
zghuhku744d8hzeg41qtfx7xs7t
wflr".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日月曜日
- 19. 基礎謎知識
• 自己複製
• フォント圧縮
• 実行可能なアスキーアート
12年10月1日月曜日
- 24. つまり
自己複製 をするプログラムを フォント
圧縮 で得たビットパターン合わせて
実行可能なアスキーアート として出力
している
12年10月1日月曜日
- 27. 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
f0zgl11p0
zghuhku744d8hzeg41qtfx7xs7t
wflr".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日月曜日
- 28. 読みやすく
します
12年10月1日月曜日
- 29. 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日月曜日
- 30. とりあえず
1行ずつ
読んでみる
12年10月1日月曜日
- 31. 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日月曜日
- 32. 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日月曜日
- 33. 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日月曜日
- 34. 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日月曜日
- 35. 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日月曜日
- 38. FizzBuzz判定…
だと…!?
…なんであれで計算できるのか誰か教えてください
12年10月1日月曜日
- 39. 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日月曜日
- 40. 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日月曜日
- 41. 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日月曜日
- 42. 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日月曜日
- 43. s[0,334]
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日月曜日
- 44. 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日月曜日
- 45. 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日月曜日
- 46. 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日月曜日
- 47. 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日月曜日
- 48. vに入る値
• u.bytes.map{¦v¦ ... }
• u= [1]
• u= :>==;’ # fizz
• u= ;<==?’ # buzz
• u= :>==;<==?’ # fizzbuzz
12年10月1日月曜日
- 49. • [ 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日月曜日
- 50. • [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日月曜日
- 53. 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0 -1
12年10月1日月曜日
- 55. 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日月曜日
- 56. 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日月曜日
- 58. 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日月曜日
- 59. !
"if0zgl11p0zghuhku744
d8hzeg41qtfx7xs7twflr
".to_i(36)
[x+32+v*3-y/5*44]
!n=2のとき
12年10月1日月曜日
- 60. 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日月曜日
- 61. "if0zgl11p0zghuhku744
d8hzeg41qtfx7xs7twflr
".to_i(36)
[x+32+v*3-y/5*44]<1
? z*9:’*’*9
!n=2のとき
12年10月1日月曜日
- 62. ***************************
***************************
***************************
***************************
***************************
*********
*********
*********
*********
*********
***************************
***************************
***************************
***************************
***************************
*********
*********
*********
*********
*********
***************************
***************************
***************************
***************************
***************************
12年10月1日月曜日
- 63. 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日月曜日
- 64. 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日月曜日