Compare commits
3 Commits
0ec1ae8410
...
a3a68ad3fc
Author | SHA1 | Date |
---|---|---|
Érico Nogueira | a3a68ad3fc | |
Érico Nogueira | cd9bd8fa42 | |
Érico Nogueira | 1b8e1f526b |
|
@ -1,4 +1,4 @@
|
|||
#lang racket
|
||||
#lang racket/base
|
||||
|
||||
(define (go)
|
||||
'yep-it-works)
|
||||
|
@ -7,10 +7,10 @@
|
|||
(define count 0)
|
||||
(define old 5000)
|
||||
(for ([t (in-lines)])
|
||||
(define new (string->number t))
|
||||
(if (> new old)
|
||||
(set! count (+ count 1))
|
||||
#f)
|
||||
(set! old new))
|
||||
(define new (string->number t))
|
||||
(if (> new old)
|
||||
(set! count (+ count 1))
|
||||
#f)
|
||||
(set! old new))
|
||||
|
||||
(display count)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#lang racket
|
||||
#lang racket/base
|
||||
|
||||
(define l null)
|
||||
(for ([t (in-lines)])
|
||||
(define new (string->number t))
|
||||
(set! l (cons new l)))
|
||||
(define new (string->number t))
|
||||
(set! l (cons new l)))
|
||||
|
||||
(define v (list->vector (reverse l)))
|
||||
|
||||
|
@ -16,8 +16,8 @@
|
|||
(define count 0)
|
||||
(define len (vector-length v))
|
||||
(for/list ([i (in-range len)])
|
||||
(if (and (<= (+ i 4) len) (< (vsum v i) (vsum v (+ i 1))))
|
||||
(set! count (+ count 1))
|
||||
#f))
|
||||
(if (and (<= (+ i 4) len) (< (vsum v i) (vsum v (+ i 1))))
|
||||
(set! count (+ count 1))
|
||||
#f))
|
||||
|
||||
(display count)
|
||||
|
|
|
@ -10,19 +10,19 @@
|
|||
|
||||
(define v 0)
|
||||
(for ([t (in-lines)])
|
||||
(when (string-prefix? t "up")
|
||||
(set! v (string->number (string-trim t "up ")))
|
||||
(set! d (- d v))
|
||||
(set! aim (- aim v)))
|
||||
(when (string-prefix? t "down")
|
||||
(set! v (string->number (string-trim t "down ")))
|
||||
(set! d (+ d v))
|
||||
(set! aim (+ aim v)))
|
||||
(when (string-prefix? t "forward")
|
||||
(set! v (string->number (string-trim t "forward ")))
|
||||
(set! h (+ h v))
|
||||
(set! h2 (+ h2 v))
|
||||
(set! d2 (+ d2 (* aim v)))))
|
||||
(when (string-prefix? t "up")
|
||||
(set! v (string->number (string-trim t "up ")))
|
||||
(set! d (- d v))
|
||||
(set! aim (- aim v)))
|
||||
(when (string-prefix? t "down")
|
||||
(set! v (string->number (string-trim t "down ")))
|
||||
(set! d (+ d v))
|
||||
(set! aim (+ aim v)))
|
||||
(when (string-prefix? t "forward")
|
||||
(set! v (string->number (string-trim t "forward ")))
|
||||
(set! h (+ h v))
|
||||
(set! h2 (+ h2 v))
|
||||
(set! d2 (+ d2 (* aim v)))))
|
||||
|
||||
(display (* h d))
|
||||
(display " ")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#lang racket
|
||||
#lang racket/base
|
||||
|
||||
(require gtp-util)
|
||||
|
||||
|
@ -12,13 +12,13 @@
|
|||
|
||||
(define binary-len 0)
|
||||
(for ([t (in-lines)])
|
||||
(define l (string->list t))
|
||||
(for ([v (enumerate (reverse l))])
|
||||
(set! binary-len (+ 1 (car v))) ; will take the last index
|
||||
(when (equal? #\1 (cdr v))
|
||||
(define index (- (- len (car v)) 1))
|
||||
(vector-set! onecount index (add1 (vector-ref onecount index)))))
|
||||
(set! slist (cons (list->vector l) slist)))
|
||||
(define l (string->list t))
|
||||
(for ([v (enumerate (reverse l))])
|
||||
(set! binary-len (+ 1 (car v))) ; will take the last index
|
||||
(when (equal? #\1 (cdr v))
|
||||
(define index (- (- len (car v)) 1))
|
||||
(vector-set! onecount index (add1 (vector-ref onecount index)))))
|
||||
(set! slist (cons (list->vector l) slist)))
|
||||
|
||||
(display " binary-len: ")
|
||||
(display binary-len)
|
||||
|
@ -34,11 +34,11 @@
|
|||
(define (bit-criteria lines pos bias)
|
||||
(define count (for/sum ([t lines] #:when (equal? (vector-ref t pos) #\1)) 1))
|
||||
(if (>= (* 2 count) (length lines))
|
||||
(if (equal? 1 bias) #\1 #\0)
|
||||
(if (equal? 1 bias) #\0 #\1)))
|
||||
(if (equal? 1 bias) #\1 #\0)
|
||||
(if (equal? 1 bias) #\0 #\1)))
|
||||
(define (select-lines lines pos value)
|
||||
(filter (lambda (x) (equal? value (vector-ref x pos))) lines))
|
||||
;(for/list ([t lines] #:when (equal? value (vector-ref t pos))) t))
|
||||
;(for/list ([t lines] #:when (equal? value (vector-ref t pos))) t))
|
||||
|
||||
; part 1 variables
|
||||
(define gamma (make-vector binary-len #\0))
|
||||
|
@ -48,16 +48,16 @@
|
|||
(define co2 slist)
|
||||
|
||||
(for ([index (in-range binary-len)])
|
||||
(define v (vector-ref onecount (+ index (- len binary-len))))
|
||||
(if (>= (* 2 v) (length slist))
|
||||
(vector-set! gamma index #\1)
|
||||
(vector-set! epsilon index #\1))
|
||||
(when (> (length oxygen) 1)
|
||||
(define c (bit-criteria oxygen index 1))
|
||||
(set! oxygen (select-lines oxygen index c)))
|
||||
(when (> (length co2) 1)
|
||||
(define c (bit-criteria co2 index 0))
|
||||
(set! co2 (select-lines co2 index c))))
|
||||
(define v (vector-ref onecount (+ index (- len binary-len))))
|
||||
(if (>= (* 2 v) (length slist))
|
||||
(vector-set! gamma index #\1)
|
||||
(vector-set! epsilon index #\1))
|
||||
(when (> (length oxygen) 1)
|
||||
(define c (bit-criteria oxygen index 1))
|
||||
(set! oxygen (select-lines oxygen index c)))
|
||||
(when (> (length co2) 1)
|
||||
(define c (bit-criteria co2 index 0))
|
||||
(set! co2 (select-lines co2 index c))))
|
||||
|
||||
(display " res1: ")
|
||||
(display (* (binary-vector-to-num gamma) (binary-vector-to-num epsilon)))
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
(define (make-line t)
|
||||
(define l (string-split t))
|
||||
(for/vector ([v l])
|
||||
(mcons (string->number v) 0)))
|
||||
(mcons (string->number v) 0)))
|
||||
|
||||
(define slist null)
|
||||
(for ([t (in-lines)])
|
||||
(define entry (list->vector (map (lambda(x)(make-line x)) (for/list ([c (in-range size)]) (read-line)))))
|
||||
(set! slist (append slist (list entry))))
|
||||
(define entry (list->vector (map (lambda(x)(make-line x)) (for/list ([c (in-range size)]) (read-line)))))
|
||||
(set! slist (append slist (list entry))))
|
||||
|
||||
(define (accessb b l c)
|
||||
(vector-ref (vector-ref b l) c))
|
||||
|
@ -21,31 +21,31 @@
|
|||
(define (check-board b)
|
||||
(define flag #f)
|
||||
(for ([v (in-range size)] #:break flag)
|
||||
(define count-l (for/sum ([index (in-range size)]) (mcdr (accessb b v index))))
|
||||
(define count-c (for/sum ([index (in-range size)]) (mcdr (accessb b index v))))
|
||||
(set! flag (or (equal? count-c size) (equal? count-l size))))
|
||||
(define count-l (for/sum ([index (in-range size)]) (mcdr (accessb b v index))))
|
||||
(define count-c (for/sum ([index (in-range size)]) (mcdr (accessb b index v))))
|
||||
(set! flag (or (equal? count-c size) (equal? count-l size))))
|
||||
flag)
|
||||
|
||||
(define (find-value b v)
|
||||
(define answer null)
|
||||
(for ([l (in-range size)] #:break (not (null? answer)))
|
||||
(for ([c (in-range size)] #:break (not (null? answer)))
|
||||
(when (equal? (mcar (accessb b l c)) v)
|
||||
(set! answer (cons l c)))))
|
||||
(for ([c (in-range size)] #:break (not (null? answer)))
|
||||
(when (equal? (mcar (accessb b l c)) v)
|
||||
(set! answer (cons l c)))))
|
||||
answer)
|
||||
|
||||
(define (get-points b n)
|
||||
(* n (for*/sum ([l (in-range size)] [c (in-range size)])
|
||||
(define v (accessb b l c))
|
||||
(if (equal? (mcdr v) 1) 0 (mcar v)))))
|
||||
(define v (accessb b l c))
|
||||
(if (equal? (mcdr v) 1) 0 (mcar v)))))
|
||||
|
||||
; we'll pick the first and last results from this
|
||||
(for ([n nlist] #:break (null? slist))
|
||||
(for ([b slist])
|
||||
(define p (find-value b n))
|
||||
(unless (null? p)
|
||||
(set-mcdr! (vector-ref (vector-ref b (car p)) (cdr p)) 1))
|
||||
(when (check-board b)
|
||||
(set! slist (remq b slist))
|
||||
(display "\nwon: ")
|
||||
(display (get-points b n)))))
|
||||
(for ([b slist])
|
||||
(define p (find-value b n))
|
||||
(unless (null? p)
|
||||
(set-mcdr! (vector-ref (vector-ref b (car p)) (cdr p)) 1))
|
||||
(when (check-board b)
|
||||
(set! slist (remq b slist))
|
||||
(display "\nwon: ")
|
||||
(display (get-points b n)))))
|
||||
|
|
|
@ -38,17 +38,17 @@
|
|||
(define p1 (car v))
|
||||
(define p2 (cdrm v))
|
||||
(if (equal-x p1 p2)
|
||||
(iterate-y p1 p2)
|
||||
(iterate-x p1 p2)))
|
||||
(iterate-y p1 p2)
|
||||
(iterate-x p1 p2)))
|
||||
|
||||
(define (process-v2 v)
|
||||
(define p1 (car v))
|
||||
(define p2 (cdrm v))
|
||||
(if (equal-x p1 p2)
|
||||
(iterate-y p1 p2)
|
||||
(if (equal-y p1 p2)
|
||||
(iterate-x p1 p2)
|
||||
(iterate-xy p1 p2))))
|
||||
(iterate-y p1 p2)
|
||||
(if (equal-y p1 p2)
|
||||
(iterate-x p1 p2)
|
||||
(iterate-xy p1 p2))))
|
||||
|
||||
(define h1 (make-hash))
|
||||
(define h2 (make-hash))
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
#lang racket
|
||||
|
||||
(define first-initial-days 8)
|
||||
(define initial-days 6)
|
||||
|
||||
(define (make-line t)
|
||||
(map string->number (string-split t ",")))
|
||||
|
||||
(define slist (make-line (read-line)))
|
||||
(define sv (make-vector 9))
|
||||
(for ([d slist]) (vector-set! sv d (add1 (vector-ref sv d))))
|
||||
|
||||
(define (total-fish vec)
|
||||
(for/sum ([v vec]) v))
|
||||
|
||||
; input desired days HERE
|
||||
(for ([i (in-range 256)])
|
||||
(define holder (vector-ref sv 0))
|
||||
(for ([j (in-range 1 9)])
|
||||
(vector-set! sv (sub1 j) (vector-ref sv j)))
|
||||
(vector-set! sv 6 (+ (vector-ref sv 6) holder))
|
||||
(vector-set! sv 8 holder))
|
||||
|
||||
(total-fish sv)
|
|
@ -0,0 +1 @@
|
|||
3,4,3,1,2
|
|
@ -0,0 +1 @@
|
|||
1,1,1,1,1,1,1,4,1,2,1,1,4,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,3,1,1,2,1,2,1,3,3,4,1,4,1,1,3,1,1,5,1,1,1,1,4,1,1,5,1,1,1,4,1,5,1,1,1,3,1,1,5,3,1,1,1,1,1,4,1,1,1,1,1,2,4,1,1,1,1,4,1,2,2,1,1,1,3,1,2,5,1,4,1,1,1,3,1,1,4,1,1,1,1,1,1,1,4,1,1,4,1,1,1,1,1,1,1,2,1,1,5,1,1,1,4,1,1,5,1,1,5,3,3,5,3,1,1,1,4,1,1,1,1,1,1,5,3,1,2,1,1,1,4,1,3,1,5,1,1,2,1,1,1,1,1,5,1,1,1,1,1,2,1,1,1,1,4,3,2,1,2,4,1,3,1,5,1,2,1,4,1,1,1,1,1,3,1,4,1,1,1,1,3,1,3,3,1,4,3,4,1,1,1,1,5,1,3,3,2,5,3,1,1,3,1,3,1,1,1,1,4,1,1,1,1,3,1,5,1,1,1,4,4,1,1,5,5,2,4,5,1,1,1,1,5,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,5,1,1,1,1,1,1,3,1,1,2,1,1
|
Loading…
Reference in New Issue