Day 24: It's not done at all lmao
This commit is contained in:
parent
ff35584f73
commit
5327774a1f
|
@ -0,0 +1,380 @@
|
|||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 12
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 14) == w ? 0 : 1
|
||||
z = (w + 12) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 10
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 9
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 10) == w ? 0 : 1
|
||||
z = (w + 9) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 13
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 8
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 13) == w ? 0 : 1
|
||||
z = (w + 8) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -8
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 3
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 8) == w ? 0 : 1
|
||||
z = (w + 3) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 0
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 11) == w ? 0 : 1
|
||||
z = (w + 0) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 11
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 11) == w ? 0 : 1
|
||||
z = (w + 11) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 14) == w ? 0 : 1
|
||||
z = (w + 10) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 13
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 11) == w ? 0 : 1
|
||||
z = (w + 13) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 3
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 + 14) == w ? 0 : 1
|
||||
z = (w + 3) * x + (25 * x + 1) * z
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -1
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 1) == w ? 0 : 1
|
||||
z = (w + 10) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -8
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 8) == w ? 0 : 1
|
||||
z = (w + 10) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -5
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 14
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 5) == w ? 0 : 1
|
||||
z = (w + 14) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -16
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 6
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 16) == w ? 0 : 1
|
||||
z = (w + 6) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -6
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 5
|
||||
mul y x
|
||||
add z y
|
||||
|
||||
w <- in
|
||||
x = (z % 26 - 6) == w ? 0 : 1
|
||||
z = (w + 5) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
|
||||
x = (z % 26 + 14) == w1 ? 0 : 1
|
||||
z = (w1 + 12) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 + 10) == w2 ? 0 : 1
|
||||
z = (w2 + 9) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 + 13) == w3 ? 0 : 1
|
||||
z = (w3 + 8) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 - 8) == w4 ? 0 : 1
|
||||
z = (w4 + 3) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 + 11) == w5 ? 0 : 1
|
||||
z = (w5 + 0) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 + 11) == w6 ? 0 : 1
|
||||
z = (w6 + 11) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 + 14) == w7 ? 0 : 1
|
||||
z = (w7 + 10) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 - 11) == w8 ? 0 : 1
|
||||
z = (w8 + 13) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 + 14) == w9 ? 0 : 1
|
||||
z = (w9 + 3) * x + (25 * x + 1) * z
|
||||
|
||||
x = (z % 26 - 1) == w10 ? 0 : 1
|
||||
z = (w10 + 10) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 - 8) == w11 ? 0 : 1
|
||||
z = (w11 + 10) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 - 5) == w12 ? 0 : 1
|
||||
z = (w12 + 14) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 - 16) == w13 ? 0 : 1
|
||||
z = (w13 + 6) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
x = (z % 26 - 6) == w14 ? 0 : 1
|
||||
z = (w14 + 5) * x + (25 * x + 1) * (z / 26)
|
||||
|
||||
|
||||
z = w1 + 12
|
||||
z = (z % 26 + 10) == w2 ? z : (w2 + 9) + 26 * z
|
||||
z = (z % 26 + 13) == w3 ? z : (w3 + 8) + 26 * z
|
||||
z = (z % 26 - 8) == w4 ? z : (w4 + 3) + 26 * (z / 26)
|
||||
z = (z % 26 + 11) == w5 ? z : (w5 + 0) + 26 * z
|
||||
z = (z % 26 + 11) == w6 ? z : (w6 + 11) + 26 * z
|
||||
z = (z % 26 + 14) == w7 ? z : (w7 + 10) + 26 * z
|
||||
z = (z % 26 - 11) == w8 ? z : (w8 + 13) + 26 * (z / 26)
|
||||
z = (z % 26 + 14) == w9 ? z : (w9 + 3) + 26 * z
|
||||
z = (z % 26 - 1) == w10 ? z : (w10 + 10) + 26 * (z / 26)
|
||||
z = (z % 26 - 8) == w11 ? z : (w11 + 10) + 26 * (z / 26)
|
||||
z = (z % 26 - 5) == w12 ? z : (w12 + 14) + 26 * (z / 26)
|
||||
z = (z % 26 - 16) == w13 ? z : (w13 + 6) + 26 * (z / 26)
|
||||
z = (z % 26 - 6) == w14 ? z : (w14 + 5) + 26 * (z / 26)
|
|
@ -0,0 +1,252 @@
|
|||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 12
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 10
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 9
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 13
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 8
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -8
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 3
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 0
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 11
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -11
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 13
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 1
|
||||
add x 14
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 3
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -1
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -8
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 10
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -5
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 14
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -16
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 6
|
||||
mul y x
|
||||
add z y
|
||||
inp w
|
||||
mul x 0
|
||||
add x z
|
||||
mod x 26
|
||||
div z 26
|
||||
add x -6
|
||||
eql x w
|
||||
eql x 0
|
||||
mul y 0
|
||||
add y 25
|
||||
mul y x
|
||||
add y 1
|
||||
mul z y
|
||||
mul y 0
|
||||
add y w
|
||||
add y 5
|
||||
mul y x
|
||||
add z y
|
|
@ -0,0 +1,81 @@
|
|||
#lang racket
|
||||
|
||||
(require "../lib.rkt")
|
||||
|
||||
(define input
|
||||
(for/list ([line (problem-input 24)])
|
||||
(match (string-words line)
|
||||
[`(,instr ,var) (list (string->symbol instr) (string->symbol var))]
|
||||
[`(,instr ,var ,val)
|
||||
(list (string->symbol instr)
|
||||
(string->symbol var)
|
||||
(or (string->number val)
|
||||
(string->symbol val)))])))
|
||||
|
||||
(define (monad model)
|
||||
(define (get state val)
|
||||
(if (number? val) val (hash-ref state val)))
|
||||
(define (monad model state instrs)
|
||||
(if (empty? instrs)
|
||||
(hash-ref state 'z)
|
||||
(match (first instrs)
|
||||
[`(inp ,var)
|
||||
(monad (rest model)
|
||||
(hash-set state var (first model))
|
||||
(rest instrs))]
|
||||
[`(add ,var ,val)
|
||||
(monad model
|
||||
(hash-set state var
|
||||
(+ (hash-ref state var)
|
||||
(get state val)))
|
||||
(rest instrs))]
|
||||
[`(mul ,var ,val)
|
||||
(monad model
|
||||
(hash-set state var
|
||||
(* (hash-ref state var)
|
||||
(get state val)))
|
||||
(rest instrs))]
|
||||
[`(div ,var ,val)
|
||||
(monad model
|
||||
(hash-set state var
|
||||
(quotient (hash-ref state var)
|
||||
(get state val)))
|
||||
(rest instrs))]
|
||||
[`(mod ,var ,val)
|
||||
(monad model
|
||||
(hash-set state var
|
||||
(remainder (hash-ref state var)
|
||||
(get state val)))
|
||||
(rest instrs))]
|
||||
[`(eql ,var ,val)
|
||||
(monad model
|
||||
(hash-set state var
|
||||
(if (= (hash-ref state var)
|
||||
(get state val))
|
||||
1 0))
|
||||
(rest instrs))])))
|
||||
(monad model (hash 'w 0 'x 0 'y 0 'z 0) input))
|
||||
|
||||
(define As '(14 10 13 -8 11 11 14 -11 14 -1 -8 -5 -16 -6))
|
||||
(define Bs '(12 9 8 3 0 11 10 13 3 10 10 14 6 5))
|
||||
|
||||
(define (monad* model)
|
||||
(for/fold ([z 0])
|
||||
([w model]
|
||||
[A As]
|
||||
[B Bs])
|
||||
(define x (if (= w (- (remainder z 26) A)) 0 1))
|
||||
(+ (* x (+ w B))
|
||||
(* (add1 (* x 25))
|
||||
(quotient z (if (positive? A) 1 26))))))
|
||||
|
||||
(define part1
|
||||
(let loop ([model 99999999999999])
|
||||
(define model* (number->digits model))
|
||||
(if (member 0 model*)
|
||||
(loop (sub1 model))
|
||||
(if (zero? (monad* model*))
|
||||
model
|
||||
(loop (sub1 model))))))
|
||||
|
||||
(show-solution #f #f)
|
Loading…
Reference in New Issue