More Related Content
PDF
PDF
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション PDF
PDF
AngularJSでデータビジュアライゼーションがしたい PPTX
Osakijs #01 「enchant.jsハンズオン資料」 PDF
PDF
PDF
Similar to Reading Self-descriptive FizzBuzz
PDF
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012) PDF
クックパッド春の超絶技巧パンまつり 超絶技巧プログラミング編 資料 PDF
PDF
PDF
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行 PPTX
PPTX
普通のコードがCodeGolfコードになるまで in Ruby PDF
PDF
PDF
PDF
新しくプログラミング言語・・・Rubyでやってみた ODP
PDF
PDF
PDF
PPTX
PPT
PHP使いから見たRuby(Talking about PHP & Ruby) PDF
KEY
PDF
I am learing the programming Reading Self-descriptive FizzBuzz
- 1.
- 2.
スゴイ
プログラマーに
なりたい
12年10月1日月曜日
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 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日月曜日
- 14.
- 15.
- 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日月曜日
- 17.
- 18.
- 19.
基礎謎知識
• 自己複製
• フォント圧縮
• 実行可能なアスキーアート
12年10月1日月曜日
- 20.
- 21.
- 22.
- 23.
- 24.
つまり
自己複製 をするプログラムを フォント
圧縮 で得たビットパターン合わせて
実行可能なアスキーアート として出力
している
12年10月1日月曜日
- 25.
- 26.
- 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.
- 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日月曜日
- 36.
- 37.
- 38.
- 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日月曜日
- 51.
- 52.
- 53.
2 2 22 2 2 2 2 2 2 2 2 2 1 0 -1
12年10月1日月曜日
- 54.
- 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日月曜日
- 57.
- 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日月曜日
- 65.
- 66.
- 67.