Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
FizzBuzz(Nパターン)
// 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()
}
@tyuki39

This comment has been minimized.

Copy link
Owner Author

@tyuki39 tyuki39 commented Aug 15, 2011

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment