aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2023/05/part1.scm
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2024-02-13 14:44:03 +0800
committerMistivia <i@mistivia.com>2024-02-13 14:44:03 +0800
commit60b0586ddc42cd8060e796e61267fc63a4397712 (patch)
tree4cfd965df09da7628012f7d0650d5140d122900f /advent-of-code/2023/05/part1.scm
parent02e5b2a4bf9fee71792ea1431a55bf36996dbc67 (diff)
refactor scheme to racket
Diffstat (limited to 'advent-of-code/2023/05/part1.scm')
-rwxr-xr-xadvent-of-code/2023/05/part1.scm75
1 files changed, 0 insertions, 75 deletions
diff --git a/advent-of-code/2023/05/part1.scm b/advent-of-code/2023/05/part1.scm
deleted file mode 100755
index 5413bf0..0000000
--- a/advent-of-code/2023/05/part1.scm
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env guile
-!#
-
-(use-modules (ice-9 rdelim))
-
-(define port (open-input-file "input"))
-
-(define seed
- (let ()
- (define nums-str
- (string-trim
- (list-ref (string-split (read-line port) #\:) 1)))
- (map string->number (string-split nums-str #\space))))
-
-(read-line port)
-
-(define (read-line-convert-eof port)
- (define line (read-line port))
- (if (eof-object? line) "" line))
-
-(define (read-map)
- (define (loop ret)
- (define line (string-trim (read-line-convert-eof port)))
- (if (= 0 (string-length line))
- (reverse ret)
- (loop (cons (map string->number (string-split line #\space))
- ret))))
- (read-line port)
- (loop '()))
-
-(define s2s (read-map))
-(define s2f (read-map))
-(define f2w (read-map))
-(define w2l (read-map))
-(define l2t (read-map))
-(define t2h (read-map))
-(define h2l (read-map))
-(define maps (list s2s s2f f2w w2l l2t t2h h2l))
-
-
-(define (gen-mapper the-map)
- (define (mapper x)
- (define (loop the-map)
- (if (nil? the-map)
- x
- (let ()
- (define cur-map (car the-map))
- (define target (car cur-map))
- (define start (cadr cur-map))
- (define len (caddr cur-map))
- (if (and (>= x start)
- (<= x (+ start len)))
- (+ target (- x start))
- (loop (cdr the-map))))))
- (loop the-map))
- mapper)
-
-(define mappers (map gen-mapper maps))
-
-
-(define (comp-func funcs)
- (define procs (reverse funcs))
- (define (comp-rec arg)
- (if (null? procs)
- arg
- (let ((proc (car procs))
- (rest (cdr procs)))
- (set! procs rest)
- (proc (comp-rec arg)))))
- comp-rec)
-
-(define (find-location x)
- ((comp-func mappers) x))
-
-(display (apply min (map find-location seed)))