Skip to content

Instantly share code, notes, and snippets.

@tyuki39
Created August 15, 2011 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tyuki39/1146830 to your computer and use it in GitHub Desktop.
Save tyuki39/1146830 to your computer and use it in GitHub Desktop.
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
Copy link
Author

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