Compare commits
2 Commits
c4c585b385
...
3024e45da7
Author | SHA1 | Date | |
---|---|---|---|
3024e45da7 | |||
464d12cea0 |
140
11/input.txt
Normal file
140
11/input.txt
Normal file
@ -0,0 +1,140 @@
|
||||
..........................#.........................#........................................................#..............................
|
||||
.............#.....................................................#.........#......................#.......................................
|
||||
..................................#....................................................................................#...........#........
|
||||
....................#..........................#..................................................................#.........................
|
||||
.......................................................#...............................................................................#....
|
||||
.....................................#.........................#......#..............#......................................................
|
||||
........#...............#......................................................#..........#................................#...............#
|
||||
.........................................#................#..............................................#............#.....................
|
||||
....#............................#..........................................................................................................
|
||||
............#......................................#..............................................#............#............................
|
||||
......................#.....................................................................#...............................................
|
||||
.............................................................................#........#.........................................#...........
|
||||
.................#.....................................................#.................................................#..............#...
|
||||
................................#....................#.................................................#....................................
|
||||
.......................................#.............................................................................#......................
|
||||
..#.....................#...................................................................................................................
|
||||
............................................#.....................#...........#.....................#.......................................
|
||||
..................................................................................................................#..................#......
|
||||
....................................#....................#................................................................................#.
|
||||
.........#.....................................#..............#......................#......................................#...............
|
||||
..............#..........................................................#......................#.....#.....................................
|
||||
.......................................................................................................................................#....
|
||||
..................................................................#.........................#...................#...........................
|
||||
....#............................#.....#.....................................#................................................#.............
|
||||
.......................#..........................#.........................................................................................
|
||||
..................................................................................#.....#...................#.............#.................
|
||||
................#.............................................#.................................#...........................................
|
||||
#.....................................................................................................#...................................#.
|
||||
...........#..............#.....#.............#.....................................................................#.......................
|
||||
...........................................................................#................#.....................................#.........
|
||||
...................................................#........................................................................................
|
||||
..............#....................................................................................#........................................
|
||||
.....................................#................................................#.......................#.............................
|
||||
.....................................................................................................................................#.....#
|
||||
........#................#....................................#.................................#.........#.................................
|
||||
....................................................#..............#............#....................................#......................
|
||||
....#...............#........#..........................................................#.......................................#...........
|
||||
..........................................#.....#.......................#..........................#.....................................#..
|
||||
.......................................................#....................................................................................
|
||||
#......#...................................................................................................................#................
|
||||
............#...............................................................................#..........#..........................#.........
|
||||
............................................................................................................#...............................
|
||||
.....................................#....................#........#............................#...........................................
|
||||
........................#...........................................................#................................#....................#.
|
||||
......#...............................................#.....................#........................#......................................
|
||||
.................................#.....................................#..................................................#.................
|
||||
...................#......................#..................#..........................#.............................................#.....
|
||||
.............................#.....................#..............#...........................................#.............................
|
||||
.........................................................#.......................................................................#..........
|
||||
...............................................................................#.......................#.................................#..
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
.................#.............................................................................................#.......#.............#......
|
||||
....#.....#....................................................#........#...............#....................................#..............
|
||||
..................................#..........#........................................................#.....................................
|
||||
............................................................................................................................................
|
||||
...................#..............................................................................#......................#..................
|
||||
............................................................................................................................................
|
||||
..#..............................................#......#.....#...........................#..............#....................#.............
|
||||
................#......#.........#..........................................................................................................
|
||||
.........................................................................#......................................#.........................#.
|
||||
....................................................#..............#............................#...........................................
|
||||
.....#....................#..........................................................................#......................................
|
||||
............#...........................#......#............................................................................................
|
||||
............................................................................................................................................
|
||||
.....................#.........................................................#.........................#........#.............#...........
|
||||
.........#..............................................................#.....................#..........................................#..
|
||||
......................................#...........#.....................................#...................................................
|
||||
.#...............................#..........................................................................................................
|
||||
..............#............#....................................#..................................#........................#...............
|
||||
.....................................................................#...........................................#..........................
|
||||
............................................................................................................................................
|
||||
.........#........#........................#.....#........................#.......................................................#.....#...
|
||||
............................................................................................................................................
|
||||
...................................#........................................................................................................
|
||||
..............#..........#..............#....................................#..........#.....#.............................................
|
||||
....#........................................#............#...................................................................#.............
|
||||
............................................................................................................................................
|
||||
#........#......................................................#........#.................................................................#
|
||||
....................#.........#..........................................................................#.......#......#...................
|
||||
............................................................................................................................................
|
||||
.......................................#..............#...........................................#.........................................
|
||||
................................................#.............................................................#.......................#.....
|
||||
.......................#...................#..............................#.................................................................
|
||||
...............#...................#....................................................#.............................#.....................
|
||||
....#......................................................................................................#................................
|
||||
.............................#.........................................#....................#.............................#.....#...........
|
||||
..............................................#..................................................#...................................#......
|
||||
...................#...................#..........................................#.................................#.......................
|
||||
............#.....................#....................#..................#.................................................................
|
||||
...........................................#........................................................#.......................................
|
||||
...........................................................................................................#................................
|
||||
...#............................................................#.............................................................#.............
|
||||
.........................#..............................................................#................................................#..
|
||||
...............#............................................................................................................................
|
||||
.......................................#.......#.............#..............................................................................
|
||||
.....................#...........#.............................................#............#.................#.........#...........#.......
|
||||
..........................................................................#.......................#.........................................
|
||||
.......#............................................................................#.......................................................
|
||||
....................................................#....................................................................................#..
|
||||
.................#........................................#.....#...........................................................#...............
|
||||
.#.........#..................................#.................................#..............#.........#.....#......#.....................
|
||||
.....................#............#.......................................................#.........#.......................................
|
||||
............................................................................#.......................................................#.......
|
||||
.....................................................................................#....................................#.................
|
||||
............................#................................................................#..................................#...........
|
||||
.....#.........................................................#............................................................................
|
||||
......................#..................#............................................................................#.....................
|
||||
................................................................................#.....................................................#.....
|
||||
#.................................#.......................................#.................................................................
|
||||
...................#......#.......................#...............#...........................................#.............................
|
||||
.............................................................#........................................#......................#..............
|
||||
.................................................................................................#..........................................
|
||||
..#..................................#....................................................................#......#..................#.......
|
||||
..........................................................#..................#........................................#.....................
|
||||
..................#........#........................................................#..........................................#............
|
||||
.................................#.............#.......................#...................................................................#
|
||||
................................................................................................#.........................#.................
|
||||
....#.....#.................................................................................................................................
|
||||
.......................#....................................................#...............................................................
|
||||
....................................................#.......................................................................................
|
||||
.............#..............................#..........................................#....................................................
|
||||
...............................#............................................................................................#........#......
|
||||
.#.......................................................#.........#...........#.................................#..........................
|
||||
....................................#.............#..............................................................................#..........
|
||||
.....................#.........................................................................#......#.....................................
|
||||
..........................#...........................#.........#.................#.........................................................
|
||||
..........#.................................#................................#..............................................................
|
||||
....#...........................................................................................................#..................#........
|
||||
........................................................................#..............#.....................................#..............
|
||||
..................#.......................................#.................................................................................
|
||||
........................................................................................................................................#...
|
||||
....................................................#.......................#..........................#....................................
|
||||
.....#..............................#.........................#..................................#..........................................
|
||||
..........................#............................................#........................................#.......#...................
|
||||
..........................................#.................................................................................................
|
||||
......................................................................................................................................#.....
|
||||
.......#...........................................#................................#........................................#..............
|
||||
#..................#..........................#..........................#.....#............................#...............................
|
||||
...................................#.....................................................................................#..................
|
34
11/part1.pl
Normal file
34
11/part1.pl
Normal file
@ -0,0 +1,34 @@
|
||||
:- table galaxy/2.
|
||||
:- table no_galaxy_row/2.
|
||||
:- table no_galaxy_col/2.
|
||||
:- use_module(library(pio)).
|
||||
:- initialization(start, main).
|
||||
|
||||
start :-
|
||||
input('input.txt', Map),
|
||||
findall(Dist, distance(Map, _, _, Dist), Dists),
|
||||
sum_list(Dists, Answer),
|
||||
writef('Answer=%w\n', [Answer]).
|
||||
|
||||
distance(Map, X1-Y1, X2-Y2, Dist) :-
|
||||
galaxy(Map, X1-Y1),
|
||||
galaxy(Map, X2-Y2),
|
||||
(X1 < X2; X1 =:= X2, Y1 < Y2),
|
||||
findall(X, no_galaxy_row(Map, X), EmptyXs),
|
||||
findall(Y, no_galaxy_col(Map, Y), EmptyYs),
|
||||
include(between(X1, X2), EmptyXs, ExpandedX), length(ExpandedX, RowsToAdd),
|
||||
include(between(Y1, Y2), EmptyYs, ExpandedY), length(ExpandedY, ColsToAdd),
|
||||
Dist is abs(X1 - X2) + abs(Y1 - Y2) + RowsToAdd + ColsToAdd.
|
||||
|
||||
between(End1, End2, N) :- End1 < N, N < End2; End1 > N, N > End2.
|
||||
no_galaxy_row(Map, X) :- nth0(X, Map, Row), maplist([46]>>(true), Row).
|
||||
no_galaxy_col(Map, Y) :- maplist({Y}/[Row]>>(nth0(Y, Row, 46)), Map).
|
||||
|
||||
galaxy(Map, X-Y) :- nth0(X, Map, Row), nth0(Y, Row, 35).
|
||||
|
||||
input(FileName, Map) :- phrase_from_file(lines(Map), FileName).
|
||||
lines([]) --> eos, !.
|
||||
lines([Line|Lines]) --> line(Line), lines(Lines).
|
||||
eos([], []).
|
||||
line([]) --> ( "\n" ; eos ), !.
|
||||
line([L|Ls]) --> [L], line(Ls).
|
34
11/part2.pl
Normal file
34
11/part2.pl
Normal file
@ -0,0 +1,34 @@
|
||||
:- table galaxy/2.
|
||||
:- table no_galaxy_row/2.
|
||||
:- table no_galaxy_col/2.
|
||||
:- use_module(library(pio)).
|
||||
:- initialization(start, main).
|
||||
|
||||
start :-
|
||||
input('input.txt', Map),
|
||||
findall(Dist, distance(Map, _, _, Dist), Dists),
|
||||
sum_list(Dists, Answer),
|
||||
writef('Answer=%w\n', [Answer]).
|
||||
|
||||
distance(Map, X1-Y1, X2-Y2, Dist) :-
|
||||
galaxy(Map, X1-Y1),
|
||||
galaxy(Map, X2-Y2),
|
||||
(X1 < X2; X1 =:= X2, Y1 < Y2),
|
||||
findall(X, no_galaxy_row(Map, X), EmptyXs),
|
||||
findall(Y, no_galaxy_col(Map, Y), EmptyYs),
|
||||
include(between(X1, X2), EmptyXs, ExpandedX), length(ExpandedX, RowsToAdd),
|
||||
include(between(Y1, Y2), EmptyYs, ExpandedY), length(ExpandedY, ColsToAdd),
|
||||
Dist is abs(X1 - X2) + abs(Y1 - Y2) + RowsToAdd*999999 + ColsToAdd*999999.
|
||||
|
||||
between(End1, End2, N) :- End1 < N, N < End2; End1 > N, N > End2.
|
||||
no_galaxy_row(Map, X) :- nth0(X, Map, Row), maplist([46]>>(true), Row).
|
||||
no_galaxy_col(Map, Y) :- maplist({Y}/[Row]>>(nth0(Y, Row, 46)), Map).
|
||||
|
||||
galaxy(Map, X-Y) :- nth0(X, Map, Row), nth0(Y, Row, 35).
|
||||
|
||||
input(FileName, Map) :- phrase_from_file(lines(Map), FileName).
|
||||
lines([]) --> eos, !.
|
||||
lines([Line|Lines]) --> line(Line), lines(Lines).
|
||||
eos([], []).
|
||||
line([]) --> ( "\n" ; eos ), !.
|
||||
line([L|Ls]) --> [L], line(Ls).
|
10
11/test.txt
Normal file
10
11/test.txt
Normal file
@ -0,0 +1,10 @@
|
||||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
Loading…
Reference in New Issue
Block a user