diff --git a/day10.hs b/day10.hs new file mode 100644 index 0000000..4b6a7b7 --- /dev/null +++ b/day10.hs @@ -0,0 +1,10 @@ +c :: [(Int, Int)] -> [Int] +c((x,i):t)=(x*i):(c$drop 39 t);c _=[] -- This takes every 40th element of a list of tuples, and multiplies the parts +v :: (Int, Int) -> Char +v(p,c)|abs(p-(mod(c-1)40))<2='#'|let='.' -- This checks, if a cycle c 'sees' a position p. +n :: String -> String +n[]=[];n i|(f,b)<-splitAt 40 i=f++'\n':n b -- Inserts a \n every 40th position in a string +e :: [(Int, Int)] -> String -> [(Int, Int)] +e s@((x,c):t)i|(_,(_:i))<-span(/=' ')i=(x+(read i),c+2):(x,c+1):s|let=(x,c+1):s -- interprets one instruction i, evaluates it and adds the state (x,c) for each cycle c the instruction needed to the list of previous states +main :: IO() +main=interact$(\i->[n.map v,show.sum.c.drop 19]>>=($i)).reverse.foldl e[(1,1)].lines -- read from stdin, interpret (linewise) each instruction. Initial State is (1,1). On the evaluation both problems are executed, drawing (n.map v) and sum-/multiplying (show.sum.c.drop 19) diff --git a/day10long b/day10long new file mode 100644 index 0000000..39384f8 --- /dev/null +++ b/day10long @@ -0,0 +1,136 @@ +noop +noop +addx 5 +addx 3 +noop +addx 14 +addx -12 +noop +addx 5 +addx 1 +noop +addx 19 +addx -15 +noop +noop +noop +addx 7 +addx -1 +addx 4 +noop +noop +addx 5 +addx 1 +addx -38 +noop +addx 21 +addx -18 +addx 2 +addx 2 +noop +addx 3 +addx 5 +addx -6 +addx 11 +noop +addx 2 +addx 19 +addx -18 +noop +addx 8 +addx -3 +addx 2 +addx 5 +addx 2 +addx 3 +addx -2 +addx -38 +noop +addx 3 +addx 4 +addx 5 +noop +addx -2 +addx 5 +addx -8 +addx 12 +addx 3 +addx -2 +addx 5 +addx 11 +addx -31 +addx 23 +addx 4 +noop +noop +addx 5 +addx 3 +addx -2 +addx -37 +addx 1 +addx 5 +addx 2 +addx 12 +addx -10 +addx 3 +addx 4 +addx -2 +noop +addx 6 +addx 1 +noop +noop +noop +addx -2 +addx 7 +addx 2 +noop +addx 3 +addx 3 +addx 1 +noop +addx -37 +addx 2 +addx 5 +addx 2 +addx 32 +addx -31 +addx 5 +addx 2 +addx 9 +addx 9 +addx -15 +noop +addx 3 +addx 2 +addx 5 +addx 2 +addx 3 +addx -2 +addx 2 +addx 2 +addx -37 +addx 5 +addx -2 +addx 2 +addx 5 +addx 2 +addx 16 +addx -15 +addx 4 +noop +addx 1 +addx 2 +noop +addx 3 +addx 5 +addx -1 +addx 5 +noop +noop +noop +noop +addx 3 +addx 5 +addx -16 +noop diff --git a/day10short b/day10short new file mode 100644 index 0000000..37ee8ee --- /dev/null +++ b/day10short @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop