day 1: rewrite parse
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
		@@ -1,21 +1,23 @@
 | 
				
			|||||||
module Main where
 | 
					module Main where
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import qualified AoC as A (count, extract)
 | 
					import qualified AoC as A (count, extract)
 | 
				
			||||||
 | 
					import Control.Monad (void)
 | 
				
			||||||
import Data.List (sort)
 | 
					import Data.List (sort)
 | 
				
			||||||
import Text.Parsec (digit, many1, newline, parse, space, try)
 | 
					import Text.Parsec (digit, eof, many1, newline, parse, sepEndBy1, space, try, (<|>))
 | 
				
			||||||
import Text.Parsec.String (Parser)
 | 
					import Text.Parsec.String (Parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
parseLists :: Parser ([Int], [Int])
 | 
					parseLists :: Parser ([Int], [Int])
 | 
				
			||||||
parseLists =
 | 
					parseLists =
 | 
				
			||||||
  unzip
 | 
					  unzip
 | 
				
			||||||
    -- multiple lines
 | 
					    -- multiple lines
 | 
				
			||||||
    <$> many1
 | 
					    <$> sepEndBy1
 | 
				
			||||||
      ( (,)
 | 
					      ( (,)
 | 
				
			||||||
          -- first number
 | 
					          -- first number
 | 
				
			||||||
          <$> (read <$> many1 digit)
 | 
					          <$> (read <$> many1 digit)
 | 
				
			||||||
          -- second number
 | 
					          -- second number
 | 
				
			||||||
          <*> (many1 space *> (read <$> many1 digit) <* try newline)
 | 
					          <*> (many1 space *> (read <$> many1 digit))
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
 | 
					      newline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part1 :: [Int] -> [Int] -> Int
 | 
					part1 :: [Int] -> [Int] -> Int
 | 
				
			||||||
part1 xs ys = sum $ zipWith ((abs .) . (-)) xs ys
 | 
					part1 xs ys = sum $ zipWith ((abs .) . (-)) xs ys
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user