All pastes #136589 Raw Edit

Mine

public text v1 · immutable
#136589 ·published 2006-08-17 19:51 UTC
rendered paste body
(* http://www.spoj.pl/problems/LWAR/ *)

let rec invert = function
  | [] -> []
  | h :: q -> (not h) :: invert q

let rec f = function
  | true :: ((true :: _) as t) -> true :: f (invert t)
  | true :: false :: t -> true :: true :: f t
  | bl -> bl

let _ =
  let bool_list_of_string s =
    let n = String.length s in
    let rec aux i =
      if i < n then (s.[i] = '1') :: aux (i + 1)
      else [] in
    aux 0 in

  let print_bool_list l =
    List.iter (fun x -> print_char (if x then '1' else '0')) l;
    print_newline () in

  let n = read_int () in
  for i = 1 to n do
    let s = read_line () in
    print_bool_list (f (bool_list_of_string s))
  done