Submission #1112588


Source Code Expand

type token = Int of int | BinOp of char
type exp = EInt of int | EBinOp of char * exp * exp

let array_of_string s =
  Array.init (String.length s) (fun i -> s.[i])

let string_of_array a =
  String.init (Array.length a) (fun i -> a.(i))

let denote_rpn int binop tokens =
  List.hd
    (List.fold_left (fun stack token ->
      match stack, token with
      | _, Int n -> int n :: stack
      | n :: m :: stack, BinOp op -> binop op n m :: stack) [] tokens)

let rec to_queued_rpn = function
  | [] -> []
  | es ->
      to_queued_rpn (List.concat (List.map (function
        | EInt n -> []
        | EBinOp (_, e1, e2) -> [e1; e2]) es))
      @ List.map (function
        | EInt n -> Int n
        | EBinOp (op, _, _) -> BinOp op) es
let to_queued_rpn e = to_queued_rpn [e]

let () =
  read_line ()
  |> array_of_string
  |> Array.to_list
  |> List.map (function
      | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c -> Int (int_of_char c - int_of_char '0')
      | ('+' | '-' | '*') as c -> BinOp c)
  |> denote_rpn (fun n -> EInt n) (fun op e1 e2 -> EBinOp (op, e1, e2))
  |> to_queued_rpn
  |> List.map (function
      | Int n -> char_of_int (n + int_of_char '0')
      | BinOp c -> c)
  |> Array.of_list
  |> string_of_array
  |> print_endline

Submission Info

Submission Time
Task F - 逆ポーランド記法
User fetburner
Language OCaml (4.02.3)
Score 200
Code Size 1309 Byte
Status AC
Exec Time 1 ms
Memory 2560 KB

Compile Error

File "./Main.ml", line 13, characters 6-125:
Warning 8: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
([], BinOp _)
File "./Main.ml", line 32, characters 14-182:
Warning 8: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
'a'

Judge Result

Set Name All
Score / Max Score 200 / 200
Status
AC × 96
Set Name Test Cases
All 00_sample_01.txt, 00_sample_02.txt, 10_random_all_01.txt, 10_random_all_02.txt, 10_random_all_03.txt, 10_random_all_04.txt, 10_random_all_05.txt, 10_random_all_06.txt, 10_random_all_07.txt, 10_random_all_08.txt, 10_random_all_09.txt, 10_random_all_10.txt, 10_random_all_11.txt, 10_random_all_12.txt, 10_random_all_13.txt, 10_random_all_14.txt, 10_random_all_15.txt, 10_random_all_16.txt, 10_random_all_17.txt, 10_random_all_18.txt, 10_random_all_19.txt, 10_random_all_20.txt, 10_random_all_21.txt, 10_random_all_22.txt, 10_random_all_23.txt, 10_random_all_24.txt, 10_random_all_25.txt, 10_random_all_26.txt, 10_random_all_27.txt, 10_random_all_28.txt, 10_random_all_29.txt, 10_random_all_30.txt, 10_random_all_31.txt, 10_random_all_32.txt, 10_random_all_33.txt, 10_random_all_34.txt, 10_random_all_35.txt, 10_random_all_36.txt, 10_random_all_37.txt, 10_random_all_38.txt, 10_random_all_39.txt, 10_random_all_40.txt, 10_random_all_41.txt, 10_random_all_42.txt, 10_random_all_43.txt, 10_random_all_44.txt, 10_random_all_45.txt, 10_random_all_46.txt, 10_random_all_47.txt, 10_random_all_48.txt, 10_random_all_49.txt, 10_random_all_50.txt, 22_small_51.txt, 22_small_52.txt, 22_small_53.txt, 22_small_54.txt, 22_small_55.txt, 22_small_56.txt, 22_small_57.txt, 22_small_58.txt, 22_small_59.txt, 22_small_60.txt, 22_small_61.txt, 22_small_62.txt, 22_small_63.txt, 22_small_64.txt, 22_small_65.txt, 22_small_66.txt, 22_small_67.txt, 22_small_68.txt, 22_small_69.txt, 22_small_70.txt, 33_alternation_71.txt, 33_alternation_72.txt, 33_alternation_73.txt, 33_alternation_74.txt, 33_alternation_75.txt, 33_alternation_76.txt, 33_alternation_77.txt, 33_alternation_78.txt, 33_alternation_79.txt, 33_alternation_80.txt, 34_oneside_81.txt, 34_oneside_82.txt, 34_oneside_83.txt, 34_oneside_84.txt, 34_oneside_85.txt, 34_oneside_86.txt, 34_oneside_87.txt, 34_oneside_88.txt, 34_oneside_89.txt, 34_oneside_90.txt, 44_mul_91.txt, 44_mul_92.txt, 44_mul_93.txt, 44_mul_94.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 384 KB
00_sample_02.txt AC 1 ms 384 KB
10_random_all_01.txt AC 1 ms 384 KB
10_random_all_02.txt AC 1 ms 384 KB
10_random_all_03.txt AC 1 ms 384 KB
10_random_all_04.txt AC 1 ms 384 KB
10_random_all_05.txt AC 1 ms 384 KB
10_random_all_06.txt AC 1 ms 384 KB
10_random_all_07.txt AC 1 ms 384 KB
10_random_all_08.txt AC 1 ms 384 KB
10_random_all_09.txt AC 1 ms 384 KB
10_random_all_10.txt AC 1 ms 384 KB
10_random_all_11.txt AC 1 ms 384 KB
10_random_all_12.txt AC 1 ms 384 KB
10_random_all_13.txt AC 1 ms 384 KB
10_random_all_14.txt AC 1 ms 384 KB
10_random_all_15.txt AC 1 ms 384 KB
10_random_all_16.txt AC 1 ms 384 KB
10_random_all_17.txt AC 1 ms 384 KB
10_random_all_18.txt AC 1 ms 384 KB
10_random_all_19.txt AC 1 ms 384 KB
10_random_all_20.txt AC 1 ms 384 KB
10_random_all_21.txt AC 1 ms 384 KB
10_random_all_22.txt AC 1 ms 384 KB
10_random_all_23.txt AC 1 ms 384 KB
10_random_all_24.txt AC 1 ms 384 KB
10_random_all_25.txt AC 1 ms 384 KB
10_random_all_26.txt AC 1 ms 384 KB
10_random_all_27.txt AC 1 ms 384 KB
10_random_all_28.txt AC 1 ms 384 KB
10_random_all_29.txt AC 1 ms 384 KB
10_random_all_30.txt AC 1 ms 384 KB
10_random_all_31.txt AC 1 ms 384 KB
10_random_all_32.txt AC 1 ms 384 KB
10_random_all_33.txt AC 1 ms 384 KB
10_random_all_34.txt AC 1 ms 384 KB
10_random_all_35.txt AC 1 ms 384 KB
10_random_all_36.txt AC 1 ms 384 KB
10_random_all_37.txt AC 1 ms 384 KB
10_random_all_38.txt AC 1 ms 384 KB
10_random_all_39.txt AC 1 ms 384 KB
10_random_all_40.txt AC 1 ms 384 KB
10_random_all_41.txt AC 1 ms 384 KB
10_random_all_42.txt AC 1 ms 384 KB
10_random_all_43.txt AC 1 ms 384 KB
10_random_all_44.txt AC 1 ms 384 KB
10_random_all_45.txt AC 1 ms 384 KB
10_random_all_46.txt AC 1 ms 384 KB
10_random_all_47.txt AC 1 ms 384 KB
10_random_all_48.txt AC 1 ms 384 KB
10_random_all_49.txt AC 1 ms 384 KB
10_random_all_50.txt AC 1 ms 512 KB
22_small_51.txt AC 1 ms 384 KB
22_small_52.txt AC 1 ms 384 KB
22_small_53.txt AC 1 ms 384 KB
22_small_54.txt AC 1 ms 384 KB
22_small_55.txt AC 1 ms 384 KB
22_small_56.txt AC 1 ms 384 KB
22_small_57.txt AC 1 ms 384 KB
22_small_58.txt AC 1 ms 384 KB
22_small_59.txt AC 1 ms 384 KB
22_small_60.txt AC 1 ms 384 KB
22_small_61.txt AC 1 ms 384 KB
22_small_62.txt AC 1 ms 384 KB
22_small_63.txt AC 1 ms 384 KB
22_small_64.txt AC 1 ms 384 KB
22_small_65.txt AC 1 ms 384 KB
22_small_66.txt AC 1 ms 384 KB
22_small_67.txt AC 1 ms 384 KB
22_small_68.txt AC 1 ms 384 KB
22_small_69.txt AC 1 ms 384 KB
22_small_70.txt AC 1 ms 384 KB
33_alternation_71.txt AC 1 ms 512 KB
33_alternation_72.txt AC 1 ms 512 KB
33_alternation_73.txt AC 1 ms 512 KB
33_alternation_74.txt AC 1 ms 512 KB
33_alternation_75.txt AC 1 ms 512 KB
33_alternation_76.txt AC 1 ms 512 KB
33_alternation_77.txt AC 1 ms 512 KB
33_alternation_78.txt AC 1 ms 512 KB
33_alternation_79.txt AC 1 ms 512 KB
33_alternation_80.txt AC 1 ms 512 KB
34_oneside_81.txt AC 1 ms 512 KB
34_oneside_82.txt AC 1 ms 512 KB
34_oneside_83.txt AC 1 ms 512 KB
34_oneside_84.txt AC 1 ms 512 KB
34_oneside_85.txt AC 1 ms 512 KB
34_oneside_86.txt AC 1 ms 512 KB
34_oneside_87.txt AC 1 ms 512 KB
34_oneside_88.txt AC 1 ms 512 KB
34_oneside_89.txt AC 1 ms 512 KB
34_oneside_90.txt AC 1 ms 512 KB
44_mul_91.txt AC 1 ms 512 KB
44_mul_92.txt AC 1 ms 512 KB
44_mul_93.txt AC 1 ms 2560 KB
44_mul_94.txt AC 1 ms 512 KB