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 /advent-of-code/2023/08/1.rkt | |
| parent | e191b610c11326b587cf0b01fd6fc37b8d07bb19 (diff) | |
reorg code
Diffstat (limited to 'advent-of-code/2023/08/1.rkt')
| -rw-r--r-- | advent-of-code/2023/08/1.rkt | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/advent-of-code/2023/08/1.rkt b/advent-of-code/2023/08/1.rkt deleted file mode 100644 index 81424a1..0000000 --- a/advent-of-code/2023/08/1.rkt +++ /dev/null @@ -1,47 +0,0 @@ -#lang racket - -(require "../../lib/utils.rkt") - -(define lines - (call-with-input-file "input" - (lambda (fp) - (get-lines fp)))) - -(define instructions (string->list (car lines))) - -(define (make-instruction-generator) - (define cur instructions) - (lambda () - (when (null? cur) - (set! cur instructions)) - (define ret (car cur)) - (set! cur (cdr cur)) - ret)) - -(define next-instruction (make-instruction-generator)) - -(set! lines (cddr lines)) - -(define (parse-map str) - (define p1 (string-split str "=")) - (define key (string-trim (car p1))) - (define val-str (string-trim (cadr p1))) - (define value (list (substring val-str 1 4) (substring val-str 6 9))) - (cons key value)) - -(define the-map (make-hash (map parse-map lines))) - -(define (simulate start end) - (let loop ((i 0) (cur start)) - (if (string=? cur end) - i - (let () - (define instruction (next-instruction)) - (define mapping (hash-ref the-map cur)) - (define next - (if (char=? instruction #\L) - (car mapping) - (cadr mapping))) - (loop (+ 1 i) next))))) - -(simulate "AAA" "ZZZ")
\ No newline at end of file |
