blob: d3bc34a32ce228ca4cb139bba72094e76146f7de (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#lang racket
(require srfi/1)
(define data (for/list ([line (file->lines "day25")])
(for/list ([c line])
(match c
[#\2 2]
[#\1 1]
[#\0 0]
[#\- -1]
[#\= -2]))))
(define (base5 ns)
(foldl (lambda (x a) (+ (* 5 a) x)) 0 ns))
(define (unbase5 n)
(list->string (reverse (unfold zero?
(lambda (n) (match (modulo (+ n 2) 5)
[0 #\=]
[1 #\-]
[2 #\0]
[3 #\1]
[4 #\2]))
(lambda (n) (quotient (+ n 2) 5))
n))))
; (map base5 data)
(unbase5 (for/sum ([n data])
(base5 n)))
;; "2-0-020-1==1021=--01"
|