Hatena::ブログ(Diary)

Mi manca qualche giovedi`? このページをアンテナに追加 RSSフィード Twitter

2007-05-11 ErlangでFizzBuzz

ErlangでFizzBuzz

まあ 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]}

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/n_shuyo/20070511/fizzbuzz