X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=adventofcode16%2Fapp%2Fadvent22showgrid.hs;fp=adventofcode16%2Fapp%2Fadvent22showgrid.hs;h=0000000000000000000000000000000000000000;hb=3a26b187d5dc23b05fb73daabe52a92976a7a3c7;hp=aec4309ae330aaa971a032f106aef647895a3707;hpb=eb87b3a000ef3019d99828b71068c8cfcd9d3caa;p=advent-of-code-16.git diff --git a/adventofcode16/app/advent22showgrid.hs b/adventofcode16/app/advent22showgrid.hs deleted file mode 100644 index aec4309..0000000 --- a/adventofcode16/app/advent22showgrid.hs +++ /dev/null @@ -1,77 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} - -module Main(main) where - -import GHC.Generics (Generic) -import Text.Parsec -import Text.ParserCombinators.Parsec.Number -import Data.Maybe (catMaybes, fromJust) -import Data.List (find, delete, sort, sortOn, reverse) - -data Node = Node { x :: Int - , y :: Int - , size :: Int - , used :: Int - , available :: Int - , use_pc :: Int - } deriving (Show, Eq, Ord) - - -testGrid = "\ -\Filesystem Size Used Avail Use%\n\ -\/dev/grid/node-x0-y0 10T 8T 2T 80%\n\ -\/dev/grid/node-x0-y1 11T 6T 5T 54%\n\ -\/dev/grid/node-x0-y2 32T 28T 4T 87%\n\ -\/dev/grid/node-x1-y0 9T 7T 2T 77%\n\ -\/dev/grid/node-x1-y1 8T 0T 8T 0%\n\ -\/dev/grid/node-x1-y2 11T 7T 4T 63%\n\ -\/dev/grid/node-x2-y0 10T 6T 4T 60%\n\ -\/dev/grid/node-x2-y1 9T 8T 1T 88%\n\ -\/dev/grid/node-x2-y2 9T 6T 3T 66%\n\ -\" - -main :: IO () -main = do - text <- readFile "data/advent22.txt" - let sizes = successfulParse $ parseFile text - let maxX = maximum $ map (\n -> x n) sizes - let maxY = maximum $ map (\n -> y n) sizes - putStrLn $ unlines $ map (showRow maxX sizes) [0..(maxY-1)] - - -showRow maxX sizes r = map (charOf) row - where row = sortOn (\c -> x c) $ filter (\c -> y c == r) sizes - charOf c = if (used c) == 0 - then '+' - else if (used c) > 100 - then '#' - else '_' - - - - -duFile = duLine `sepEndBy` newline --- duLine = (optionMaybe nodeL) - -duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing) - -headerL = (many (noneOf "\r\n")) - -nodeL = nodeify <$> (string "/dev/grid/node-x" *> int) - <*> (string "-y" *> int) - <*> (spaces *> int <* string "T") - <*> (spaces *> int <* string "T") - <*> (spaces *> int <* string "T") - <*> (spaces *> int <* string "%") - where nodeify x y size used available use_pc = - Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc} - -parseFile :: String -> Either ParseError [Maybe Node] -parseFile input = parse duFile "(unknown)" input - -parseLine :: String -> Either ParseError (Maybe Node) -parseLine input = parse duLine "(unknown)" input - -successfulParse :: Either ParseError [Maybe a] -> [a] -successfulParse (Left _) = [] -successfulParse (Right a) = catMaybes a