40 lines
1.1 KiB
Racket
40 lines
1.1 KiB
Racket
|
#lang curly-fn racket
|
||
|
|
||
|
(require "scripts/aoc.rkt")
|
||
|
|
||
|
;; solution for day 1
|
||
|
|
||
|
(define (part1 input)
|
||
|
(for/sum ([line (in-list input)])
|
||
|
(define nums (regexp-match* #px"[0-9]" line))
|
||
|
(string->number (string-append (first nums) (last nums)))))
|
||
|
|
||
|
(define (part2 input)
|
||
|
(define (line->result line)
|
||
|
(define match1
|
||
|
(first (regexp-match #px"([0-9]|one|two|three|four|five|six|seven|eight|nine)" line)))
|
||
|
(define match2
|
||
|
(string-reverse (first (regexp-match #px"([0-9]|eno|owt|eerht|ruof|evif|xis|neves|thgie|enin)"
|
||
|
(string-reverse line)))))
|
||
|
(match-define (list num1 num2)
|
||
|
(for/list ([z (in-list (list match1 match2))])
|
||
|
(match z
|
||
|
["one" "1"]
|
||
|
["two" "2"]
|
||
|
["three" "3"]
|
||
|
["four" "4"]
|
||
|
["five" "5"]
|
||
|
["six" "6"]
|
||
|
["seven" "7"]
|
||
|
["eight" "8"]
|
||
|
["nine" "9"]
|
||
|
[v v])))
|
||
|
(string->number (string-append num1 num2)))
|
||
|
(apply + (map line->result input)))
|
||
|
|
||
|
(module+ main
|
||
|
(define input (file->lines "inputs/1"))
|
||
|
(answer 1 1 (time (part1 input)))
|
||
|
(answer 1 2 (time (part2 input)))
|
||
|
(displayln "meow"))
|