Hello Worldを難読化させたい。1回目
風邪こじらせて死んでました。
Rubyの事は絶対触れないと決めていたのですが、なかなか更新できなくなるので、この縛りは止めます。
今回はリハビリ&気晴らしです。
Hello World
以下を読み難くしたいです。
print 'Hello World'
適当にやってみた
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100].each{|i| print '%c'.send('%', i) }
- 文字を数字に直しただけです。
眠いので続きは明日。
追記:2010/04/05
c = "0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100" c.unpack("a8" * (c.size / 8)).each{|i| print '%c'.send('%', ('0b' + i).oct)}
難しい。。。いかに数字を見づらくするかを考えてみたけど微妙。。。
僕のレベルではコノ辺りで諦めたww
誰か見難くしてー><。
微妙な解説
c.unpack("a8" * (c.size / 8))
- c文字列から8文字ずつ切り出す
- aはASCII文字
- str.unpack("a#{n}" * (str.size / n))
- n文字ずつ切り出す
- str.unpack("a#{n}" * (str.size / n))
('0b' + i).oct
- 2進数を10進数に変換する
- octは接頭文字'0b'を付けない場合は8進数にしてくれる
- 接頭文字次第で他の進数にも出来る
'%c'.send('%', ('0b' + i).oct) #以下と同じ sprintf('%c', ('0b' + i).oct)
- Stringクラスの%メソッドに('0b' + i).octを引数として与える
- フォーマットして文字列を返してくれる
- 見やすい例
- '%c' % 97 #=> "a"