#lang curly-fn racket (require "scripts/aoc.rkt") ;; solution for day 25 (define *mod* 20201227) (define (loop subject times) (for/fold ([val 1]) ([_ (in-range (+ 0 times))]) (remainder (* val subject) *mod*))) (define (part1 input) (match-define (list you door) input) (define you-loops #f) (define door-loops #f) (for/fold ([val 1]) ([loops (in-range 0 +inf.0)] #:break (and you-loops door-loops)) (when (= val you) (set! you-loops loops)) (when (= val door) (set! door-loops loops)) (remainder (* val 7) *mod*)) ; (displayln you-loops) ; (displayln door-loops) (displayln you-loops) (displayln (loop 7 you-loops)) (displayln you) (displayln door-loops) (displayln (loop 7 door-loops)) (displayln door) ; (displayln (loop door-loops you-loops)) ; (displayln (loop you-loops door-loops)) ; (displayln (loop 17807724 8)) ; (displayln (loop 5764801 11)) (loop you door-loops)) ; (part1 (list 5764801 17807724)) ; (error) ;; parse input file (define (parse fname) (define input (file->lines fname)) (map string->number input)) (module+ test (require rackunit) ;; tests here (displayln "no tests :(")) (module+ main (define input (parse "inputs/25")) (answer 25 1 (time (part1 input))) (aoc-finish) (displayln "meow"))