2020 day 20 part 1
This commit is contained in:
parent
2b036e11b7
commit
be6a53c719
1727
2020/20/input.txt
Normal file
1727
2020/20/input.txt
Normal file
File diff suppressed because it is too large
Load diff
43
2020/20/part1.js
Normal file
43
2020/20/part1.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
const fs = require('fs');
|
||||
const input = fs.readFileSync('./input.txt', 'utf-8');
|
||||
|
||||
const inputTiles = input.split('\n\n');
|
||||
|
||||
// it is implied that the image is a square, which makes it far simpler.
|
||||
const sideLength = Math.sqrt(inputTiles.length);
|
||||
const tileSize = 9
|
||||
let allBorders = new Map();
|
||||
console.log(sideLength);
|
||||
let tiles = [];
|
||||
inputTiles.forEach(inputTile => {
|
||||
tileLines = inputTile.split('\n');
|
||||
let tileID = tileLines[0].slice(5, 9);
|
||||
let tileData = tileLines.slice(1)
|
||||
let borders = [
|
||||
tileData[0],
|
||||
tileData[tileSize],
|
||||
tileData.reduce((a,b)=>a+b[0], ''),
|
||||
tileData.reduce((a,b)=>a+b[tileSize], '')
|
||||
];
|
||||
borders.forEach(border=>{
|
||||
if (!allBorders.has(border)) {
|
||||
allBorders.set(border, 1)
|
||||
} else {
|
||||
allBorders.set(border, allBorders.get(border) + 1)
|
||||
}
|
||||
})
|
||||
tiles.push({tileID, borders})
|
||||
})
|
||||
|
||||
function reverseString(str) {
|
||||
return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
|
||||
}
|
||||
|
||||
let runningTotal = 1;
|
||||
tiles.forEach(tile => {
|
||||
if (tile.borders.reduce((a, border) => a + allBorders.get(border) + (allBorders.get(reverseString(border))||0), -4) == 2) {
|
||||
console.log(tile.tileID)
|
||||
runningTotal *= tile.tileID
|
||||
}
|
||||
})
|
||||
console.log(runningTotal)
|
107
2020/20/test.txt
Normal file
107
2020/20/test.txt
Normal file
|
@ -0,0 +1,107 @@
|
|||
Tile 2311:
|
||||
..##.#..#.
|
||||
##..#.....
|
||||
#...##..#.
|
||||
####.#...#
|
||||
##.##.###.
|
||||
##...#.###
|
||||
.#.#.#..##
|
||||
..#....#..
|
||||
###...#.#.
|
||||
..###..###
|
||||
|
||||
Tile 1951:
|
||||
#.##...##.
|
||||
#.####...#
|
||||
.....#..##
|
||||
#...######
|
||||
.##.#....#
|
||||
.###.#####
|
||||
###.##.##.
|
||||
.###....#.
|
||||
..#.#..#.#
|
||||
#...##.#..
|
||||
|
||||
Tile 1171:
|
||||
####...##.
|
||||
#..##.#..#
|
||||
##.#..#.#.
|
||||
.###.####.
|
||||
..###.####
|
||||
.##....##.
|
||||
.#...####.
|
||||
#.##.####.
|
||||
####..#...
|
||||
.....##...
|
||||
|
||||
Tile 1427:
|
||||
###.##.#..
|
||||
.#..#.##..
|
||||
.#.##.#..#
|
||||
#.#.#.##.#
|
||||
....#...##
|
||||
...##..##.
|
||||
...#.#####
|
||||
.#.####.#.
|
||||
..#..###.#
|
||||
..##.#..#.
|
||||
|
||||
Tile 1489:
|
||||
##.#.#....
|
||||
..##...#..
|
||||
.##..##...
|
||||
..#...#...
|
||||
#####...#.
|
||||
#..#.#.#.#
|
||||
...#.#.#..
|
||||
##.#...##.
|
||||
..##.##.##
|
||||
###.##.#..
|
||||
|
||||
Tile 2473:
|
||||
#....####.
|
||||
#..#.##...
|
||||
#.##..#...
|
||||
######.#.#
|
||||
.#...#.#.#
|
||||
.#########
|
||||
.###.#..#.
|
||||
########.#
|
||||
##...##.#.
|
||||
..###.#.#.
|
||||
|
||||
Tile 2971:
|
||||
..#.#....#
|
||||
#...###...
|
||||
#.#.###...
|
||||
##.##..#..
|
||||
.#####..##
|
||||
.#..####.#
|
||||
#..#.#..#.
|
||||
..####.###
|
||||
..#.#.###.
|
||||
...#.#.#.#
|
||||
|
||||
Tile 2729:
|
||||
...#.#.#.#
|
||||
####.#....
|
||||
..#.#.....
|
||||
....#..#.#
|
||||
.##..##.#.
|
||||
.#.####...
|
||||
####.#.#..
|
||||
##.####...
|
||||
##..#.##..
|
||||
#.##...##.
|
||||
|
||||
Tile 3079:
|
||||
#.#.#####.
|
||||
.#..######
|
||||
..#.......
|
||||
######....
|
||||
####.#..#.
|
||||
.#...#.##.
|
||||
#.#####.##
|
||||
..#.###...
|
||||
..#.......
|
||||
..#.###...
|
|
@ -60,3 +60,4 @@ if (advent) {
|
|||
17. [:star: :star:](https://adventofcode.com/2020/day/17 "see puzzle")
|
||||
18. [:star: :star:](https://adventofcode.com/2020/day/18 "see puzzle")
|
||||
19. [:star:](https://adventofcode.com/2020/day/19 "see puzzle")
|
||||
20. [:star:](https://adventofcode.com/2020/day/20 "see puzzle")
|
||||
|
|
Loading…
Reference in a new issue