Compare commits
No commits in common. "3024e45da73e6da4ac335622e11140e2c3c00141" and "c4c585b385024e5b5988bc853f1527061b3f6a4f" have entirely different histories.
3024e45da7
...
c4c585b385
140
11/input.txt
140
11/input.txt
@ -1,140 +0,0 @@
|
|||||||
..........................#.........................#........................................................#..............................
|
|
||||||
.............#.....................................................#.........#......................#.......................................
|
|
||||||
..................................#....................................................................................#...........#........
|
|
||||||
....................#..........................#..................................................................#.........................
|
|
||||||
.......................................................#...............................................................................#....
|
|
||||||
.....................................#.........................#......#..............#......................................................
|
|
||||||
........#...............#......................................................#..........#................................#...............#
|
|
||||||
.........................................#................#..............................................#............#.....................
|
|
||||||
....#............................#..........................................................................................................
|
|
||||||
............#......................................#..............................................#............#............................
|
|
||||||
......................#.....................................................................#...............................................
|
|
||||||
.............................................................................#........#.........................................#...........
|
|
||||||
.................#.....................................................#.................................................#..............#...
|
|
||||||
................................#....................#.................................................#....................................
|
|
||||||
.......................................#.............................................................................#......................
|
|
||||||
..#.....................#...................................................................................................................
|
|
||||||
............................................#.....................#...........#.....................#.......................................
|
|
||||||
..................................................................................................................#..................#......
|
|
||||||
....................................#....................#................................................................................#.
|
|
||||||
.........#.....................................#..............#......................#......................................#...............
|
|
||||||
..............#..........................................................#......................#.....#.....................................
|
|
||||||
.......................................................................................................................................#....
|
|
||||||
..................................................................#.........................#...................#...........................
|
|
||||||
....#............................#.....#.....................................#................................................#.............
|
|
||||||
.......................#..........................#.........................................................................................
|
|
||||||
..................................................................................#.....#...................#.............#.................
|
|
||||||
................#.............................................#.................................#...........................................
|
|
||||||
#.....................................................................................................#...................................#.
|
|
||||||
...........#..............#.....#.............#.....................................................................#.......................
|
|
||||||
...........................................................................#................#.....................................#.........
|
|
||||||
...................................................#........................................................................................
|
|
||||||
..............#....................................................................................#........................................
|
|
||||||
.....................................#................................................#.......................#.............................
|
|
||||||
.....................................................................................................................................#.....#
|
|
||||||
........#................#....................................#.................................#.........#.................................
|
|
||||||
....................................................#..............#............#....................................#......................
|
|
||||||
....#...............#........#..........................................................#.......................................#...........
|
|
||||||
..........................................#.....#.......................#..........................#.....................................#..
|
|
||||||
.......................................................#....................................................................................
|
|
||||||
#......#...................................................................................................................#................
|
|
||||||
............#...............................................................................#..........#..........................#.........
|
|
||||||
............................................................................................................#...............................
|
|
||||||
.....................................#....................#........#............................#...........................................
|
|
||||||
........................#...........................................................#................................#....................#.
|
|
||||||
......#...............................................#.....................#........................#......................................
|
|
||||||
.................................#.....................................#..................................................#.................
|
|
||||||
...................#......................#..................#..........................#.............................................#.....
|
|
||||||
.............................#.....................#..............#...........................................#.............................
|
|
||||||
.........................................................#.......................................................................#..........
|
|
||||||
...............................................................................#.......................#.................................#..
|
|
||||||
............................................................................................................................................
|
|
||||||
............................................................................................................................................
|
|
||||||
.................#.............................................................................................#.......#.............#......
|
|
||||||
....#.....#....................................................#........#...............#....................................#..............
|
|
||||||
..................................#..........#........................................................#.....................................
|
|
||||||
............................................................................................................................................
|
|
||||||
...................#..............................................................................#......................#..................
|
|
||||||
............................................................................................................................................
|
|
||||||
..#..............................................#......#.....#...........................#..............#....................#.............
|
|
||||||
................#......#.........#..........................................................................................................
|
|
||||||
.........................................................................#......................................#.........................#.
|
|
||||||
....................................................#..............#............................#...........................................
|
|
||||||
.....#....................#..........................................................................#......................................
|
|
||||||
............#...........................#......#............................................................................................
|
|
||||||
............................................................................................................................................
|
|
||||||
.....................#.........................................................#.........................#........#.............#...........
|
|
||||||
.........#..............................................................#.....................#..........................................#..
|
|
||||||
......................................#...........#.....................................#...................................................
|
|
||||||
.#...............................#..........................................................................................................
|
|
||||||
..............#............#....................................#..................................#........................#...............
|
|
||||||
.....................................................................#...........................................#..........................
|
|
||||||
............................................................................................................................................
|
|
||||||
.........#........#........................#.....#........................#.......................................................#.....#...
|
|
||||||
............................................................................................................................................
|
|
||||||
...................................#........................................................................................................
|
|
||||||
..............#..........#..............#....................................#..........#.....#.............................................
|
|
||||||
....#........................................#............#...................................................................#.............
|
|
||||||
............................................................................................................................................
|
|
||||||
#........#......................................................#........#.................................................................#
|
|
||||||
....................#.........#..........................................................................#.......#......#...................
|
|
||||||
............................................................................................................................................
|
|
||||||
.......................................#..............#...........................................#.........................................
|
|
||||||
................................................#.............................................................#.......................#.....
|
|
||||||
.......................#...................#..............................#.................................................................
|
|
||||||
...............#...................#....................................................#.............................#.....................
|
|
||||||
....#......................................................................................................#................................
|
|
||||||
.............................#.........................................#....................#.............................#.....#...........
|
|
||||||
..............................................#..................................................#...................................#......
|
|
||||||
...................#...................#..........................................#.................................#.......................
|
|
||||||
............#.....................#....................#..................#.................................................................
|
|
||||||
...........................................#........................................................#.......................................
|
|
||||||
...........................................................................................................#................................
|
|
||||||
...#............................................................#.............................................................#.............
|
|
||||||
.........................#..............................................................#................................................#..
|
|
||||||
...............#............................................................................................................................
|
|
||||||
.......................................#.......#.............#..............................................................................
|
|
||||||
.....................#...........#.............................................#............#.................#.........#...........#.......
|
|
||||||
..........................................................................#.......................#.........................................
|
|
||||||
.......#............................................................................#.......................................................
|
|
||||||
....................................................#....................................................................................#..
|
|
||||||
.................#........................................#.....#...........................................................#...............
|
|
||||||
.#.........#..................................#.................................#..............#.........#.....#......#.....................
|
|
||||||
.....................#............#.......................................................#.........#.......................................
|
|
||||||
............................................................................#.......................................................#.......
|
|
||||||
.....................................................................................#....................................#.................
|
|
||||||
............................#................................................................#..................................#...........
|
|
||||||
.....#.........................................................#............................................................................
|
|
||||||
......................#..................#............................................................................#.....................
|
|
||||||
................................................................................#.....................................................#.....
|
|
||||||
#.................................#.......................................#.................................................................
|
|
||||||
...................#......#.......................#...............#...........................................#.............................
|
|
||||||
.............................................................#........................................#......................#..............
|
|
||||||
.................................................................................................#..........................................
|
|
||||||
..#..................................#....................................................................#......#..................#.......
|
|
||||||
..........................................................#..................#........................................#.....................
|
|
||||||
..................#........#........................................................#..........................................#............
|
|
||||||
.................................#.............#.......................#...................................................................#
|
|
||||||
................................................................................................#.........................#.................
|
|
||||||
....#.....#.................................................................................................................................
|
|
||||||
.......................#....................................................#...............................................................
|
|
||||||
....................................................#.......................................................................................
|
|
||||||
.............#..............................#..........................................#....................................................
|
|
||||||
...............................#............................................................................................#........#......
|
|
||||||
.#.......................................................#.........#...........#.................................#..........................
|
|
||||||
....................................#.............#..............................................................................#..........
|
|
||||||
.....................#.........................................................................#......#.....................................
|
|
||||||
..........................#...........................#.........#.................#.........................................................
|
|
||||||
..........#.................................#................................#..............................................................
|
|
||||||
....#...........................................................................................................#..................#........
|
|
||||||
........................................................................#..............#.....................................#..............
|
|
||||||
..................#.......................................#.................................................................................
|
|
||||||
........................................................................................................................................#...
|
|
||||||
....................................................#.......................#..........................#....................................
|
|
||||||
.....#..............................#.........................#..................................#..........................................
|
|
||||||
..........................#............................................#........................................#.......#...................
|
|
||||||
..........................................#.................................................................................................
|
|
||||||
......................................................................................................................................#.....
|
|
||||||
.......#...........................................#................................#........................................#..............
|
|
||||||
#..................#..........................#..........................#.....#............................#...............................
|
|
||||||
...................................#.....................................................................................#..................
|
|
34
11/part1.pl
34
11/part1.pl
@ -1,34 +0,0 @@
|
|||||||
:- 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
34
11/part2.pl
@ -1,34 +0,0 @@
|
|||||||
:- 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
10
11/test.txt
@ -1,10 +0,0 @@
|
|||||||
...#......
|
|
||||||
.......#..
|
|
||||||
#.........
|
|
||||||
..........
|
|
||||||
......#...
|
|
||||||
.#........
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
.......#..
|
|
||||||
#...#.....
|
|
Loading…
Reference in New Issue
Block a user