Day 16: Part 1.
This commit is contained in:
parent
77f22cfc47
commit
4dffed6399
|
@ -0,0 +1 @@
|
|||
59717513948900379305109702352254961099291386881456676203556183151524797037683068791860532352118123252250974130706958763348105389034831381607519427872819735052750376719383812473081415096360867340158428371353702640632449827967163188043812193288449328058464005995046093112575926165337330100634707115160053682715014464686531460025493602539343245166620098362467196933484413717749680188294435582266877493265037758875197256932099061961217414581388227153472347319505899534413848174322474743198535953826086266146686256066319093589456135923631361106367290236939056758783671975582829257390514211329195992209734175732361974503874578275698611819911236908050184158
|
|
@ -0,0 +1,38 @@
|
|||
#lang racket
|
||||
|
||||
(require "../lib.rkt")
|
||||
|
||||
(define (string->numbers str)
|
||||
(map (λ (c) (- (char->integer c) (char->integer #\0)))
|
||||
(string->list str)))
|
||||
|
||||
(define input-string (car (problem-input 16)))
|
||||
|
||||
(define input
|
||||
(string->numbers input-string))
|
||||
|
||||
(define input-long
|
||||
(apply append (make-list 10000 input)))
|
||||
|
||||
(define message-offset
|
||||
(string->number (substring input-string 0 7)))
|
||||
|
||||
(define (base len n)
|
||||
(let* ([base-n (apply append (map (∂ make-list n) '(0 1 0 -1)))]
|
||||
[repeats (add1 (ceiling (/ len (* n 4))))]
|
||||
[repeated (apply append (make-list repeats base-n))])
|
||||
(take (cdr repeated) len)))
|
||||
|
||||
(define (prod-sum l1 l2)
|
||||
(sum (map * l1 l2)))
|
||||
|
||||
(define (fft ns)
|
||||
(map (λ (n) (remainder (abs (prod-sum ns (base (length ns) n))) 10))
|
||||
(range 1 (add1 (length ns)))))
|
||||
|
||||
(define (part1)
|
||||
(let loop ([signal input]
|
||||
[count 0])
|
||||
(if (= 100 count)
|
||||
(take signal 8)
|
||||
(loop (fft signal) (add1 count)))))
|
Loading…
Reference in New Issue