aboutsummaryrefslogtreecommitdiff
path: root/lib/utils.rkt
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2024-03-10 13:19:25 +0800
committerMistivia <i@mistivia.com>2024-03-10 13:19:25 +0800
commite28258fddce742063a09a1b1da3ea5a6d5a2bc9f (patch)
tree4046f2d35e965dcfd898099f66571ebe653f6807 /lib/utils.rkt
parent9d68d71e8176812de18d86efee2d5767feda92ea (diff)
solve day 13 part 1
Diffstat (limited to 'lib/utils.rkt')
-rw-r--r--lib/utils.rkt14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/utils.rkt b/lib/utils.rkt
index 2371583..974e453 100644
--- a/lib/utils.rkt
+++ b/lib/utils.rkt
@@ -3,7 +3,8 @@
(provide get-lines
enumerate
repeat
- split-list-by)
+ split-list-by
+ transpose-list)
(define (repeat n e)
(let loop ((i 0) (ret '()))
@@ -41,3 +42,14 @@
(if (cmp e (car lst))
(loop (cons (reverse cur) ret) '() (cdr lst))
(loop ret (cons (car lst) cur) (cdr lst))))))
+
+(define (transpose-list lines)
+ (define width (string-length (car lines)))
+ (define new-lines (make-vector width))
+ (let loop ((i 0))
+ (if (>= i width)
+ (vector->list new-lines)
+ (let ()
+ (define char-list (map (λ (l) (string-ref l i)) lines))
+ (vector-set! new-lines i (list->string char-list))
+ (loop (+ i 1)))))) \ No newline at end of file