Bigger power of two
C
当初、log2() を用いて、58B でトップに立ったが、hinoe さんに 57B で抜かれた。色々と考えているうち、浮動小数点数の指数部が使えるのではと思いつき、さらに試行錯誤していたら、57B ができた。ちょっと感動だった。
ところで、その際、また、変なことに気づいた。例えば、
log2(5)<<2
は Syntax Error となるが、
atof("5")<<2
は Syntax Error とならない。つまり、コンパイラーは、log2() が double を返すことを知っている、ということ。なんでだろう?
vi
vi は、pla さんに完敗。公開された答えをみたら、recursive に式を実行し、"@0^A" で 2 の n 乗を作っている。すごい。recursive のパターンは、Hanoi でやったやつと同じだ。
Groovy
Groovy は、Long.highestOneBit() だ。Java は、結構機能が充実している。現在アクティブな Ascii decode や weekday names もその手の解答だ。
あと、murky-satyr さんに指摘されているが、文字列→数値変換は、"as ..."でできる。
'123'as int // 123 123.456as int // 123 '123.456'as int // error (int)123.456 // 123 (int)'2' // 50 -- ASCII code (int)'A' // 65 -- ASCII code (int)'123' // error