aoc2023/1.rkt

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"))