Created
August 15, 2011 14:12
-
-
Save tyuki39/1146830 to your computer and use it in GitHub Desktop.
FizzBuzz(Nパターン)
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
// http://d.hatena.ne.jp/fumokmm/20110815/1313405510の回答案 | |
// 入力データの配列 | |
def input_as_list = [7, "Hoge", 4, "Fizz", 2, "Buzz"] | |
assert (input_as_list.size()) % 2 == 0, "入力データ数が2の倍数になっていません。" | |
// 入力データをマップに変換 | |
def input_as_map = [:].withDefault{""} | |
(0..<(input_as_list.size()/2)).each { | |
assert input_as_list[it*2].class == Integer, "入力データの偶数番目には数値を与えて下さい。" | |
assert input_as_list[it*2+1].class == String, "入力データの奇数番目には文字列を与えて下さい。" | |
input_as_map[input_as_list[it*2]] = input_as_list[it*2+1] | |
} | |
assert (input_as_list.size()) / 2 == input_as_map.size(), "入力データの偶数番目の数値に一致しているものがあります。" | |
(1..100).each { number -> | |
println "${number} : " + input_as_map.findAll { number % it.key == 0 }.values().join() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
8行目から13行目は step と collectEntries を使って書いた方がスッキリして良い。
def input_as_map = (0..<input_as_list.size()).step(2).collectEntries {
assert input_as_list[it].class == Integer, "入力データの偶数番目には数値を与えて下さい。"
assert input_as_list[it+1].class == String, "入力データの奇数番目には文字列を与えて下さい。"
[input_as_list[it], input_as_list[it+1]]
}