day3: update - avoid using unecessary helpers
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
		
							
								
								
									
										17
									
								
								day3.hs
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								day3.hs
									
									
									
									
									
								
							@@ -1,27 +1,24 @@
 | 
				
			|||||||
import Data.Char (isAsciiLower, isAsciiUpper)
 | 
					import Data.Char (isAsciiLower, isAsciiUpper)
 | 
				
			||||||
import Data.List (intersect)
 | 
					import Data.List (intersect)
 | 
				
			||||||
import Lib (chunks)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
main :: IO ()
 | 
					main :: IO ()
 | 
				
			||||||
main = do
 | 
					main = do
 | 
				
			||||||
  input <- readFile "day3.in"
 | 
					  input <- lines <$> readFile "day3.in"
 | 
				
			||||||
  putStr "Q1: "
 | 
					  putStr "Q1: "
 | 
				
			||||||
  print $ q1 input
 | 
					  print $ q1 input
 | 
				
			||||||
  putStr "Q2: "
 | 
					  putStr "Q2: "
 | 
				
			||||||
  print $ q2 input
 | 
					  print $ q2 input
 | 
				
			||||||
 | 
					
 | 
				
			||||||
q1 :: String -> Int
 | 
					q1 :: [String] -> Int
 | 
				
			||||||
q1 =
 | 
					q1 =
 | 
				
			||||||
  sum
 | 
					  sum
 | 
				
			||||||
    . map (\x -> val . head . uncurry intersect $ splitAt (div (length x) 2) x)
 | 
					    . map (\x -> val . head . uncurry intersect $ splitAt (div (length x) 2) x)
 | 
				
			||||||
    . lines
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
q2 :: String -> Int
 | 
					q2 :: [String] -> Int
 | 
				
			||||||
q2 =
 | 
					q2 [] = 0
 | 
				
			||||||
  sum
 | 
					q2 input =
 | 
				
			||||||
    . map (val . head . foldr1 intersect)
 | 
					  let (cur, rest) = splitAt 3 input
 | 
				
			||||||
    . chunks 3
 | 
					   in (val . head . foldr1 intersect) cur + q2 rest
 | 
				
			||||||
    . lines
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
val :: Char -> Int
 | 
					val :: Char -> Int
 | 
				
			||||||
val c
 | 
					val c
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user