Compare commits
	
		
			2 Commits
		
	
	
		
			3024e45da7
			...
			330c51da3a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 330c51da3a | |||
| 3e01d3394d | 
							
								
								
									
										140
									
								
								11/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								11/input.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | |||||||
|  | ..........................#.........................#........................................................#.............................. | ||||||
|  | .............#.....................................................#.........#......................#....................................... | ||||||
|  | ..................................#....................................................................................#...........#........ | ||||||
|  | ....................#..........................#..................................................................#......................... | ||||||
|  | .......................................................#...............................................................................#.... | ||||||
|  | .....................................#.........................#......#..............#...................................................... | ||||||
|  | ........#...............#......................................................#..........#................................#...............# | ||||||
|  | .........................................#................#..............................................#............#..................... | ||||||
|  | ....#............................#.......................................................................................................... | ||||||
|  | ............#......................................#..............................................#............#............................ | ||||||
|  | ......................#.....................................................................#............................................... | ||||||
|  | .............................................................................#........#.........................................#........... | ||||||
|  | .................#.....................................................#.................................................#..............#... | ||||||
|  | ................................#....................#.................................................#.................................... | ||||||
|  | .......................................#.............................................................................#...................... | ||||||
|  | ..#.....................#................................................................................................................... | ||||||
|  | ............................................#.....................#...........#.....................#....................................... | ||||||
|  | ..................................................................................................................#..................#...... | ||||||
|  | ....................................#....................#................................................................................#. | ||||||
|  | .........#.....................................#..............#......................#......................................#............... | ||||||
|  | ..............#..........................................................#......................#.....#..................................... | ||||||
|  | .......................................................................................................................................#.... | ||||||
|  | ..................................................................#.........................#...................#........................... | ||||||
|  | ....#............................#.....#.....................................#................................................#............. | ||||||
|  | .......................#..........................#......................................................................................... | ||||||
|  | ..................................................................................#.....#...................#.............#................. | ||||||
|  | ................#.............................................#.................................#........................................... | ||||||
|  | #.....................................................................................................#...................................#. | ||||||
|  | ...........#..............#.....#.............#.....................................................................#....................... | ||||||
|  | ...........................................................................#................#.....................................#......... | ||||||
|  | ...................................................#........................................................................................ | ||||||
|  | ..............#....................................................................................#........................................ | ||||||
|  | .....................................#................................................#.......................#............................. | ||||||
|  | .....................................................................................................................................#.....# | ||||||
|  | ........#................#....................................#.................................#.........#................................. | ||||||
|  | ....................................................#..............#............#....................................#...................... | ||||||
|  | ....#...............#........#..........................................................#.......................................#........... | ||||||
|  | ..........................................#.....#.......................#..........................#.....................................#.. | ||||||
|  | .......................................................#.................................................................................... | ||||||
|  | #......#...................................................................................................................#................ | ||||||
|  | ............#...............................................................................#..........#..........................#......... | ||||||
|  | ............................................................................................................#............................... | ||||||
|  | .....................................#....................#........#............................#........................................... | ||||||
|  | ........................#...........................................................#................................#....................#. | ||||||
|  | ......#...............................................#.....................#........................#...................................... | ||||||
|  | .................................#.....................................#..................................................#................. | ||||||
|  | ...................#......................#..................#..........................#.............................................#..... | ||||||
|  | .............................#.....................#..............#...........................................#............................. | ||||||
|  | .........................................................#.......................................................................#.......... | ||||||
|  | ...............................................................................#.......................#.................................#.. | ||||||
|  | ............................................................................................................................................ | ||||||
|  | ............................................................................................................................................ | ||||||
|  | .................#.............................................................................................#.......#.............#...... | ||||||
|  | ....#.....#....................................................#........#...............#....................................#.............. | ||||||
|  | ..................................#..........#........................................................#..................................... | ||||||
|  | ............................................................................................................................................ | ||||||
|  | ...................#..............................................................................#......................#.................. | ||||||
|  | ............................................................................................................................................ | ||||||
|  | ..#..............................................#......#.....#...........................#..............#....................#............. | ||||||
|  | ................#......#.........#.......................................................................................................... | ||||||
|  | .........................................................................#......................................#.........................#. | ||||||
|  | ....................................................#..............#............................#........................................... | ||||||
|  | .....#....................#..........................................................................#...................................... | ||||||
|  | ............#...........................#......#............................................................................................ | ||||||
|  | ............................................................................................................................................ | ||||||
|  | .....................#.........................................................#.........................#........#.............#........... | ||||||
|  | .........#..............................................................#.....................#..........................................#.. | ||||||
|  | ......................................#...........#.....................................#................................................... | ||||||
|  | .#...............................#.......................................................................................................... | ||||||
|  | ..............#............#....................................#..................................#........................#............... | ||||||
|  | .....................................................................#...........................................#.......................... | ||||||
|  | ............................................................................................................................................ | ||||||
|  | .........#........#........................#.....#........................#.......................................................#.....#... | ||||||
|  | ............................................................................................................................................ | ||||||
|  | ...................................#........................................................................................................ | ||||||
|  | ..............#..........#..............#....................................#..........#.....#............................................. | ||||||
|  | ....#........................................#............#...................................................................#............. | ||||||
|  | ............................................................................................................................................ | ||||||
|  | #........#......................................................#........#.................................................................# | ||||||
|  | ....................#.........#..........................................................................#.......#......#................... | ||||||
|  | ............................................................................................................................................ | ||||||
|  | .......................................#..............#...........................................#......................................... | ||||||
|  | ................................................#.............................................................#.......................#..... | ||||||
|  | .......................#...................#..............................#................................................................. | ||||||
|  | ...............#...................#....................................................#.............................#..................... | ||||||
|  | ....#......................................................................................................#................................ | ||||||
|  | .............................#.........................................#....................#.............................#.....#........... | ||||||
|  | ..............................................#..................................................#...................................#...... | ||||||
|  | ...................#...................#..........................................#.................................#....................... | ||||||
|  | ............#.....................#....................#..................#................................................................. | ||||||
|  | ...........................................#........................................................#....................................... | ||||||
|  | ...........................................................................................................#................................ | ||||||
|  | ...#............................................................#.............................................................#............. | ||||||
|  | .........................#..............................................................#................................................#.. | ||||||
|  | ...............#............................................................................................................................ | ||||||
|  | .......................................#.......#.............#.............................................................................. | ||||||
|  | .....................#...........#.............................................#............#.................#.........#...........#....... | ||||||
|  | ..........................................................................#.......................#......................................... | ||||||
|  | .......#............................................................................#....................................................... | ||||||
|  | ....................................................#....................................................................................#.. | ||||||
|  | .................#........................................#.....#...........................................................#............... | ||||||
|  | .#.........#..................................#.................................#..............#.........#.....#......#..................... | ||||||
|  | .....................#............#.......................................................#.........#....................................... | ||||||
|  | ............................................................................#.......................................................#....... | ||||||
|  | .....................................................................................#....................................#................. | ||||||
|  | ............................#................................................................#..................................#........... | ||||||
|  | .....#.........................................................#............................................................................ | ||||||
|  | ......................#..................#............................................................................#..................... | ||||||
|  | ................................................................................#.....................................................#..... | ||||||
|  | #.................................#.......................................#................................................................. | ||||||
|  | ...................#......#.......................#...............#...........................................#............................. | ||||||
|  | .............................................................#........................................#......................#.............. | ||||||
|  | .................................................................................................#.......................................... | ||||||
|  | ..#..................................#....................................................................#......#..................#....... | ||||||
|  | ..........................................................#..................#........................................#..................... | ||||||
|  | ..................#........#........................................................#..........................................#............ | ||||||
|  | .................................#.............#.......................#...................................................................# | ||||||
|  | ................................................................................................#.........................#................. | ||||||
|  | ....#.....#................................................................................................................................. | ||||||
|  | .......................#....................................................#............................................................... | ||||||
|  | ....................................................#....................................................................................... | ||||||
|  | .............#..............................#..........................................#.................................................... | ||||||
|  | ...............................#............................................................................................#........#...... | ||||||
|  | .#.......................................................#.........#...........#.................................#.......................... | ||||||
|  | ....................................#.............#..............................................................................#.......... | ||||||
|  | .....................#.........................................................................#......#..................................... | ||||||
|  | ..........................#...........................#.........#.................#......................................................... | ||||||
|  | ..........#.................................#................................#.............................................................. | ||||||
|  | ....#...........................................................................................................#..................#........ | ||||||
|  | ........................................................................#..............#.....................................#.............. | ||||||
|  | ..................#.......................................#................................................................................. | ||||||
|  | ........................................................................................................................................#... | ||||||
|  | ....................................................#.......................#..........................#.................................... | ||||||
|  | .....#..............................#.........................#..................................#.......................................... | ||||||
|  | ..........................#............................................#........................................#.......#................... | ||||||
|  | ..........................................#................................................................................................. | ||||||
|  | ......................................................................................................................................#..... | ||||||
|  | .......#...........................................#................................#........................................#.............. | ||||||
|  | #..................#..........................#..........................#.....#............................#............................... | ||||||
|  | ...................................#.....................................................................................#.................. | ||||||
							
								
								
									
										35
									
								
								11/part1.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								11/part1.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | :- op(700, xfx, before). | ||||||
|  | :- 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, (galaxy(Map, A), galaxy(Map, B), A before B, | ||||||
|  |                    distance(Map, A, B, Dist)), | ||||||
|  |             Dists), | ||||||
|  |     sum_list(Dists, Answer), | ||||||
|  |     writef('Answer=%w\n', [Answer]). | ||||||
|  |  | ||||||
|  | distance(Map, X1-Y1, X2-Y2, Dist) :- | ||||||
|  |     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). | ||||||
|  | before(X1-Y1, X2-Y2) :- X1 < X2; X1 =:= X2, Y1 < Y2. | ||||||
|  |  | ||||||
|  | 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). | ||||||
							
								
								
									
										35
									
								
								11/part2.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								11/part2.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | :- op(700, xfx, before). | ||||||
|  | :- 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, (galaxy(Map, A), galaxy(Map, B), A before B, | ||||||
|  |                    distance(Map, A, B, Dist)), | ||||||
|  |             Dists), | ||||||
|  |     sum_list(Dists, Answer), | ||||||
|  |     writef('Answer=%w\n', [Answer]). | ||||||
|  |  | ||||||
|  | distance(Map, X1-Y1, X2-Y2, Dist) :- | ||||||
|  |     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). | ||||||
|  | before(X1-Y1, X2-Y2) :- X1 < X2; X1 =:= X2, Y1 < Y2. | ||||||
|  |  | ||||||
|  | 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 @@ | |||||||
|  | ...#...... | ||||||
|  | .......#.. | ||||||
|  | #......... | ||||||
|  | .......... | ||||||
|  | ......#... | ||||||
|  | .#........ | ||||||
|  | .........# | ||||||
|  | .......... | ||||||
|  | .......#.. | ||||||
|  | #...#..... | ||||||
		Reference in New Issue
	
	Block a user