After cheating a bit...
This commit is contained in:
17
app/1.hs
17
app/1.hs
@ -20,20 +20,23 @@ solver b = go 50
|
||||
go _ [] = 0
|
||||
go curr (RRight n : xs) =
|
||||
let (rots,newCurr) = bound (curr + n) in
|
||||
(if | b -> (rots+)
|
||||
(if | b -> (rots +)
|
||||
| newCurr == 0 -> (1+)
|
||||
| otherwise -> id) $ go newCurr xs
|
||||
| otherwise -> id) $
|
||||
go newCurr xs
|
||||
go curr (RLeft n : xs) =
|
||||
let (rots,newCurr) = bound (curr - n) in
|
||||
(if | b -> (rots+)
|
||||
(if | b -> (rots - (if curr == 0 then 1 else 0) +)
|
||||
| newCurr == 0 -> (1+)
|
||||
| otherwise -> id) $ go newCurr xs
|
||||
| otherwise -> id) $
|
||||
go newCurr xs
|
||||
|
||||
bound :: Int -> (Int,Int)
|
||||
bound x
|
||||
| x < 0 = (\(n,y) -> (n+1,y)) . bound $ x + 100
|
||||
| x > 99 = (\(n,y) -> (n+1,y)) . bound $ x - 100
|
||||
| otherwise = (0, x)
|
||||
| x < 0 = (\(n,y) -> (n+1,y)) . bound $ x + 100
|
||||
| x == 0 || x == 100 = (1,0)
|
||||
| x > 99 = (\(n,y) -> (n+1,y)) . bound $ x - 100
|
||||
| otherwise = (0, x)
|
||||
|
||||
main :: IO ()
|
||||
main = readFile "inputs/1" <&> parse >>= \i ->
|
||||
|
||||
Reference in New Issue
Block a user