diff --git a/day 20/day_20_bobv2.ipynb b/day 20/day_20_bobv2.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..52c11cd94ac7d19058028b420d55aecf7e8c644c --- /dev/null +++ b/day 20/day_20_bobv2.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": [ + "# day 20\n", + "with open('input20.txt', 'r') as file:\n", + " maze = [list(line.strip()) for line in file.readlines()]\n", + " n,m = len(maze), len(maze[0])\n", + " for r in range(n):\n", + " for c in range(m):\n", + " if maze[r][c] == 'S':\n", + " start = (r, c)\n", + " elif maze[r][c] == 'E':\n", + " end = (r, c)\n", + "\n", + "# find path\n", + "maze[end[0]][end[1]] = '.'\n", + "path = [start]\n", + "(r,c) = start\n", + "while (r,c) != end:\n", + " maze[r][c] = 'O'\n", + " for (dr,dc) in [(-1, 0), (1, 0), (0, -1), (0, 1)]:\n", + " if maze[r+dr][c+dc] == '.':\n", + " path.append((r+dr,c+dc))\n", + " r,c = r+dr,c+dc\n", + " break\n", + "l = len(path)\n", + "\n", + "s1 = 0\n", + "for i in range(l):\n", + " (ri,ci) = path[i]\n", + " for j in range(i+102,l):\n", + " (rj,cj) = path[j]\n", + " if (ri==rj and abs(ci-cj)==2) or (ci==cj and abs(ri-rj)==2):\n", + " s1 += 1\n", + "print(f\"solution to part1 = {s1}\")\n", + "\n", + "s2 = 0\n", + "for i in range(l):\n", + " (ri,ci) = path[i]\n", + " for j in range(i+100,l):\n", + " (rj,cj) = path[j]\n", + " man = abs(ri-rj) + abs(ci-cj)\n", + " if man <= 20 and man + 100 <= j -i:\n", + " s2 += 1\n", + "print(f\"solution to part2 = {s2}\")" + ], + "metadata": { + "id": "vhRxJ1CeJ5jo", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c4011094-36bd-4702-84ed-f2cf3c8870ac" + }, + "execution_count": 64, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "1448\n", + "1017615\n" + ] + } + ] + } + ] +} \ No newline at end of file