do dataFileName <- getDataFileName
text <- TIO.readFile dataFileName
let ((wharfLines, colNames), moves) = successfulParse text
- -- print wharfLines
- -- print colNames
- -- print moves
let wharf = makeWharf wharfLines colNames
- -- print wharf
- -- print $ applyMove wharf (head moves)
putStrLn $ part1 wharf moves
putStrLn $ part2 wharf moves
makeWharf :: [[Maybe Crate]] -> [Int] -> Wharf
makeWharf wharfLines colNames = M.fromList $ zip colNames wharfCols
- where wharfCols = fmap (fmap fromJust)
- $ fmap (dropWhile isNothing)
- $ transpose wharfLines
+ where wharfCols = fmap catMaybes $ transpose wharfLines
applyMoves1 :: Wharf -> [Move] -> Wharf
applyMoves1 wharf moves = foldl' applyMove1 wharf moves