aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2023/04
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2024-02-25 20:11:54 +0800
committerMistivia <i@mistivia.com>2024-02-25 20:11:54 +0800
commit515ecbf5a20a8e432a998b0a543bedcb1bd64cf4 (patch)
tree6353c603a8cf0276553f420205f8d1c730a318ce /advent-of-code/2023/04
parente191b610c11326b587cf0b01fd6fc37b8d07bb19 (diff)
reorg code
Diffstat (limited to 'advent-of-code/2023/04')
-rw-r--r--advent-of-code/2023/04/1.rkt29
-rw-r--r--advent-of-code/2023/04/2.rkt47
2 files changed, 0 insertions, 76 deletions
diff --git a/advent-of-code/2023/04/1.rkt b/advent-of-code/2023/04/1.rkt
deleted file mode 100644
index e8dd242..0000000
--- a/advent-of-code/2023/04/1.rkt
+++ /dev/null
@@ -1,29 +0,0 @@
-#lang racket
-
-(require "../../lib/utils.rkt")
-(require "../../lib/obj.rkt")
-
-(define fp (open-input-file "input"))
-
-(define lines (get-lines fp))
-
-(define (strip-head s)
- (string-trim (cadr (string-split s ":"))))
-
-(set! lines (map strip-head lines))
-
-(define make-card (obj-maker 'win-nums 'nums))
-
-(define (parse-card s)
- (define lst (string-split s "|"))
- (define win-nums (map string->number (string-split (car lst))))
- (define nums (map string->number (string-split (cadr lst))))
- (make-card win-nums nums))
-
-(define (point card)
- (define wins (length (filter (λ (x) (member x (card 'win-nums))) (card 'nums))))
- (if (= wins 0)
- 0
- (expt 2 (- wins 1))))
-
-(apply + (map point (map parse-card lines)))
diff --git a/advent-of-code/2023/04/2.rkt b/advent-of-code/2023/04/2.rkt
deleted file mode 100644
index eec9632..0000000
--- a/advent-of-code/2023/04/2.rkt
+++ /dev/null
@@ -1,47 +0,0 @@
-#lang racket
-
-(require "../../lib/utils.rkt")
-(require "../../lib/obj.rkt")
-
-(define fp (open-input-file "input"))
-
-(define lines (get-lines fp))
-
-(define (strip-head s)
- (string-trim (cadr (string-split s ":"))))
-
-(set! lines (map strip-head lines))
-
-(define make-card (obj-maker 'win-nums 'nums))
-
-(define (parse-card s)
- (define lst (string-split s "|"))
- (define win-nums (map string->number (string-split (car lst))))
- (define nums (map string->number (string-split (cadr lst))))
- (make-card win-nums nums))
-
-(define cards (map parse-card lines))
-
-(define card-count (make-vector (length cards) 1))
-
-(define (win-count card)
- (length (filter (λ (x) (member x (card 'win-nums))) (card 'nums))))
-
-(define card-vec (list->vector cards))
-
-(let loop ((i 0))
- (if (>= i (vector-length card-count))
- (void)
- (let ()
- (define win-cnt (win-count (vector-ref card-vec i)))
- (let loop ((j (+ i 1)))
- (if (or (>= j (vector-length card-count))
- (>= j (+ 1 i win-cnt)))
- (void)
- (let ()
- (vector-set! card-count j (+ (vector-ref card-count i)
- (vector-ref card-count j)))
- (loop (+ 1 j)))))
- (loop (+ 1 i)))))
-
-(apply + (vector->list card-count)) \ No newline at end of file