let trifftzweimalzu f x y z = ((f x) && (f y) && not (f z)) || ((f x) && not (f y) && (f z)) || (not (f x) && (f y) && (f z)) ;; let rec wueste (n,m) = if n=0 then if m mod 3 = 0 then true else false else if m=0 then if n mod 3 = 0 then true else false else (wueste (n-1,m) && wueste (n-1,m-1) && wueste (n,m-1)) || (berg (n-1,m) && berg (n-1,m-1) && berg (n,m-1)) || (see (n-1,m) && see (n-1,m-1) && see (n,m-1)) and berg (n,m) = if n=0 then if m mod 3 = 2 then true else false else if m=0 then if n mod 3 = 1 then true else false else (wueste (n-1,m) && berg (n-1,m-1) && see (n,m-1)) || (wueste (n-1,m) && see (n-1,m-1) && berg (n,m-1)) || (berg (n-1,m) && wueste (n-1,m-1) && see (n,m-1)) || (berg (n-1,m) && see (n-1,m-1) && wueste (n,m-1)) || (see (n-1,m) && wueste (n-1,m-1) && berg (n,m-1)) || (see (n-1,m) && berg (n-1,m-1) && wueste (n,m-1)) and see (n,m) = if n=0 then if m mod 3 = 1 then true else false else if m=0 then if n mod 3 = 2 then true else false else (trifftzweimalzu wueste (n-1,m) (n-1,m-1) (n,m-1)) || (trifftzweimalzu berg (n-1,m) (n-1,m-1) (n,m-1)) || (trifftzweimalzu see (n-1,m) (n-1,m-1) (n,m-1)) ;; let fuellen (n,m) = let rec fl (x,y) = if (y<0) then "\n" else if (x>n) then "\n" ^ (fl (0,y-1)) else let symbol = if (wueste (x,y) && not (berg (x,y)) && not (see (x,y))) then "W" else if (not (wueste (x,y)) && berg (x,y) && not (see (x,y))) then "B" else if (not (wueste (x,y)) && not (berg (x,y)) && see (x,y)) then "S" else "?" in symbol ^ (fl (x+1,y)) in fl (0,m) ;;