まあ Erlang 囓っちゃった以上、流行りものにはとことん乗っかっとけ!!
ということで、とにかく一部巷界隈でとかく話題の FizzBuzz にチャレンジ。見事1位をゲット!!!
http://golf.shinh.org/p.rb?FizzBuzz#Erlang
……って2人中の1位って笑い話なんやけどね。
-module(f). -export([m/0]). m()->[io:format("~s~n",[if X rem 15<1->"FizzBuzz";X rem 3<1->"Fizz";X rem 5<1->"Buzz";1<2->integer_to_list(X)end])||X<-lists:seq(1,100)].
一番苦労したのは、anarchy golf側で動いてもらうようにするにはどう書けばいいか(苦笑)。
ソース読んだら、実は m/0 を呼ぶようになっていたので、-export([m/0]). でおk。
Erlang の投稿がないのは実はそれがわかってなかったから? ここでばらしちゃったら即1位陥落?(笑)
ちなみにFizzBuzz の頭が小文字で良かったなら20バイト以上縮むんやけどねえ。ざんねん!
-module(e). -export([m/0]). m()->[io:format("~p~n",[if X rem 15<1->fizzBuzz;X rem 3<1->fizz;X rem 5<1->buzz;1<2->X end])||X<-lists:seq(1,100)].
▼追記
今のメイン言語は ruby なつもり。で、Erlang でやっといて ruby ほったらかしはないやろ〜ということで一応チャレンジ。
うーん69バイトにしかならん……でも、そこそこ独自なアプローチができたと思うのでよしとするか。
1.upto(100){|x|puts [:FizzBuzz,x,0,0,0,0,:Fizz,0,0,0,:Buzz][x**8%15]}
最短コードを見てみたかったので、ちとぐぐってみた。?d ってーw
▼追記の追記
62バイト。この方向性ではこのへんが限界か〜。
1.upto(?d){|x|puts [:FizzBuzz,x,0,:Buzz,0,0,:Fizz][x**8%15%7]}
▼追記**3
60バイト。シンプルさに欠ける。微妙。
1.upto(?d){|x|puts [:Buzz,:Fizz,:FizzBuzz,x][3&70>>x**8%15]}