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