fork download
  1. let chunk list =
  2. let rec aux current acc = function
  3. | [] -> []
  4. | [x] -> (x :: current) :: acc
  5. | a :: (b :: _ as t) ->
  6. if a = b then aux (a :: current) acc t
  7. else aux [] ((a :: current) :: acc) t in
  8. List.rev (aux [] [] list);;
  9. let inspect to_s list = "[" ^ String.concat ";" (List.map to_s list) ^ "]";;
  10. let p to_s list = print_string (inspect to_s list);print_string "\n";;
  11. let roym list = List.map List.hd (chunk list);;
  12. let a = [1;1;2;2;3;3;3;1];;
  13. let pi = p string_of_int;;
  14. let () = pi a;;
  15. let () = pi (roym a);;
  16.  
Success #stdin #stdout 0s 16624KB
stdin
Standard input is empty
stdout
[1;1;2;2;3;3;3;1]
[1;2;3;1]