92 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Advent of Code
 | |
| 
 | |
| --- Day 14: Disk Defragmentation ---
 | |
| 
 | |
|    Suddenly, a scheduled job activates the system's disk defragmenter. Were the situation different, you might sit and watch it for a while, but today, you just
 | |
|    don't have that kind of time. It's soaking up valuable system resources that are needed elsewhere, and so the only option is to help it finish its task as soon
 | |
|    as possible.
 | |
| 
 | |
|    The disk in question consists of a 128x128 grid; each square of the grid is either free or used. On this disk, the state of the grid is tracked by the bits in a
 | |
|    sequence of knot hashes.
 | |
| 
 | |
|    A total of 128 knot hashes are calculated, each corresponding to a single row in the grid; each hash contains 128 bits which correspond to individual grid
 | |
|    squares. Each bit of a hash indicates whether that square is free (0) or used (1).
 | |
| 
 | |
|    The hash inputs are a key string (your puzzle input), a dash, and a number from 0 to 127 corresponding to the row. For example, if your key string were
 | |
|    flqrgnkx, then the first row would be given by the bits of the knot hash of flqrgnkx-0, the second row from the bits of the knot hash of flqrgnkx-1, and so on
 | |
|    until the last row, flqrgnkx-127.
 | |
| 
 | |
|    The output of a knot hash is traditionally represented by 32 hexadecimal digits; each of these digits correspond to 4 bits, for a total of 4 * 32 = 128 bits. To
 | |
|    convert to bits, turn each hexadecimal digit to its equivalent binary value, high-bit first: 0 becomes 0000, 1 becomes 0001, e becomes 1110, f becomes 1111, and
 | |
|    so on; a hash that begins with a0c2017... in hexadecimal would begin with 10100000110000100000000101110000... in binary.
 | |
| 
 | |
|    Continuing this process, the first 8 rows and columns for key flqrgnkx appear as follows, using # to denote used squares, and . to denote free ones:
 | |
| 
 | |
|  ##.#.#..-->
 | |
|  .#.#.#.#
 | |
|  ....#.#.
 | |
|  #.#.##.#
 | |
|  .##.#...
 | |
|  ##..#..#
 | |
|  .#...#..
 | |
|  ##.#.##.-->
 | |
|  |      |
 | |
|  V      V
 | |
| 
 | |
|    In this example, 8108 squares are used across the entire 128x128 grid.
 | |
| 
 | |
|    Given your actual key string, how many squares are used?
 | |
| 
 | |
|    Your puzzle answer was 8148.
 | |
| 
 | |
| --- Part Two ---
 | |
| 
 | |
|    Now, all the defragmenter needs to know is the number of regions. A region is a group of used squares that are all adjacent, not including diagonals. Every used
 | |
|    square is in exactly one region: lone used squares form their own isolated regions, while several adjacent squares all count as a single region.
 | |
| 
 | |
|    In the example above, the following nine regions are visible, each marked with a distinct digit:
 | |
| 
 | |
|  11.2.3..-->
 | |
|  .1.2.3.4
 | |
|  ....5.6.
 | |
|  7.8.55.9
 | |
|  .88.5...
 | |
|  88..5..8
 | |
|  .8...8..
 | |
|  88.8.88.-->
 | |
|  |      |
 | |
|  V      V
 | |
| 
 | |
|    Of particular interest is the region marked 8; while it does not appear contiguous in this small view, all of the squares marked 8 are connected when
 | |
|    considering the whole 128x128 grid. In total, in this example, 1242 regions are present.
 | |
| 
 | |
|    How many regions are present given your key string?
 | |
| 
 | |
|    Your puzzle answer was 1180.
 | |
| 
 | |
|    Both parts of this puzzle are complete! They provide two gold stars: **
 | |
| 
 | |
|    At this point, you should return to your advent calendar and try another puzzle.
 | |
| 
 | |
|    Your puzzle input was vbqugkhl.
 | |
| 
 | |
| References
 | |
| 
 | |
|    Visible links
 | |
|    . http://adventofcode.com/
 | |
|    . http://adventofcode.com/2017/about
 | |
|    . http://adventofcode.com/2017/support
 | |
|    . http://adventofcode.com/2017/events
 | |
|    . http://adventofcode.com/2017/settings
 | |
|    . http://adventofcode.com/2017/auth/logout
 | |
|    . http://adventofcode.com/2017
 | |
|    . http://adventofcode.com/2017
 | |
|    . http://adventofcode.com/2017/leaderboard
 | |
|    . http://adventofcode.com/2017/stats
 | |
|    . http://adventofcode.com/2017/sponsors
 | |
|    . http://adventofcode.com/2017/sponsors
 | |
|    . https://en.wikipedia.org/wiki/Defragmentation
 | |
|    . https://www.youtube.com/watch?v=kPv1gQ5Rs8A&t=37
 | |
|    . http://adventofcode.com/2017/day/10
 | |
|    . http://adventofcode.com/2017
 |