変形Fizz-Buzz問題
Posted feedbacks - OCaml
お題の意図がいまいち掴めてません。
1 2 3 4 5 6 7 8 9 10 11 12 | let fizzbuzz n =
let rec fb n i =
Printf.printf "%2d:%s\n" i
(match i with
_ when i mod 15 == 0 -> "FizzBuzz"
| _ when i mod 3 == 0 -> "Fizz"
| _ when i mod 5 == 0 -> "Buzz"
| _ -> "hoge");
if i < n then fb n (i+1)
in fb n 1
let _ = fizzbuzz 20
|
ifもelseもmod演算子も無しで書いてみました。
1 2 3 4 5 6 7 8 | let mes = [| "hoge"; "Fizz"; "Buzz"; "FizzBuzz" |]
let f acc i =
let c = acc land 3 in
let _ = Printf.printf "%02d:%s\n" i mes.(c) in
(acc lsr 2) lor (c lsl 28)
let _ = Array.fold_left f 810092048 (Array.init 20 (fun i->i+1))
|



raynstard
#3758()
Rating0/2=0.00
[ reply ]