day 10
parent
d7b8a8fe71
commit
1ae744093d
@ -0,0 +1,31 @@
|
||||
#lang br
|
||||
(require racket/file rackunit)
|
||||
|
||||
(define adapters (map string->number (file->lines "10.rktd")))
|
||||
(define sources (sort `(0 ,@adapters ,(+ (apply max adapters) 3)) <))
|
||||
|
||||
(define diffs (for/list ([left sources]
|
||||
[right (cdr sources)])
|
||||
(- right left)))
|
||||
|
||||
(check-equal? (* (count (curry = 1) diffs) (count (curry = 3) diffs)) 2590)
|
||||
|
||||
(define (sequential-subsequences sources [seqs null])
|
||||
(match sources
|
||||
[(? null?) seqs]
|
||||
[(list head tail ...)
|
||||
(let loop ([head (list head)][tail tail])
|
||||
(match tail
|
||||
[(list first rest ...) #:when (eq? (car head) (sub1 first))
|
||||
(loop (cons first head) rest)]
|
||||
[_ (sequential-subsequences tail (cons head seqs))]))]))
|
||||
|
||||
(define (subseq->multiplier subseq)
|
||||
(match (length subseq)
|
||||
[3 2] ; abc | ac
|
||||
[4 4] ; abcd | acd | abd | ad
|
||||
[5 7] ; abcde | acde | abde | abce | abe | ace | ade
|
||||
[_ 1]))
|
||||
|
||||
(check-equal? (for/product ([subseq (sequential-subsequences sources)])
|
||||
(subseq->multiplier subseq)) 226775649501184)
|
@ -0,0 +1,108 @@
|
||||
105
|
||||
78
|
||||
37
|
||||
153
|
||||
10
|
||||
175
|
||||
62
|
||||
163
|
||||
87
|
||||
22
|
||||
24
|
||||
92
|
||||
46
|
||||
5
|
||||
115
|
||||
61
|
||||
124
|
||||
128
|
||||
8
|
||||
60
|
||||
17
|
||||
93
|
||||
166
|
||||
29
|
||||
90
|
||||
148
|
||||
113
|
||||
55
|
||||
141
|
||||
134
|
||||
79
|
||||
101
|
||||
49
|
||||
133
|
||||
38
|
||||
53
|
||||
33
|
||||
30
|
||||
66
|
||||
159
|
||||
23
|
||||
132
|
||||
145
|
||||
147
|
||||
121
|
||||
94
|
||||
146
|
||||
21
|
||||
135
|
||||
56
|
||||
176
|
||||
118
|
||||
44
|
||||
138
|
||||
85
|
||||
169
|
||||
111
|
||||
9
|
||||
1
|
||||
83
|
||||
36
|
||||
59
|
||||
140
|
||||
149
|
||||
160
|
||||
43
|
||||
131
|
||||
69
|
||||
2
|
||||
25
|
||||
84
|
||||
39
|
||||
28
|
||||
171
|
||||
172
|
||||
100
|
||||
18
|
||||
15
|
||||
114
|
||||
70
|
||||
86
|
||||
97
|
||||
155
|
||||
152
|
||||
40
|
||||
122
|
||||
77
|
||||
16
|
||||
11
|
||||
170
|
||||
52
|
||||
45
|
||||
139
|
||||
76
|
||||
102
|
||||
63
|
||||
54
|
||||
142
|
||||
14
|
||||
158
|
||||
80
|
||||
154
|
||||
112
|
||||
91
|
||||
108
|
||||
73
|
||||
127
|
||||
123
|
Reference in New Issue