お題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
    

    まだ削れる予感
    追記: 同上,91bytes

    main(i,j){puts(":");for(i=-1;i<64;i+=2){printf(":-");for(j=i;j-->0;)printf(")");puts("");}}
    

    1バイト削った(for(j=...)のところ)
    追記: 同上, 90bytes

    main(i,j){for(i=-3;i<64;i+=2,j=i){printf(i+3?":-":":");while(j-->0)printf(")");puts("");}}
    

    察して
    追記: 07.12.21(深夜) あと同じ 87bytes

    i,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に読み替えてね.

  • HTML
  • PDF
RSS2.0 RSS1.0 Atom1.0