37 lines
798 B
Racket
37 lines
798 B
Racket
#lang racket
|
|
|
|
(module+ test
|
|
(require rackunit))
|
|
|
|
(module+ main
|
|
(displayln "Day 1"))
|
|
|
|
(define (read-input filename)
|
|
(map string->number (file->lines filename)))
|
|
|
|
(define (part1 filename)
|
|
(define expenses (read-input filename))
|
|
(for*/last ([a (in-list expenses)]
|
|
[b (in-list expenses)]
|
|
#:final (= 2020 (+ a b)))
|
|
(* a b)))
|
|
|
|
(module+ test
|
|
(check-eq? (part1 "test") 514579))
|
|
|
|
(module+ main
|
|
(displayln (part1 "input")))
|
|
|
|
(define (part2 filename)
|
|
(define expenses (read-input filename))
|
|
(for*/last ([a (in-list expenses)]
|
|
[b (in-list expenses)]
|
|
[c (in-list expenses)]
|
|
#:final (= 2020 (+ a b c)))
|
|
(* a b c)))
|
|
|
|
(module+ test
|
|
(check-eq? (part2 "test") 241861950))
|
|
|
|
(module+ main
|
|
(displayln (part2 "input")))
|