module Main where import Control.Lens import Linear.V2 import Linear.V3 import Data.Matrix import System.Random data Square = X | Qu | O deriving (Show) --board = V3 <$> [0..8] <*> [0..8] <*> [0] --board = [(r,c,X) | r <- [0..8], c <- [0..8] ] lo8 = [0..8] -- list of 8 initBoard = matrix 8 8 $ \_ -> O --avail r c b = --rowOccupied r b = any (== Q) $ getRow r b placeQueen r c b = board where fX = (\ _ -> X) rowAttacked = mapRow fX r colAttacked = mapCol fx c queen = setElem Qu (r,c) b --placeAll = repeat 8 placeQueen winnable = undefined nextOpen board = solve = -- placeQueen r c = --b = getE --placeQueen r c b = b ^. -- rand = do -- g <- newStdGen -- print $ take 8 $ (randomRs (0, 8) g) -- try r c = let next b = placeQueen r c b -- in next initBoard -- try' p = let next b = p b -- in next initBoard --res = [ try x y | x <- lo8, y <- lo8 ] main :: IO () main = do putStrLn "Hi"