adventofcode2020/day03.ipynb

526 lines
19 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"trees = open('day03-input.txt')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"trees_matrix = []"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"for line in trees:\n",
" trees_matrix.append(line.strip())"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['.......#..#....#...#...#......#',\n",
" '..##..#...##.###.#..#.....#.#..',\n",
" '#..#.#....#......#..#.........#',\n",
" '.#..##...#........#....#..#..#.',\n",
" '#.#.#....###...#........#.....#',\n",
" '.#...#.#.##.#.##...#.#.........',\n",
" '####......#.......###.##.#.....',\n",
" '..#...........#...#.#.#........',\n",
" '.#.......#....###.####..#......',\n",
" '...##........#....##.......##..',\n",
" '.###......##.#......##....#.#.#',\n",
" '........#.#......##...#......#.',\n",
" '#....##.#..#...#.......#.......',\n",
" '.#..##........##.........#....#',\n",
" '.#..#..#...#....#.#......#.#...',\n",
" '..#.#......##.#.......#....##..',\n",
" '......##......#.#..##.#..#...#.',\n",
" '.....##.......#.#....#.#.......',\n",
" '........#.....#.....#..###.#...',\n",
" '#........#..#.....#...#.#.#..#.',\n",
" '.#..#.....#...#........#.....#.',\n",
" '.#.#.....#.....#...#...........',\n",
" '.....#.#..#..#...#..#..#..##..#',\n",
" '##.#...#....#..#.##..#.....#.#.',\n",
" '#.......####......#..#.#....#..',\n",
" '......#.#...####.........#.#..#',\n",
" '.#.........#..#.#...#..........',\n",
" '...#####.#....#.#..#......#.#.#',\n",
" '##....#.###....##...##..#.....#',\n",
" '...........####.##.#....##.##..',\n",
" '#.#.#..........#.#..##.#.######',\n",
" '##...#..#...........###..#....#',\n",
" '.#.#.#...##..........##.#...#..',\n",
" '...#.#........#..##...#....#...',\n",
" '......#..#...#..##....#.......#',\n",
" '.#..#.......#..#......##....##.',\n",
" '.......#.......#........#..##..',\n",
" '...#...#...#.##......#.##.#....',\n",
" '.........#.........#.#.#.##....',\n",
" '..#...................#....#..#',\n",
" '.........#..#.....#.#...#....#.',\n",
" '#.#.#...#........#..###.#......',\n",
" '#.#.#.####......##...#...#....#',\n",
" '#...........##..#.#.#....#..#..',\n",
" '........#..#.#...........##.#.#',\n",
" '.#.........#...........#..#....',\n",
" '#............##.#..#....##...##',\n",
" '.#....##..#.#....#.......#..#..',\n",
" '..#.#...#.#......####.......#..',\n",
" '...#.#.......###......#.....#..',\n",
" '#......#.......#.#...#.#..##...',\n",
" '...#.....#...##.#.....#.#......',\n",
" '#.#.#............#..#......#..#',\n",
" '....#...#...##.##.##...##.#....',\n",
" '..##........#..#........#...##.',\n",
" '.......#..#...#.........#.....#',\n",
" '...........#.#......#...#......',\n",
" '...##..##..##..###..#..#..#..#.',\n",
" '#..##.......##..#....#....#.#..',\n",
" '#.#.##.#..##.....#....#.#......',\n",
" '....#..##......#.#..#....#....#',\n",
" '.#.#.........##...#......##.##.',\n",
" '##...........#..#.....#.###....',\n",
" '.#.###........#...#....##..#...',\n",
" '......##.....#.................',\n",
" '.#.##..#.#.......#......#.#.#..',\n",
" '.#...#....#.##..........##.##..',\n",
" '#...##......####.#....#....#...',\n",
" '.#...#.##.#.#.....#...#........',\n",
" '.#................#.##.#.###...',\n",
" '...#.#..#.#.....##.....##....#.',\n",
" '..##.#..#..##.....#....#...#.##',\n",
" '........###.##..#..###.....#..#',\n",
" '..##.....#.......#.#...##......',\n",
" '#.#..###...##.###.##.#..#...#..',\n",
" '#..#..#.#...#....#...##.....#.#',\n",
" '#..................#........#..',\n",
" '#.....#.......#.##....##....#..',\n",
" '...#.............#.....#...#...',\n",
" '...#...#.##..##.....#........#.',\n",
" '.......#........##....###..##..',\n",
" '.#....#....#.#..#......#....#.#',\n",
" '..........#..#.#.....##...#.##.',\n",
" '.#...##.#...........#.#.......#',\n",
" '..#.##.....#.###.#.............',\n",
" '..#....###..........#.#.#......',\n",
" '#.....#.####..#.#......#..#.#.#',\n",
" '...#........#..#...............',\n",
" '.###.#.##.....#.#...........#..',\n",
" '..#....#..#....#..##....#......',\n",
" '......#..#.....#.#.##.......#.#',\n",
" '###..#...#.#..#....#..##.###..#',\n",
" '.#....##.###........##...##.#.#',\n",
" '........##..##.#....##..#....#.',\n",
" '...#..#....#.#....#...#...##...',\n",
" '#.....#......#.##........#....#',\n",
" '....#....###.##...#.#.##....#..',\n",
" '......#.##..#.#..........#...#.',\n",
" '...........#...#....##...#....#',\n",
" '......#.#.........#....#.#.#...',\n",
" '.###..........#.###.##....#...#',\n",
" '...##.......#......#....#....#.',\n",
" '#..#...#.#..####...#......#..#.',\n",
" '....##..#.#.........#..........',\n",
" '.##.###.##....##.####....#...#.',\n",
" '..##.......#........#...#..#...',\n",
" '....#####..........###....#....',\n",
" '.#.#..#.#.#....#..#............',\n",
" '........#.....#....#.......##..',\n",
" '...........##....##..##.....##.',\n",
" '..###........#.#.#..#....##...#',\n",
" '.....#...........##......#..#..',\n",
" '...##........#.##.#......##..#.',\n",
" '##..#....#............##..#..#.',\n",
" '.#.....#...##.##..............#',\n",
" '#..##........#...#...#......##.',\n",
" '......##.....#.......####.##..#',\n",
" '...#.#....#...#..#.............',\n",
" '..#...#..##.###..#..#.......##.',\n",
" '##....###.......#...#..#.......',\n",
" '#..#.....###.....#.#.........#.',\n",
" '#.#....#.............#...#.....',\n",
" '..#.#.##..........#.....##.#...',\n",
" '.....##......#..#..#.....#..#..',\n",
" '##.#..#..#.##......###....#..#.',\n",
" '...#............##...#..##.....',\n",
" '.#..#....#.........#......#.##.',\n",
" '.##.##...#..............#..#.##',\n",
" '...#....#...###...#...#....#..#',\n",
" '..#...#..####..#....#.#...##..#',\n",
" '..............##.##.......##...',\n",
" '..##.#..##...........#.#.#...#.',\n",
" '..................##.####.###..',\n",
" '.#...........#.......#......#..',\n",
" '.#.#.#...#....#.........##...##',\n",
" '....#..........#.#....#.#.....#',\n",
" '..........#.#..........#.#.....',\n",
" '...........#.....#.#......#....',\n",
" '........#..#.#.#.#.............',\n",
" '...###...##...##..####.##......',\n",
" '.#..#......###.....#...#.....#.',\n",
" '.........##............#.#.....',\n",
" '#.#..#.#.#....###.#.#..#..#..##',\n",
" '..........#...#.##.#..#..#....#',\n",
" '#..#.......##....#..##........#',\n",
" '##.#...#....##.............#...',\n",
" '....#........#......##..#..#.##',\n",
" '.................#.#.#.#.#.....',\n",
" '...........#.#.....#.......#...',\n",
" '#.......#.......#............#.',\n",
" '....#...........#.#.##.....#..#',\n",
" '#...#.....#....#..##...#.......',\n",
" '..#.....#.....#.##.##....#.....',\n",
" '.#.#..#...#..#..##.....##..#...',\n",
" '.#.#....#.........####.........',\n",
" '#...#..####.....#...#..##......',\n",
" '..#...##.#.....#...#.....##....',\n",
" '.#...#.....#.#.#......#.......#',\n",
" '..#.....##.#..#.#...##.........',\n",
" '##.#...#..#....#....#.##.##...#',\n",
" '.#..#....#..##.#.......#..#....',\n",
" '...##.#......#...###.......#...',\n",
" '...#..#.........##.####........',\n",
" '#.#..#..##...........#..#......',\n",
" '.#...#.#......#.#..........#...',\n",
" '...###...#.......#.....#.#...##',\n",
" '..#....#.#.##..........##...#..',\n",
" '.....###.........#.....#..##..#',\n",
" '.......##.....#.#.....#.#..##..',\n",
" '.#.#.###..##.......##...#......',\n",
" '......#.....#................##',\n",
" '.#......##..##.#.#...#...#...##',\n",
" '.#...#......#.......#.#........',\n",
" '.#..........###...#..#...#.....',\n",
" '.........##.....#.#..#..#.#...#',\n",
" '#...#...#.........#..#..#....#.',\n",
" '###.......#.#.....#....##......',\n",
" '.#..#......#..#...........#..#.',\n",
" '..##....##..##...#......#......',\n",
" '.#........#....#...#....#.....#',\n",
" '.#.......#...#...#..##.#.#..#..',\n",
" '#...#........#.##.....#.....#..',\n",
" '#..##.....#..........#...#...##',\n",
" '............#...............#..',\n",
" '.#.##...#.....#.#..#..#..#.....',\n",
" '.#.#.#...#........#....#...##..',\n",
" '##......#.....#.###.#...#.#..#.',\n",
" '.........##..#..#.#...#...#...#',\n",
" '#...#.#....#..#..#.....#.......',\n",
" '.......#.###...#.............#.',\n",
" '..#.....#.#.#..###.#....#.....#',\n",
" '....#...#.#....#.#..........#..',\n",
" '..#......#.###.#.#..#.....#...#',\n",
" '#............#..##...##......#.',\n",
" '#...........#..#....#.###..###.',\n",
" '.#.##.#.#.......#.............#',\n",
" '..............#................',\n",
" '..#.#.....#.....#...#......#...',\n",
" '.#.#.#..#..#.#...........##....',\n",
" '.....##.#......#..#.##....#....',\n",
" '.......##..#.#.#..#............',\n",
" '..#.....#.....#.###..#.....#.#.',\n",
" '......##.....#..##.#...#.....#.',\n",
" '...#...#....#..#..#........#...',\n",
" '..#.##..#....#.........#.#..#..',\n",
" '#....#.....###.....#......#....',\n",
" '##.....#..#..##.........#.##.##',\n",
" '.#.#....#.#..........#.........',\n",
" '.##.#...#..#.......#.##...#....',\n",
" '...#...#.....#....#...#.#..#...',\n",
" '.....#....#.....#.....#.#......',\n",
" '...........#.#.......#.......#.',\n",
" '.........##.###.##........#....',\n",
" '#..##.....#...#.#..............',\n",
" '.#...#....##........#.#..#....#',\n",
" '..#...#........#...#..#.##.#..#',\n",
" '........#...#.....##.#.#....#.#',\n",
" '#..#.......###.#....#.#.#......',\n",
" '.......#...##....#...#..##..#..',\n",
" '.....##........#.#.#..#....##..',\n",
" '.#....#..#.#...........#......#',\n",
" '...##....#.##.....##.......#...',\n",
" '.##..#..#....#.#....#..#....##.',\n",
" '..#....#.....###.......#..##..#',\n",
" '....#.......#....##..#....#..##',\n",
" '....#......##..#....#.#...#.#..',\n",
" '.##.#......##..................',\n",
" '##.#....#........#..#..#...##.#',\n",
" '.......#..#.#...##.....#.#.....',\n",
" '..##.#...........#.#.#..#.#.#..',\n",
" '.....#....#......#..#.......#..',\n",
" '#.#...#.####..##.......#..##...',\n",
" '...#....#.....#.##.#..#.##..#..',\n",
" '.#.......#......##........##.#.',\n",
" '.......#.#...#..#...#..##.#....',\n",
" '.#....#........#.#.....##..#..#',\n",
" '#..#.....#..#.............#...#',\n",
" '#...#....#..#...###..#...#.#...',\n",
" '.#..#.....#..........#..##.####',\n",
" '#.#.#.#.##.#.#.....##.#........',\n",
" '...#....##....#...#..##.......#',\n",
" '..##.##.#.#........#..........#',\n",
" '..###........###..#..........#.',\n",
" '...#......#..##.#........#..#..',\n",
" '#.#.#..#........#..#..........#',\n",
" '...#........#..##.#...#.###....',\n",
" '##......#.####.#....#......#...',\n",
" '.#..#......#................#..',\n",
" '#.#........#.#.....##.....##...',\n",
" '#...............#..#.......#.#.',\n",
" '.##..#...........##..#..#.#....',\n",
" '#......#.#.......#.#.#.##..#.##',\n",
" '.....##.#..###.............##..',\n",
" '....##.........#..#...#........',\n",
" '.....#.....#.#.#..#.#..........',\n",
" '#.........#....##.#.##.....#..#',\n",
" '.#.........#......#.#.##.#.#...',\n",
" '##.........#.....#..#.#..#.##.#',\n",
" '....#......##...#.....#..#..###',\n",
" '..#..............#...#..####...',\n",
" '#....#...##.#.......#...#..#...',\n",
" '#.......###.#.#.......#.......#',\n",
" '...##....#.#...........#...###.',\n",
" '...........#..#.#.....#..##..#.',\n",
" '..#.........#..###..#.....#...#',\n",
" '..#.#.....#.#.#...#.#.#......#.',\n",
" '........#.....#.#......##....##',\n",
" '##.#.#...#.#........#.....#...#',\n",
" '........#....#...............#.',\n",
" '##.###......####...#####..#....',\n",
" '...##...#..#....#........#...#.',\n",
" '...###.#..................##.#.',\n",
" '##.#.......###.......#...#.#...',\n",
" '....#..#.#...#...#....#.#.#..##',\n",
" '....#...........#..#...........',\n",
" '#..#.#..#...#...#..#...........',\n",
" '...#...#.#....#..#....#........',\n",
" '#....#.......#.##........#..#..',\n",
" '.....#...#..#................#.',\n",
" '#......#.......#..........##..#',\n",
" '.#....#.#......#.#...#....##..#',\n",
" '...#.##...#......#.#...##...##.',\n",
" '..#...#..##...#...#....#.......',\n",
" '.....#....#.#.#..........#.#...',\n",
" '...#...#..#....#..#.#..........',\n",
" '......#.#..........##.......#..',\n",
" '.#...##.#.#...#..##..#...#.....',\n",
" '..#..#.........#........#.#.#..',\n",
" '#.#..##..#.....##......#.....#.',\n",
" '#..#.....#.#....#...#.#....#.#.',\n",
" '......#........##.#..#...#.....',\n",
" '...#.##.#.#......#.#..##...#..#',\n",
" '....#..###..#..#.....###....##.',\n",
" '.....#...#.#.....#..........#.#',\n",
" '.#...##..##.....#..#...#.#.#...',\n",
" '.##.#......##...##..#...#.....#',\n",
" '.#.##....#...#.##.#.#...#.#...#',\n",
" '....#.#...#....###.#.....#.....',\n",
" '#.....####................#..#.',\n",
" '....#.....#...#.#.......##.#...',\n",
" '.#...##.#...#..#...........#.#.',\n",
" '..#####..#.#...#...##........#.',\n",
" '...#...##........#...#.#....###',\n",
" '........#.#.#..#.....#.......#.',\n",
" '...#...#..##............##.....',\n",
" '#.#..###....###.#...#.#...##.##',\n",
" '..#.##...#......#..#.........##',\n",
" '.##..#..#.....#..#.........#.#.',\n",
" '.#..#.#....#.##...#..#.##....##',\n",
" '..#...#.#...##.#.#...#...#....#',\n",
" '#..........#.......##..##....#.',\n",
" '#...###.#......#....#.........#',\n",
" '#.....#...##.......##....##....',\n",
" '.##.#..#.##......#.##....#..#..',\n",
" '............#.#....##.#..#....#',\n",
" '.#.........##.##...#....#.....#',\n",
" '##....##..#..#....##...#.....##',\n",
" '...#.....#...........#.....##..',\n",
" '......#...#.........#.......#..',\n",
" '............#...##.#.....#.#.#.',\n",
" '.#........##..........#.....#.#',\n",
" '.###.........#.....#.##...#....',\n",
" '.##..#...##...#..#..#.##.......']"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trees_matrix"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'.'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trees_matrix[0][0]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'#'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trees_matrix[1][3]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"move_x = 3\n",
"move_y = 1"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"234\n"
]
}
],
"source": [
"x = 0\n",
"y = 0\n",
"count_trees = 0\n",
"while y < len(trees_matrix):\n",
" if trees_matrix[y][x] == '#':\n",
" count_trees += 1\n",
" x += move_x\n",
" if x >= len(trees_matrix[y]):\n",
" x -= len(trees_matrix[y])\n",
" y += move_y\n",
"\n",
"print(count_trees)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def check_slope(move_x, move_y):\n",
" x = 0\n",
" y = 0\n",
" count_trees = 0\n",
" while y < len(trees_matrix):\n",
" if trees_matrix[y][x] == '#':\n",
" count_trees += 1\n",
" x += move_x\n",
" if x >= len(trees_matrix[y]):\n",
" x -= len(trees_matrix[y])\n",
" y += move_y\n",
"\n",
" return count_trees"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5813773056"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"check_slope(1, 1) * \\\n",
"check_slope(3, 1) * \\\n",
"check_slope(5, 1) * \\\n",
"check_slope(7, 1) * \\\n",
"check_slope(1, 2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}