From 965da887e87f7f0bb2f8c27d451c7f747f2603fd Mon Sep 17 00:00:00 2001 From: BoB <bo.bernhardsson@control.lth.se> Date: Sun, 8 Dec 2024 08:17:35 +0000 Subject: [PATCH] day8 --- day 8/day_8_bob.ipynb | 83 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 day 8/day_8_bob.ipynb diff --git a/day 8/day_8_bob.ipynb b/day 8/day_8_bob.ipynb new file mode 100644 index 0000000..c370899 --- /dev/null +++ b/day 8/day_8_bob.ipynb @@ -0,0 +1,83 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "source": [ + "#08\n", + "def readdata(filename):\n", + " with open(filename, 'r') as file:\n", + " A = [list(line.strip()) for line in file]\n", + " return A, len(A)\n", + "A, n = readdata('input08.txt')\n", + "\n", + "antenna = {}\n", + "for r in range(n):\n", + " for c in range(n):\n", + " if A[r][c] != \".\":\n", + " antenna.setdefault(A[r][c], []).append((r, c))" + ], + "metadata": { + "id": "WTC4nT-lVB9L" + }, + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# part 1\n", + "B = [[0] * n for _ in range(n)] # position of antinodes\n", + "for pos in antenna.values():\n", + " for r1, c1 in pos:\n", + " for r2, c2 in pos:\n", + " if (r1, c1) == (r2, c2):\n", + " continue\n", + " r_new, c_new = 2*r2-r1, 2*c2-c1 # Calculate antinode position\n", + " if 0 <= r_new < n and 0 <= c_new < n:\n", + " B[r_new][c_new] = 1\n", + "sum(sum(row) for row in B)" + ], + "metadata": { + "id": "bQbhP8ajwPk3" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# part 2\n", + "B = [[0] * n for _ in range(n)] # position of antinodes\n", + "for pos in antenna.values():\n", + " for r, c in pos:\n", + " B[r][c] = 1\n", + " for diff_r, diff_c in [(r2 - r, c2 - c) for r2, c2 in pos if (r2, c2) != (r, c)]:\n", + " r_new, c_new = r + diff_r, c + diff_c\n", + " while 0 <= r_new < n and 0 <= c_new < n:\n", + " B[r_new][c_new] = 1\n", + " r_new += diff_r\n", + " c_new += diff_c\n", + "sum(sum(row) for row in B)" + ], + "metadata": { + "id": "n41e8HbQgZ7R" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file -- GitLab