diff options
| author | Mistivia <i@mistivia.com> | 2024-02-25 20:11:54 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2024-02-25 20:11:54 +0800 |
| commit | 515ecbf5a20a8e432a998b0a543bedcb1bd64cf4 (patch) | |
| tree | 6353c603a8cf0276553f420205f8d1c730a318ce /01/2.rkt | |
| parent | e191b610c11326b587cf0b01fd6fc37b8d07bb19 (diff) | |
reorg code
Diffstat (limited to '01/2.rkt')
| -rw-r--r-- | 01/2.rkt | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/01/2.rkt b/01/2.rkt new file mode 100644 index 0000000..1f43996 --- /dev/null +++ b/01/2.rkt @@ -0,0 +1,30 @@ +#lang racket + +(require "../lib/utils.rkt") + +(define fp (open-input-file "input")) + +(define lines (get-lines fp)) + +(define (replace-digit str) + (set! str (string-replace str "one" "o1ne")) + (set! str (string-replace str "two" "t2wo")) + (set! str (string-replace str "three" "t3hree")) + (set! str (string-replace str "four" "f4our")) + (set! str (string-replace str "five" "f5ive")) + (set! str (string-replace str "six" "s6ix")) + (set! str (string-replace str "seven" "s7even")) + (set! str (string-replace str "eight" "e8ight")) + (set! str (string-replace str "nine" "n9ine")) + str) + +(define (extract-number rawline) + (define line (replace-digit rawline)) + (define number-list (filter char-numeric? (string->list line))) + (set! number-list (map (λ (c) + (string->number (list->string (list c)))) + number-list)) + (+ (last number-list) (* 10 (car number-list)))) + +(display (apply + (map extract-number lines))) +(newline) |
