お題3 Smileys Triangle†
仕様†
出力例、まぁこんなかんじで
: :- :-) :-))) :-))))) :-))))))) :-))))))))) :-))))))))))) :-))))))))))))) :-))))))))))))))) :-))))))))))))))))) :-))))))))))))))))))) :-))))))))))))))))))))) :-))))))))))))))))))))))) :-))))))))))))))))))))))))) :-))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) :-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) :-)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
参考†
うぜぇ
あなーきーごるふによればCで63バイト、Rubyで39バイト、Pythonで41バイト
提出†
C†
- 07.12.20 Murachue, gcc4.1.2(@narita), 92bytes
main(i,j){puts(":");for(i=-1;i<64;i+=2){printf(":-");for(j=0;jまだ削れる予感
追記: 同上,91bytesmain(i,j){puts(":");for(i=-1;i<64;i+=2){printf(":-");for(j=i;j-->0;)printf(")");puts("");}}1バイト削った(for(j=...)のところ)
追記: 同上, 90bytesmain(i,j){for(i=-3;i<64;i+=2,j=i){printf(i+3?":-":":");while(j-->0)printf(")");puts("");}}察して
追記: 07.12.21(深夜) あと同じ 87bytesi,j;main(){for(;i<67;i+=2,j=i-3){printf(i?":-":":");while(j-->0)printf(")");puts("");}}もうねる
- 一緒にメッセしながら作ってます、再起とかforを1個へらせないかと思うのですがなかなか手ごわい byGonza
- 07.12.21 Zauberer gcc3.4.4(Cygwin)で確認 既出より長い99バイト
i;s="\n:-)";main(n){for(;n<66;n+=n<3?1:2){for(i=n;i-->0;write(1,s+(n-i>3?3:n-i),1));write(1,s,1);}}無駄にシステムコール使ってみました.
- 07.12.22 Zauberer gcc3.4.4(Cygwin)で確認 79バイト
i,j;main(){for(;i<67;i+=2){printf(i?"\n:-":":");for(j=i-3;j-->0;)printf(")");}}Murachue君のコードをダイエット.出力の最後は改行しなくて良いらしい.
追記:同上 77バイトi,j;main(){for(;i<67;i+=2){for(j=i-printf(i?"\n:-":":");j-->0;)printf(")");}}ダイエット第2部 返値有効活用篇.都合良く3が返ってくる.
追記:同上 75バイトi,j;main(){for(;i<67;i+=2)for(j=i-printf(i?"\n:-":":");j-->0;)printf(")");}贅肉を見落としてた.
- 07.12.28 Zauberer gcc3.4.4(Cygwin)で確認 75バイト
main(n,s){puts(":\n:-");for(strcpy(s,":-)");n++<33;strcat(s,"))"))puts(s);}大胆にメモリを破壊してみる.でもサイズが変わらないのが悲しい.
- 08.01.22 Zauberer gcc3.4.4(Cygwin)で確認 69バイト
s=2698554;main(n){for(puts(":\n:-");n++<33;strcat(&s,"))"))puts(&s);}2698554はリトルエンディアンの場合の定数.ビッグエンディアンなら976038144のはず.
ruby†
- 07.12.21 Zauberer Ruby1.8.6-mswin32で確認 59バイト
puts(':');33.times{|i|$><<':-';(i*2-1).times{$><<')'};puts}とりあえずは動くものを.
- 07.12.21 Zauberer Ruby1.8.6-mswin32で確認 45バイト
puts ":\n:-";1.step(63,2){|i|puts ':-'+')'*i}最初の2行を別に処理してみたら簡単に縮んだ.
- 07.12.22 Zauberer Ruby1.8.6-mswin32で確認 43バイト
puts":\n:-";1.step(63,2){|i|puts':-'+')'*i}スペースがなくてもパースエラーにならないのか...
- 07.12.22 Ryuhei ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]で確認 40バイト
ひみちゅ
あと1byte!!酔った頭にくるぜ
- 07.12.25 Zauberer Ruby1.8.6-mswin32で確認 41バイト
ひみちゅ
流行にならって隠しとく.
- 07.12.26 Zauberer Ruby1.8.6-mswin32で確認 40バイト
puts": :-" 32.times{|i|puts':-)'+'))'*i}なんとか並んだ.文字列リテラル中で改行って良いね.
GJ!全く同じだwあと1byte。どっちが先に見つけるかな? by ryuhei
python†
- 07.12.26 pachiki centos5.0 python2.4.3 59バイト
print ':' i=66 while i: print ':-'+')'*(65-i) i-=2
上に書いてある別の言語が参考になります
- 07.12.29 pachiki centos5.0 python2.4.3 46バイト
print':';i=-1 while i<64:print':-'+')'*i;i+=2
pythonでセミコロンが使えるとは思ってませんでした・・・
PHP†
- 07.12.29 Zauberer PHP4.4.4-8+etch4で確認 46バイト
: :-<?for($s=" :-)";$i++<32;$s.="))")echo$s;?>
最初の2行がいい感じ.
Java†
- 07.12.29 Zauberer Java1.6.0_03で確認 134バイト
class S{public static void main(String[]a){String s="\n:-)";for(System.out.print(":\n:-");s.length()<67;s+="))")System.out.print(s);}}Javaでショートコーディングはやめたほうが良いかも.
関数型言語たちの墓場†
08.1.19 kurohuku Gauche Scheme Interpreter0.8.12(Cygwin上) 92バイト
(print ":\n:-")(let a((n 0))(cond((< n 32)(print":-)"(make-string(* n 2)#\)))(a(+ n 1)))))
難解言語の吹き溜まり†
- 07.12.26 Zauberer BFI(Cygwin)で確認 163バイト
+++++[>++>++++++++++++>>++++++<<<<-]>>-->>++<<.<.>.>+++[<---->-]<-.>+++[<++++>-]<+>>>+<[<<<.>.>+++[<---->-]<-.---->>>[<<+<.>>>-]<<[>>+<<-]>>++<<++++[<++++>-]<+>>-]
anarchy golfに同じ163バイトがいるという素敵な偶然があったりする.でも,縮める気は皆無.
追記:同上 159バイト+++++[>++>>+++[<++++>>++<-]<<<-]>>-->>++<<.<.>.>+++[<---->-]<-.>+++[<++++>-]<+>>>+<[<<<.>.>+++[<---->-]<-.---->>>[<<+<.>>>-]<<[>>+<<-]>>++<<++++[<++++>-]<+>>-]
なんか簡単に縮まりそうだったので,やってみた.
- 07.12.29 Zauberer BFI(Cygwin)で確認 153バイト
+++++[>++>>+++[<++++>>++<-]<<<-]>>-->>++<<.<.>.-------------.+++++++++++++>>>+<[<<<.>.-------------.---->>>[<<+<.>>>-]<<[>>+<<-]>>++<<++++[<++++>-]<+>>-]
実はループさせないほうが短くなるらしい.
- 08.01.08 Zauberer 自前インタプリタ(Rubyで実装)で確認 99バイト
+++++[>+++[>++>>++++>+++<<<<-]>>++<<<-]>>>>--.<.>.>.<<<++[>.>.>.----.>[<..>>+<-]>[<+>-]<+<++++<<<-]
メモリの使い方を変えたら2桁になりました.
言語と呼べるかアヤシイもの†
- 08.01.11 Zauberer VIM 7.0.235で確認 25バイト
a: :- :-)^[qaYpA))^[q30@aZZ
^[はESCに読み替えてね.





