Skip to main content

all_shift

let one_shift(alist) =
  (List.tl alist)@[List.hd alist];;

let rec all_shifts_aux(alist,n) =
  if n = 0 then []
  else [one_shift(alist)]::all_shifts_aux(one_shift(alist), n-1);;

let all_shift(alist) =
  all_shifts_aux(one_shift(alist), (List.length alist)-1);;

let all_case(alist) =
  [alist]::all_shift(alist);;

let rec try_all_sqA_aux(alist, n) =
  if(sqA(alist)) then true
  else if (n = 0) then false
  else try_all_sqA_aux(one_shift(alist),n-1);;

let try_all_sqA(alist) =
  try_all_sqA_aux(alist, List.length alist);;

let rec try_all_eqtriA_aux(alist, n) =
  if(eqtriA(alist)) then true
  else if (n = 0) then false
  else try_all_eqtriA_aux(one_shift(alist),n-1);;

let try_all_eqtriA(alist) =
  try_all_eqtriA_aux(alist, List.length alist);;