day 11: flop
This commit is contained in:
parent
b9ec918dd5
commit
ad20b4a9ed
|
@ -0,0 +1,57 @@
|
|||
#lang curly-fn racket
|
||||
|
||||
(require "scripts/aoc.rkt")
|
||||
|
||||
;; solution for day 11
|
||||
|
||||
(define (expand universe [amount 1])
|
||||
(define width
|
||||
(add1 (apply max (set-map universe car))))
|
||||
(define height
|
||||
(add1 (apply max (set-map universe cdr))))
|
||||
|
||||
(define (has-y? y)
|
||||
(for/or ([pt (in-set universe)])
|
||||
(= (cdr pt) y)))
|
||||
|
||||
(define (has-x? x)
|
||||
(for/or ([pt (in-set universe)])
|
||||
(= (car pt) x)))
|
||||
|
||||
(define empty-rows
|
||||
(for/list ([y (in-range height)]
|
||||
#:unless (has-y? y))
|
||||
y))
|
||||
|
||||
(define empty-cols
|
||||
(for/list ([x (in-range width)]
|
||||
#:unless (has-x? x))
|
||||
x))
|
||||
|
||||
(for/set ([pt (in-set universe)])
|
||||
(define x-offset (count #{< % (car pt)} empty-cols))
|
||||
(define y-offset (count #{< % (cdr pt)} empty-rows))
|
||||
(cons (+ (car pt) (* amount x-offset)) (+ (cdr pt) (* amount y-offset)))))
|
||||
|
||||
(define (part1 input [amount 1])
|
||||
(define expanded (expand input amount))
|
||||
(/ (for*/sum ([a (in-set expanded)] [b (in-set expanded)])
|
||||
(+ (abs (- (car a) (car b)))
|
||||
(abs (- (cdr a) (cdr b)))))
|
||||
2))
|
||||
|
||||
(define (part2 input)
|
||||
(part1 input (sub1 1000000)))
|
||||
|
||||
(define (parse fname)
|
||||
(for/set ([line (in-list (file->lines fname))] [y (in-naturals)]
|
||||
#:do []
|
||||
[char (in-string line)] [x (in-naturals)]
|
||||
#:when (eq? char #\#))
|
||||
(cons x y)))
|
||||
|
||||
(module+ main
|
||||
(define input (parse "inputs/11"))
|
||||
(answer 11 1 (time (part1 input)))
|
||||
(answer 11 2 (time (part2 input)))
|
||||
(displayln "meow"))
|
|
@ -0,0 +1,140 @@
|
|||
.....#...............#......................................................................#.............................#..........#......
|
||||
........................................#............................#......#...............................................................
|
||||
..............................#..............#....................................#..............................................#..........
|
||||
..............#........................................................................#....................................................
|
||||
..#...........................................................................................#.............................................
|
||||
..................#.....................................#.....#......................................#.........#.......#....................
|
||||
...........#......................................#.....................#...........#................................................#......
|
||||
.............................#............................................................#.....................................#...........
|
||||
.....#..................#.................#.........................#......................................#................................
|
||||
....................................#.................#........................#..........................................................#.
|
||||
................#..............................#....................................................#.......................................
|
||||
..............................................................#.........................#.......................#.....................#.....
|
||||
............#...............#......................#.....................#..............................#...................................
|
||||
......................................#...............................................................................#.....................
|
||||
.........................................................#..................................................................................
|
||||
..............................................#.............................................................................................
|
||||
..#.................#.....................................................................#.....#..........#..............#......#..........
|
||||
..............................................................................#.............................................................
|
||||
..........................................#.........................#..............................................#........................
|
||||
.....#........#.............#...........................#...........................................#.......................................
|
||||
..................................#...............#.............#.................#..........................#.....................#........
|
||||
.......................................................................#....................................................................
|
||||
...............................................................................................................................#.........#..
|
||||
#.......................................#....................................................#.........................#....................
|
||||
........#...............#....................................#...........................................#..................................
|
||||
...............................#............................................................................................................
|
||||
.........................................................#..................................................................................
|
||||
..#..........................................#........................................#.............#............................#..........
|
||||
......................#............................#.................#........#.............................................................
|
||||
.........#.......#...........................................................................#.....................#.........#.........#....
|
||||
................................#............................................................................#..............................
|
||||
.........................................................................................#..................................................
|
||||
.#.........................................#.........#..........#.......................................................#...................
|
||||
....................#.................#...............................................................#.....................................
|
||||
............................................................................#...............................................................
|
||||
........................#.........................................................................................#.................#.......
|
||||
.............#.......................................................#......................................................#...............
|
||||
.......#.................................#.....#..............................................................#.............................
|
||||
#...............................#...............................................................#.....................#.....................
|
||||
.....................................#...................#.......................#.....#.......................................#............
|
||||
..........................#.................#......#...................................................................................#....
|
||||
..............#.............................................................................................................................
|
||||
...#..........................................................................#............................................#................
|
||||
.............................................................................................#.....................#......................#.
|
||||
.......................................#..........................................................................................#.........
|
||||
.......................................................................................................#....................................
|
||||
.....#.........#.................#.................#............#.........................#.................#...............................
|
||||
............................#.....................................................#.........................................................
|
||||
...........................................#................................................................................................
|
||||
....................................#.......................#.........................#............................#.....#..................
|
||||
............................................................................................................................................
|
||||
.....................#..................#................................#......#.....................................................#.....
|
||||
.......................................................#.........#...............................#.....#....................................
|
||||
............#.................................................................................................................#.............
|
||||
..............................................#..............#.......#.................................................#....................
|
||||
................................................................................................................#...........................
|
||||
.........#.............................................................................#............#.......................................
|
||||
.............................#...........................................#.....#............................................................
|
||||
.....#..........#.....#...........#.............#.....#.............................................................................#.......
|
||||
...........................................#............................................................#.....#.............................
|
||||
......................................#.........................#.........................#.....................................#...........
|
||||
............................................................................................................................................
|
||||
.......#.....#.....#........................................#.................................#.............................................
|
||||
.........................................#................................................................#.....#......#....................
|
||||
........................#.......#..................#.................................#.......................................#.......#......
|
||||
..............................................#.............................................................................................
|
||||
...............................................................................#............................................................
|
||||
......................................................#..........#..........................................................................
|
||||
...#......#.................#.............#.............................#..........................#...............................#........
|
||||
.............................................................#........................#..........................#.........#................
|
||||
......................................#....................................................#.............................................#..
|
||||
............................................................................................................................................
|
||||
...............#......#.......................#.....#.......................................................#...............................
|
||||
.#......#.......................#.........................#.......#....................................#....................................
|
||||
...............................................................................................#........................#......#.......#....
|
||||
............#...............#............#....................#........#..........#.........................................................
|
||||
...............................................................................................................#............................
|
||||
..........................................................................................................#.................#...............
|
||||
......................#........#.........................................................................................................#..
|
||||
....................................................................................#.....#.....#....................#......................
|
||||
.#.........#...............#........................................#...............................................................#.......
|
||||
..................#......................................................#..........................#.......................................
|
||||
.................................#.............#................................................................#.......#...................
|
||||
........................#......................................................#..............#................................#............
|
||||
.....#..........................................................#.....#.................#..................................................#
|
||||
.....................................#......#.........#...............................................#.....................................
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
.................................#..........................................#................#...................#..............#...........
|
||||
.......#....................#............#.............................................#...................................#................
|
||||
..#................#........................................#.......#..............................#........................................
|
||||
........................#...........................................................................................................#.......
|
||||
...........#..........................................#.........................#......................#....................................
|
||||
...........................................#................................................................................................
|
||||
......#...............................................................................#.........#...........................................
|
||||
............................#.....................#................#........................................#...........#...................
|
||||
..................#.........................................#...............................................................................
|
||||
........................#...............#................................#.......#..............................#............#..............
|
||||
............#......................#.................#..................................................#..................................#
|
||||
..#................................................................................................#........................................
|
||||
.........................................................................................................................#..................
|
||||
..................................................................#................................................#................#.......
|
||||
.......#.....................................#..............................................................................................
|
||||
.................#...............#......#.....................#.............................................................................
|
||||
....................................................................................#..................................#....................
|
||||
..............................................................................................#............#................................
|
||||
....#......................#................................................................................................................
|
||||
......................................................#.................................#..........................#.............#..........
|
||||
..........#.................................................................................................................#...............
|
||||
.................................#..........#..................................#............................................................
|
||||
.......................................................................................................................................#....
|
||||
.......................................#..................................................................#......#..........................
|
||||
.............................#.........................................................#.......#............................................
|
||||
.........#....................................#............#.................................................................#..............
|
||||
...#...............................................................................#.................#......................................
|
||||
..................................................................................................................................#.........
|
||||
....................#.............#...................................................................................#....................#
|
||||
....................................................#...........#...........#...............................................................
|
||||
.........................................................................................................#..................................
|
||||
..........#...............................#............................#....................................................................
|
||||
.............................................................#....................#.............................#..............#............
|
||||
.#...............#..........................................................................#..........................................#....
|
||||
............................#...............................................................................................................
|
||||
............#......................................#............#..................................................................#........
|
||||
.......#...............................................................................................................#....................
|
||||
..................................#.......#..........................#........#...............#..........#....................#.............
|
||||
....................#....................................#............................#..........................#.......................#..
|
||||
..............................................................#.............................................................................
|
||||
..#............................#............................................................................#...............................
|
||||
..............#.....................#...............................................................................................#.......
|
||||
..........................#........................................#....................................#...........#.......................
|
||||
..........................................#.................................#.................#.............................................
|
||||
................................................#...........#..........#.....................................................#..............
|
||||
.........#..................................................................................................................................
|
||||
...................................................................................#............................#.......#...................
|
||||
....#.............................#.............................#.......................................................................#...
|
||||
.........................................#.........................................................#........................................
|
||||
....................#...........................................................................................................#...........
|
||||
..............#........................................#..................................#...................#......................#......
|
||||
.........#.................#........................................#...........#........................................#..................
|
|
@ -0,0 +1,10 @@
|
|||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
Loading…
Reference in New Issue