Created
December 13, 2016 01:40
-
-
Save JunichiIto/324653160ea6278a19ce61fbdb611921 to your computer and use it in GitHub Desktop.
Rubyで書く変なFizzBuzz (Strange FizzBuzz function in Ruby)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fizz_buzz = -> (n) do | |
f = -> (cond, ans, nxt, n) { n % cond == 0 ? ans : nxt.(n) }.curry | |
patterns = [[n, n.to_s], [5, 'Buzz'], [3, 'Fizz'], [15, 'Fizz Buzz']] | |
patterns.inject(nil) { |nxt, (cond, ans)| f.(cond, ans, nxt) }.(n) | |
end | |
(1..20).map(&fizz_buzz) | |
=begin | |
[ | |
[ 0] "1", | |
[ 1] "2", | |
[ 2] "Fizz", | |
[ 3] "4", | |
[ 4] "Buzz", | |
[ 5] "Fizz", | |
[ 6] "7", | |
[ 7] "8", | |
[ 8] "Fizz", | |
[ 9] "Buzz", | |
[10] "11", | |
[11] "Fizz", | |
[12] "13", | |
[13] "14", | |
[14] "Fizz Buzz", | |
[15] "16", | |
[16] "17", | |
[17] "Fizz", | |
[18] "19", | |
[19] "Buzz" | |
] | |
=end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
関数合成使いたい! LiveScriptうらやましい。。
もう1個書いてみました。
ちょっとだけ関数型勉強したいと思って [翻訳] Elixirで書く関数型FizzBuzz - Qiita を読んでRubyにしてみた感じです。