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 がテレビに出ている。新型が出たとか。腰がひけてるな。二足歩行ってよっぽど難しいんだろうな。