Buzzになる数字をn個挙げる
流出云々で「パスワード」がバズってたので、「バズワード」を連想したわけです。
そこから昨日FizzBuzzを書いたりしたものだから、こうなります。
で。FizzBuzzはあるということで……
これで。
*Main> filter (\a -> a == "Buzz") $ map fizzBuzz [1..100] ["Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz","Buzz"]
……。
実行前に気づきましたけどね!
タプルを返すようにする。
map (\a -> (a, fizzBuzz a)) [1..100]
二番目の値でフィルタリング
filter (\(a, b) -> b == "Buzz") $ map (\a -> (a, fizzBuzz a)) [1..100]
一番目の値のリストにする。
map fst $ filter (\(a, b) -> b == "Buzz") $ map (\a -> (a, fizzBuzz a)) [1..100]
なんか冗長…
Buzzになる数字をn個挙げる、と言うことで10個。
take 10 $ map fst $ filter (\(a, b) -> b == "Buzz") $ map (\a -> (a, fizzBuzz a)) [1..]
できた。きっと明後日には「これは無いわー」とか言ってると思う。
あ、Haskellに手を出してみました。まだよくわかってません。
2012/05/10 0:45 追記
再帰でいけるだろー、と悶々とした結果出たもの。
*Main> let x n ns = if (fizzBuzz n) == "Buzz" then n : x (n + 1) ns ++ ns else x (n + 1) ns *Main> take 10 $ x 1 [] [5,10,20,25,35,40,50,55,65,70]
かっこわるい……。
2012/05/10 01:16 追記
……あ。