コード最速伝説 顔文字:-D NAIST遠征編 - UTF-8.jp

Download Report

Transcript コード最速伝説 顔文字:-D NAIST遠征編 - UTF-8.jp

[イニシャル]
:‐
今日のあらすじ
ある日、広島にて…
このあたり、
顔文字っぽいので
顔文字系と呼んでます
http://www.sccs-jp.org/SCCS2010/resume/nishimoto.pdf
西本さん
(株式会社LAC 取締役)
Gumblarによる攻撃に関する講演
もっと顔文字っぽいの
できるんじゃね?
やりましょう!
…というお話をします
BATTLE 1 : Hill-Climbing
斜め上目指して走ります!
proceed obliquely upward!
BATTLE 1 : Hill-Climbing
Python
VS.
JavaScript
BATTLE 1 : Hill-Climbing
pypyencode
by TAKESAKO
サルでもわかる顔文字系プログラミング
Python の場合
`('-')<[]`[-~-~('_'>[])]+`\
'-'<[]`[-~('_'<[])]+`'-'<()`\
[-~('-'>()):-~-~('_'>[])]
■実行結果 >>
'saru'
記号だけで任意の整数を生成する方法
>>> -(''=='')
 -1
>>> --(''=='')

1
>>> -~(''=='')

2
>>> -~-~(''=='')

3
記号だけで ‘saru’ を生成する方法
>>> (''<>'')

False
>>> `(''<>'')`
 'False'
>>> `(''<>'')`[3]

's'
>>> `(''<>'')`[1]

'a'
記号だけで ‘saru’ を生成する方法
>>> (''=='')

True
>>> `(''=='')`
 'True'
>>> `(''=='')`[1:3]

'ru'
>>> 'sa'+'ru'
 'saru'
PyPyEncode 作ってみました
Python バージョンできた!
_ ∩
pypyencode!
( ゚∀゚)彡
⊂彡
誰でも西尾系プログラミングが可能に!
Python でインデントに悩む必要なし!
ワンライナーも思いのままに
西尾泰和
YATTA!
BATTLE 1 : Hill-Climbing
Python
VS.
JavaScript
BATTLE 1 : Hill-Climbing
aaencode
by HASEGAWA
゚ω゚ノ= /`m´)ノ ~┻━┻
//*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚
Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚
ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3)
+'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚
Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_')
[゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚
Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚
Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚
Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ
+'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚
Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚
Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+
(゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)
+(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚
ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚
Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚
Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚
ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+
(゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚
ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+
(゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (o^_^o)+ (゚
Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)
+(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+
((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
゚ω゚ノ= /`m´)ノ ~┻━┻
//*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚
Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚
ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3)
+'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚
Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_')
[゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚
Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚
Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚
Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ
+'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚
Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚
Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+
(゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)
+(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚
ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚
Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚
Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚
ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+
(゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚
ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+
(゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (o^_^o)+ (゚
Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)
+(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+
((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
aaencode
aaencode - How it works
゚ω゚ノ= /`m´)ノ ~┻━┻
//*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚
Д゚) =(゚Θ゚)= (o^_^o)/
(o^_^o);(゚Д゚)={゚Θ゚:
'_' ,゚ω゚ノ
: ((゚ω゚ノ==3)
+'_')
[゚Θ゚] ,゚ー゚
/正規表現/
[ "_" ]
3を代入
3-3
を代入
ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3)
= undefined
+'_') [c^_^o];(゚Д゚)
['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚
Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_')
[゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚
Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚
Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚
Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ
+'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚
Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚
Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+
(゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)
以下省略
Secret of aaencode
”ゆの in language” 対応
Yuno in Language
゚ω゚ノ= /`m´)ノ ~┻━┻
//*´∇`*/ ['_']; o=(゚ー゚)
=_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); X=_=3;
X / _ / X < "来週も見てくださいね!";
(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚
Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_')
[ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ
==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚)
['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚
==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+
(゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ
+'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚
Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+
((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚
Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (o^_^o))+
((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+
(o^_^o)+ (c^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚) .゚Д゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (゚ー゚))+ (゚
Д゚) .゚ω゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚Д゚) .゚Θ゚ノ+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+
(o^_^o)+ (c^_^o)+ (゚Д゚) .゚Θ゚ノ+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚Д゚) ['c']+ (o^_^o)+ (゚Д゚)[゚
ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚Д゚) ['c']+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (c^_^o)+ (゚Д゚) .゚ー゚ノ+ ((゚ー゚) +
(o^_^o))+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚
ε゚]+((o^_^o) +(o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((o^_^o) +(o^_^o))+
((゚ー゚) + (o^_^o))+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (c^_^o)+
(o^_^o)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (゚ー゚))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+
((゚ー゚) + (゚ー゚))+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (゚ー゚))+ (゚Д゚) .゚Θ゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+
((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚ー゚)+ (゚Д゚) [゚Θ゚]+ (゚Д゚)[゚
ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (゚
Θ゚))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+
(c^_^o)+ ((o^_^o) +(o^_^o))+ (゚Д゚) .゚ー゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) [゚Θ゚]+ (゚Д゚) [゚Θ゚]+ (c^_^o)+ (゚Θ゚)+ (゚
Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
aaencodeの使い道
 セキュリティコンテストの問題の一部に
 Hacker's dream (韓国)
http://www.powerofcommunity.net/pastcon_2010.html
 採用試験の問題に
 "Work with me at Mozilla! Solve the
puzzle"
http://www.blueskyonmars.com/2011/02/01/work-with-me-atmozilla-solve-the-puzzle/
BATTLE 2 : Downhill
斜め上から走ってきます!
proceed from
obliquely upward!
BATTLE 2 : Downhill
ハチロク
AA86
VS.
詳細不明
Unspecified
BATTLE 2 : Downhill
AA86 ハチロク
by HASEGAWA
下り最速 ハチロク
AA86 - 顔文字バイナリ
%@"%"@,~,%,!`_^[^_^]-;>`_^[^_^]%"!,^,:`_^[^_^]@{-`{-?:`_[^_^]_-``-``-@@`_^[^_^]-`~-``@$`_^[^_^]-``-``-@@`_^[^_^]-`~-``-@#`_^[^_^]-+~/~-?;`_^[^_^]%!~-;-,;`_^[^_^]-"$-@~-@``_^[^_^]{[-);-@:`_^[^_^]/*,%`_^[^_^]`_^[^_^]`_^[^_^]`_^[^_^]%@$-@;?;`_^[^_^]-/~-`&,#`_^[^_^]-`~-`{,*`_^[^_^]-@@$!`_^[^_^]-:$,[,<`_^[^_^]-!|-.),!`_^[^_^]-@{-@`/(`_^[^_^]`_^[^_^]`_^[^_^]`_^[^_^]-{!{.,.`_^[^_^]-~/-/``_^[^_^]%""-}@$"`_^[^_^]%@@!/,!`_^[^_^]-:*-=%`[[[[[[[[`^^^^^%+)@@^^^!;@@_!,((,.((-$+)@*+@!!@-,!"(+@@,$,!"($%&,&,&_&,"@"'%_&"',&$&-@*@$"
AA86 - 顔文字バイナリ
AA86 - 顔文字バイナリ
JavaScript製アセンブラ
顔文字+記号の8086バイナリを生成
ダウンロードはHTML5のFile API: Writer
じゃなくて data:application/octet-stream
AA86 - 顔文字バイナリ
 記号+顔文字だけで書く
 アルファベットはダメ [a-zA-Z]
[0-9]
 数字もだめ
 非アルファベットな文字もだめ
 使えるのは32種類の記号だけ
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
 16bit COM形式
 "MZ"、"ELF"のようなヘッダ不要
AA86 - 顔文字バイナリ
%@"
%"@
,~
,%
,!
`
_
^
[
^
_
^
]
25 40 22
25 22 40
2C 7E
2C 25
2C 21
60
5F
5E
5B
5E
5F
5B
5D
AND AX, 2240 AX == 0x003C
AND AX, 4022
SUB AL, 7e
SUB AL, 25
SUB AL, 21
レジスタ8個をPUSH
PUSHA
POP DI
7回POPを繰り返す
POP SI
POP BX
POP SI
POP DI
スタック上に
POP SI
実行コードを展開
POP BP
最後にスタック上にジャンプ
BATTLE 2 : Downhill
ハチロク
AA86
VS.
詳細不明
Brainfuck
BATTLE 2 : Downhill
Brainfuck
by TAKESAKO
マンデルブロ集合(Mandelbrot set)
マンデルブロ集合を計算して描画する
Brainf*ck プログラムはコレですが…
+++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[
>>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+
<<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>>
>+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>>
>>>>>[-]+<<<<<<++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<+++++++[-[->>>
>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[[-]>>>>>>[>>>>>
>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>
[>>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<
<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>+++++++++++++++[[
>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[
>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[
-<<+>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<
<<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<
[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>
>>>>[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+
<<<<<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>
>>>>>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<
マンデルブロ集合を計算して描画する
Brainf*ck プログラムを実行する86(ry
%@@%!!-^--}+-)%-~|`________-+%-;|-]{-{~`]]]]]]]])--{~-,~-=_-;~`^_^]^_^-}^-|!-}!_!`^_^]^_^-;`-!]-%!-(:`^_^]^_^--!-{;-%=-~/`^_^]^_^-|^-[$-}?-|#`^_^]^_^-+#--?-;#(^`^_^]^_^-|)-!:-!:-[|`^_^]^_^-!+-)=-(,-:#`^_^]^_^-@:-@[-/!--$`^_^]^_^-?!-)^-?;-~`^_^]^_^-({-![-!#-!!`^_^]^_^-$(-^{-]@-:;`^_^]^_^-.^-?(-_:-^,`^_^]^_^-}/-,;-].|,`^_^]^_^-@?--/-.--??`^_^]^_^-@|-+$-:^-;:`^_^]^_^-@=-}^-/!-`!`^_^]^_^-}}-}!-.(}!`^_^]^_^-/.-%,-#`-#~`^_^]^_^-,:-+[-?`-=[`^_^]^_^-=_-^_-@)-#!`^_^]^_^-%[-.:-!]!{`^_^]^_^-)/-`}-`.-~]`^_^]^_^-#?-.;-$[-@|`^_^]^_^-:?-+%-;_-,$`^_^]^_^-.!-}?-/$_#`^_^]^_^-}~-::-}?-~^`^_^]^_^-!.-~(-/:-{-`^_^]^_^-~|-}]-/[-,:`^_^]^_^-+.-:{-[|([`^_^]^_^-!/-,^-{+-{(`^_^]^_^-((-;+-+]--@`^_^]^_^-^=-##-:^-.;`^_^]^_^-:$-;;-$:({`^_^]^_^-[]-]/-;/-[}`^_^]^_^-}#-+~-#_-@=`^_^]^_^-_.-$^-)~-)~`^_^]^_^-.;-;$-`|_]`^_^]^_^--:--_-|)--{`^_^]^_^-^`-%/-/|-%}`^_^]^_^-.|-##-_:-,_`^_^]^_^-:(-(:-;{=]`^_^]^_^-??-|,-[--#,`^_^]^_^-.$-`,-/)-~{`^_^]^_^-[|-#~-$|-![`^_^]^_^-((-{[-${!:`^_^]^_^-:`-``-~~-~~`^_^]^_^[email protected],-#}-,#`^_^]^_^-+}-((-@+-+)`^_^]^_^-(?-^$-[|~[`^_^]^_^-`[-+$-;!-$$`^_^]^_^-/)-,)-%(---`^_^]^_^-=?-]{-];-(,`^_^]^_^-@~-;:-;|{{`^_^]^_^-};-)~-~!-~{`^_^]^_^??
+++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[
>>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+
<<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>>
>+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>>
(例)FizzBuzz プログラム
Brainf*ck をわかりやすくインデント
++++[->++++<]>+
[<++++++>>++++>++++++>+++++++>>++++>+++++++<<<<<<-]
<-->+++>++>+++>+++>+++++>-->--<<<<<<<
[->
-[>>>>>>>]>[<+++>.>.>..>>>>>>+<]<<<<-[>>>]>[<+++++>.>.<<<..>>>>>>+<]>>
+<[[-]<]>[
[-<+>>+<]>
>++++++++++<
[->->+<[>>]>[[-<+>]>>>+<]<<<<]
>>>>>[-<+<+>>]
++++++++[-<<++++++<++++++>>>]
<[<.>[-]]<[-]<.[-]<[-]<
<<[->+<]
]
++++++++++++++++++++++++++++++++.[-]<<<<<<<<<<
]
32bitでもっと高速化できないか?
char main[]="%[_-]%-```%`-_--!)-(-;`,!-}`+{-$~:;`________-#;:--{]-^-|`?{:_/~`]]]]]]]])/-|=_.-;{,=-|:![-}{,$`^_^]^_^-,?%~-#)~+-!#~/-;!/``^_^]^_^-?%$,-%;@/[`^~-!?=~`^_^]^_^-~,`;-=%.|--=.$-#!/$`^_^]^_^-]=@/-((|`-^).{-#}$|`^_^]^_^-^_(!-:=#;$@)}-?;^/`^_^]^_^-%)^{-!{`:-=,`:-]#/|`^_^]^_^-#=`:-=~]_-{!`.-:~{[`^_^]^_^-/)(`-}!!^|,~/-{!^~`^_^]^_^-%:=^-`{[_-{:;|-}%::`^_^]^_^-%)^+-[@_(-,:_(-~$^+`^_^]^_^-={);-)^^?!`{#-:){[`^_^]^_^-~~$#-/=`--?#/[-(%~[`^_^]^_^-~_[`-!!):-!$)?-!+.~`^_^]^_^-!}|[-|@({.%%{-@$!:`^_^]^_^-}`|#-/$#`-:@=/-!!#~`^_^]^_^-@+:=-,`.:-;;{#-^|~?`^_^]^_^-|$}]-^-^#`$#!-!#%=`^_^]^_^-|@//-_@}!-_:[{-_`_{`^_^]^_^-{~[^-+:|{-!%$[-/=};`^_^]^_^-@?/_-^@`}/:~`-=%~.`^_^]^_^-!(:}-;+:~-`|_,-#){;`^_^]^_^-}[,@-!)=~-~{;~-;{~_`^_^]^_^-)`/(-`/$.~^#}-,@!_`^_^]^_^-`=[+-~:!^-`{:.-`{](`^_^]^_^-%|%]-#,^(-|+)$-+([:`^_^]^_^-:/^{-|/@@%}!(-/@#)`^_^]^_^-?^${-/)(`-^-%$-;%~!`^_^]^_^-`:!;-$_%%--^{=-}{_;`^_^]^_^-@=!)-#)!.!:!@-![!~`^_^]^_^-~[-?-`[?}-~+^^-/.|#`^_^]^_^-+];~-),@#-$~|)-=`!-`^_^]^_^-{^_$-;_.`(+-_-};,,`^_^]^_^-[{+)-~(@`-`#~@-/-}?`^_^]^_^-?:|^-{^-~-,?;|-@%]``^_^]^_^-#@(|-_+|^}(~~-^}[~`^_^]^_^-(#:@-!})`-%[?.-%}?+`^_^]^_^-=^/;-##.|-%|`^-~~`!`^_^]^_^-%#,{-~![@`}@#-{+#^`^_^]^_^-_^~=-:-.{-{`@{-{!;[`^_^]^_^-/-]=-!:[;-).%:-)]:{`^_^]^_^-%,~{-(|}~~]/(-/:`!`^_^]^_^-$!.)-)](;-/`#.--`@=`^_^]^_^-@-;+-(}~=-:%~)-{`//`^_^]^_^-|_]/-|+|[|}:@-[?%/`^_^]^_^-!^[|-{{~/-:~;,-[`=-`^_^]^_^-(+;!-^]#:-{^${-(`)``^_^]^_^-`@,+-!:=/$]|,-%)[@`^_^]^_^-){[`-![/,-?)~_-=!~.`^_^]^_^-??/!-@~}.-%/$#-%~^+`^_^]^_^-%={[-`_^%}-|)-|=#!`^_^]^_^-/{,:-[_.+-.!}@-+;;=`^_^]^_^-$$?%-?%;;-/~.]--}$$`^_^]^_^-!@;.-/-#@~%|_-`){!`^_^]^_^-[.{(-|~^_-~~!{--|~:`^_^]^_^-]{^=-~!@[-?%@`-%.!=`^_^]^_^-;=)--+#]:!;:[-`:^{`^_^]^_^-]).(--;.{-+%%{-|=@``^_^]^_^-?%-/-/^.%-^~|`-^%{$`^_^]^_^-}:-^-`:]).^%}-)]}{`^_^]^_^????";
sub [edi], ebp で終端を自己書き換え
????  90 FF D4 C3
BATTLE 3 : over the limit
限界ギリギリに挑戦!
Run to the
utmount limit!
BATTLE 3 : over the limit
6文字対決
JSfuck
VS.
6文字対決
x86fuck
BATTLE 3 : over the limit
JSfuck
6文字対決
by HASEGAWA
6文字だけで任意のJSコードを実行可能
+ [ ]
! ( )
jsfuck 作ってみました
node.js でも6文字で。
'require'も記号化 - sugyan++
BATTLE 3 : over the limit
6文字対決
JSfuck
VS.
6文字対決
x86fuck
BATTLE 3 : over the limit
x86fuck
6文字対決
by TAKESAKO
6文字だけで任意のx86コードを実行可能
% - _
` [ )
言語仕様(6文字)Language specification
%
`
[
_
)
25
2D
60
5B
5F
29
and eax,XXXXXXXX
sub eax,XXXXXXXX
pushad
pop ebx
pop edi
sub [edi+0x5F],ebx (5F 5F)
x86 f*ck : JavaScript demo
JS と x86 は 6文字の命令で
“チューリング完全” である
JavaScript & x86 is Turing-complete,
by ONLY 6 characters instruction
Brainf*ck に勝った!
Brainf*ck = 8文字
【両者引き分け!】
JavaScript = 6文字
32bit x86 = 6文字
\So-Kai Hacks!/
顔文字系
プログラミング
まとめ
顔文字系プログラミングのすすめ
 ソースコードがいつも笑顔
 (^_^;
 癒される!
 (^_^;
 読みにくいコードで職を守る!
 (^_^;
 純粋に楽しい!
 (^_^;
 Fun of the programming
6文字プログラミングのススメ
6 characters programming
アセンブラなんて不要
直接キー入力で実行可能
バイナリエディタ不要
スクリーンエディタすら不要
本当のプログラマは
/dev/ttyで
直接機械語
を入力する
一生涯6文字プログラマー宣言
I’m a 6 char programmer
たとえ100個のキーが壊れても大丈夫!
I can keep programming forever !
ご静聴ありがとうございました
68