Smileys Triangle
あなごる日記もマンネリ化してきた(って別に問題ないけど)ので、ここらで趣向を変えて、過去の endless 問題の解答を晒してみる。
あなごる初期の名問の一つ、Smileys Triangle 。
24B@vi
vi は、トップは pla さんで、22B だ。しかも、全言語通してトップ。私は、残念ながら、24B どまり。以下のよう。
i:^M:-^M:-)Ypwx3p^[bD31@"ZZ
Ypwx3p も入力してしまって、bD でマクロにしているところがみそだが、最初の3行の入力が無駄っぽい。
24B@GolfScript
こちらもトップは、23B だ。私の解は 1B 届かず。
': :-'32,{'))'*' :-)'\}/
あまりたいした解じゃないな。
38B@sed
sed は単独トップを取った(as of today)。比較的最近打ったゴルフ。
i: s/$/:-/ : p s/)\?$/&&)/ /)\{63\}/!b
括弧が63個に達するとループをブレークするあたりがミソか?
41B@Groovy
Groovy トップは、murky-satyr さん。私は、同率2位。
34.times{println":-"+"))"*it-~/\)..?|-$/}
これは、-~/\)..?|-$/ の部分が面白いと思う。
43B@JavaScript
JavaScriptは多くの人が 43B を出している。
for(i=t='';i<34;)print(t+=':-)'[i++]||'))')
ポイントは、':-)'[i++]||'))' だろう。index out of range になると、|| で '))' を出力する。
48B@awk
awk は最近ゴルフしていない。
END{for($0=": - )";i++<34;)print t=$i?t$i:t"))"}
アルゴリズムは JavaScript と同じ。これは単独トップを取っている(as of today)。
58B@C / 94B@C++
C/C++ も単独トップ(as of today)。
t;main(i){for(;puts(strcat(&t,"))^@-^@:"+14/i/i++%9))<66;);} #import<ios> #import<cstring> char i,t;main(){for(;puts(strcat(&t,"))^@-^@:"+14/++i/i%9))<66;);}
'^@' は、null 文字のこと。つまり、0 。
この解のポイントは、14/i/i++%9 かな。i が 1 からカウントアップするにつれ、
i=1 -> 5 i=2 -> 3 i=3 -> 1 i=4 -> 0 i=5 -> 0 : :
と変化する。
〜〜〜〜〜
今、ASIMO がテレビに出ている。新型が出たとか。腰がひけてるな。二足歩行ってよっぽど難しいんだろうな。