(*****************Códigos de Gray *****************)
(******http://en.wikipedia.org/wiki/Gray_code******)
(**  Método  "reflex and prefix"   **)
(** gray n = a lista ordenada dos códigos de gray de tamanho n (de tam. 2^n)**)

open List
    
let n = read_int () ;;

let add_one st = "1"^st
let add_zero st = "0"^st
                  
let rec gray_aux n acc = 
  if n <= 0 then acc
  else  gray_aux (n-1) ((map add_zero acc)@(map add_one (rev acc)))
      
let gray n =
  if n <0 then failwith "negative argument" else gray_aux n [""]
      
let () = iter print_endline (gray n)
    

This document was generated using caml2html