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