aboutsummaryrefslogtreecommitdiff
path: root/01
diff options
context:
space:
mode:
Diffstat (limited to '01')
-rw-r--r--01/1.rkt16
-rw-r--r--01/2.rkt30
2 files changed, 46 insertions, 0 deletions
diff --git a/01/1.rkt b/01/1.rkt
new file mode 100644
index 0000000..82c109b
--- /dev/null
+++ b/01/1.rkt
@@ -0,0 +1,16 @@
+#lang racket
+
+(require "../lib/utils.rkt")
+
+(define fp (open-input-file "input"))
+
+(define lines (get-lines fp))
+
+(define (extract-number line)
+ (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))))
+
+(apply + (map extract-number lines))
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)