aboutsummaryrefslogtreecommitdiff
path: root/2022/day-06/day-06.rkt
blob: 4eb8323c8e57ac32557d73f1d1b61a752e3d66e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#lang racket

(require advent-of-code
         threading
         (only-in relation ->list ->set)
         (only-in algorithms sliding))

(define buffer (~> (fetch-aoc-input (find-session) 2022 6)))

(define (find-marker data type)
  (define n
    (match type
      ['start-of-packet 4]
      ['start-of-message 14]))
  (for/first ([chunk (in-list (sliding (->list data) n))]
              [i (in-naturals n)]
              #:when (= n (~> chunk remove-duplicates length)))
    i))

;; part 1
(find-marker buffer 'start-of-packet)

;; part 2
(find-marker buffer 'start-of-message)