aboutsummaryrefslogtreecommitdiff
path: root/2021/day2/02a.rkt
blob: 2317a9a05092ef5a1f1cdf1bb0b577626fdf7e43 (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
25
#lang racket

(define (parse-line line)
  (define split (string-split line " "))
  (cond [(empty? split)
         (datum->syntax #f "")]
        [else (define command (car split))
              (define arg (second split))
              (datum->syntax #f `(,(string->symbol command) ,(string->number arg)))]))

(define (read-syntax path port)
  (define src-datums (map parse-line (port->lines port)))
  (datum->syntax #f `(module day2 racket
                       (define depth 0)
                       (define pos 0)
                       (define (forward x)
                         (set! pos (+ pos x)))
                       (define (down x)
                         (set! depth (+ depth x)))
                       (define (up x)
                         (set! depth (- depth x)))
                       ,@src-datums
                       (* depth pos))))

(provide read-syntax)