d10 p1
parent
285da9a99a
commit
3d0609e96a
@ -0,0 +1,76 @@
|
||||
#lang br
|
||||
(require racket/file rackunit)
|
||||
|
||||
(define (string->asteroids str)
|
||||
(for*/list ([(row ridx) (in-indexed (string-split str))]
|
||||
[(col cidx) (in-indexed row)]
|
||||
#:when (char=? #\# col))
|
||||
(+ cidx (* +i ridx))))
|
||||
|
||||
(define ((count-visible roids) roid-origin)
|
||||
(length (remove-duplicates (for/list ([roid (in-list roids)]
|
||||
#:unless (= roid-origin roid))
|
||||
(angle (- roid roid-origin))))))
|
||||
|
||||
(define (find-best roids)
|
||||
(argmax (count-visible roids) roids))
|
||||
|
||||
(check-equal? (find-best (string->asteroids "......#.#.
|
||||
#..#.#....
|
||||
..#######.
|
||||
.#.#.###..
|
||||
.#..#.....
|
||||
..#....#.#
|
||||
#..#....#.
|
||||
.##.#..###
|
||||
##...#..#.
|
||||
.#....####")) 5+8i)
|
||||
|
||||
(check-equal? (find-best (string->asteroids "#.#...#.#.
|
||||
.###....#.
|
||||
.#....#...
|
||||
##.#.#.#.#
|
||||
....#.#.#.
|
||||
.##..###.#
|
||||
..#...##..
|
||||
..##....##
|
||||
......#...
|
||||
.####.###.")) 1+2i)
|
||||
|
||||
(check-equal? (find-best (string->asteroids ".#..#..###
|
||||
####.###.#
|
||||
....###.#.
|
||||
..###.##.#
|
||||
##.##.#.#.
|
||||
....###..#
|
||||
..#.#..#.#
|
||||
#..#.#.###
|
||||
.##...##.#
|
||||
.....#.#..")) 6+3i)
|
||||
|
||||
(check-equal? (find-best (string->asteroids ".#..##.###...#######
|
||||
##.############..##.
|
||||
.#.######.########.#
|
||||
.###.#######.####.#.
|
||||
#####.##.#.##.###.##
|
||||
..#####..#.#########
|
||||
####################
|
||||
#.####....###.#.#.##
|
||||
##.#################
|
||||
#####.##.###..####..
|
||||
..######..##.#######
|
||||
####.##.####...##..#
|
||||
.#####..#.######.###
|
||||
##...#.##########...
|
||||
#.##########.#######
|
||||
.####.#.###.###.#.##
|
||||
....##.##.###..#####
|
||||
.#.#.###########.###
|
||||
#.#.#.#####.####.###
|
||||
###.##.####.##.#..##")) 11+13i)
|
||||
|
||||
;; 1
|
||||
(define roids (string->asteroids (file->string "10.rktd")))
|
||||
(check-eq?
|
||||
((count-visible roids) (find-best roids))
|
||||
214)
|
@ -0,0 +1,20 @@
|
||||
.###.###.###.#####.#
|
||||
#####.##.###..###..#
|
||||
.#...####.###.######
|
||||
######.###.####.####
|
||||
#####..###..########
|
||||
#.##.###########.#.#
|
||||
##.###.######..#.#.#
|
||||
.#.##.###.#.####.###
|
||||
##..#.#.##.#########
|
||||
###.#######.###..##.
|
||||
###.###.##.##..####.
|
||||
.##.####.##########.
|
||||
#######.##.###.#####
|
||||
#####.##..####.#####
|
||||
##.#.#####.##.#.#..#
|
||||
###########.#######.
|
||||
#.##..#####.#####..#
|
||||
#####..#####.###.###
|
||||
####.#.############.
|
||||
####.#.#.##########.
|
Reference in New Issue