Priority queue version working
[advent-of-code-16.git] / advent13.hs
index a6e56d90e69e7dc66026580bdf6b0c587cf7d4e9..719bc6a202b5823d7b02c021deb642148ad88891 100644 (file)
@@ -1,9 +1,6 @@
 import Data.List ((\\), nub, sortOn)
-import Numeric (showIntAtBase)
-import Data.Char (intToDigit)
 import Data.Bits (popCount)
-
-import qualified Data.Map.Lazy as Map -- day 4, 5
+import Data.Maybe (fromMaybe)
 
 type Pos = (Int, Int)
 
@@ -18,29 +15,24 @@ main = do
 
 
 part1 :: IO ()
-part1 = print $ length $ tail $ extractJust $ aStar [[(1, 1)]] []
+part1 = print $ length $ tail $ fromMaybe [] $ aStar [[(1, 1)]] []
 
 part2 :: IO ()
 part2 = do print $ length $ tail $ edl 50 [[(1, 1)]] []
            putStrLn $ showRoomR 30 25 $ edl 50 [[(1, 1)]] []
--- part2 = print $ length $ tail $ edl 50 [[(1, 1)]] []
-
 
-extractJust :: Maybe [a] -> [a]
-extractJust Nothing = []
-extractJust (Just x) = x
 
+-- extractJust :: Maybe [a] -> [a]
+-- extractJust Nothing = []
+-- extractJust (Just x) = x
 isWall :: Int -> Int -> Bool
-isWall x y = (popCount n) `mod` 2 == 1
+isWall x y = odd $ popCount n
     where 
         n = x*x + 3*x + 2*x*y + y + y*y + seed
 
 
-showRoom w h = unlines rows
-    where 
-        rows = [row x | x <- [0..h]]
-        row x = [showCell x y | y <- [0..w]]
-        showCell x y = if (isWall x y) then '#' else '.'
+showRoom w h = showRoomR w h []
 
 showRoomR w h reached = unlines rows
     where