結果

問題 No.667 Mice's Luck(ネズミ達の運)
ユーザー ichibanshiboriichibanshibori
提出日時 2018-09-18 00:02:54
言語 OCaml
(5.1.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 718 bytes
コンパイル時間 449 ms
コンパイル使用メモリ 17,024 KB
最終ジャッジ日時 2024-11-14 20:37:59
合計ジャッジ時間 1,222 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
File "Main.ml", line 3, characters 2-13:
3 |   Stream.iter (fun x -> result := f x !result) st;
      ^^^^^^^^^^^
Error: Unbound module Stream

ソースコード

diff #

let stream_fold f init st =
  let result = ref init in
  Stream.iter (fun x -> result := f x !result) st;
  !result

let solve s =
  let len_s = String.length s in

  let cnt_maru =
    Stream.from (fun i -> if i >= len_s then None else Some(s.[i]))
    |> stream_fold (fun c cnt -> match c with | 'o' -> cnt + 1 | _ -> cnt) 0
  in

  let rec solve' idx rest_maru =
    if idx < len_s then (
      let rest_len = float_of_int @@ len_s - idx in
      Printf.printf "%.7f\n" @@ (float_of_int rest_maru) /. rest_len *. 100.;

      let rest_maru' = match s.[idx] with | 'o' -> rest_maru - 1 | _ -> rest_maru in
      solve' (idx + 1) rest_maru'
    )
  in
  solve' 0 cnt_maru

let () =
  let s = read_line () in
  solve s
0