module paard import StdEnv, StdFunc bord :: {{Char}} bord = {{'e', 'p', 's'} ,{'o', ' ', 't'} ,{'s', 'r', 'a'} } inbord :: Int Int -> Bool inbord x y = x >= 0 && y >= 0 && x < size bord && y < size bord.[0] zetten :: [(Int, Int)] zetten = let m = [(1,2), (-1,2), (1,-2), (-1,-2)] in m ++ map (\(x,y)->(y,x)) m zet :: [(Int, Int)] -> [[(Int, Int)]] zet [] = [] zet gehad=:[(x, y):_] = [ [(x+dx, y+dy):gehad] \\(dx,dy)<-zetten | inbord (dx+x) (dy+y) && not (isMember (dx+x,dy+y) gehad) ] str :: [(Int, Int)] -> String str s = {bord.[x].[y]\\(x, y)<-reverse s} +++ "\n" startposities :: [[(Int,Int)]] startposities = [[(x,y)]\\x<-[0..2],y<-[0..2]] ($) infixr 0 ($) :== id Start = map str $ iter ((size bord*size bord.[0]) - 2) (flatten o map zet) startposities