advent-of-code/2017/17/day17.scm
2024-11-12 21:46:18 +01:00

25 lines
514 B
Scheme

;; $ csc day17.scm -o day17 -O5
;; $ ./day17 -:hm8g
(use srfi-1)
(declare (fixnum))
(define (prepend! x list)
(set-cdr! list (cons (car list) (cdr list)))
(set-car! list x))
(define (spin steps n after)
(let ((buffer (circular-list 0)))
(do ((i 1 (+ i 1)))
((> i n) (cadr (member after buffer)))
(let ((new (drop buffer (+ steps 1))))
(prepend! i new)
(set! buffer new)))))
(write (spin 3 2017 2017))
(newline)
(write (spin 312 2017 2017))
(newline)
(write (spin 312 50000000 0))
(newline)