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