From 27fe77bbe13acfd62330e1f36fd8e113cc27b73b Mon Sep 17 00:00:00 2001 From: s-prechtl Date: Fri, 9 Dec 2022 08:29:06 +0100 Subject: [PATCH] initial commit --- .gitignore | 259 +++ 2020/Day1/main.py | 10 + 2020/Day1/numbers.txt | 200 +++ 2020/Day10/input.txt | 106 ++ 2020/Day10/main.py | 24 + 2020/Day11/input.txt | 95 ++ 2020/Day11/main.py | 35 + 2020/Day2/input.txt | 1000 ++++++++++++ 2020/Day2/main.py | 15 + 2020/Day3/main.py | 16 + 2020/Day4/input | 1029 ++++++++++++ 2020/Day4/input.txt | 1029 ++++++++++++ 2020/Day4/main-DESKTOP-0CGMHB1.py | 18 + 2020/Day4/main.py | 77 + 2020/Day5/input.txt | 807 ++++++++++ 2020/Day5/main.py | 17 + 2020/Day6/input.txt | 2178 +++++++++++++++++++++++++ 2020/Day6/main.py | 25 + 2020/Day7/input.txt | 594 +++++++ 2020/Day7/main.py | 46 + 2020/Day8/input.txt | 605 +++++++ 2020/Day8/main.py | 57 + 2020/Day9/input.txt | 1000 ++++++++++++ 2020/Day9/main.py | 36 + 2021/Day1/Day1.py | 26 + 2021/Day1/input.txt | 2000 +++++++++++++++++++++++ 2021/Day10/Day10.py | 0 2021/Day10/input.txt | 0 2021/Day11/Day11.py | 0 2021/Day11/input.txt | 0 2021/Day12/Day12.py | 0 2021/Day12/input.txt | 0 2021/Day13/Day13.py | 0 2021/Day13/input.txt | 0 2021/Day14/Day14.py | 0 2021/Day14/input.txt | 0 2021/Day15/Day15.py | 0 2021/Day15/input.txt | 0 2021/Day16/Day16.py | 0 2021/Day16/input.txt | 0 2021/Day17/Day17.py | 0 2021/Day17/input.txt | 0 2021/Day18/Day18.py | 0 2021/Day18/input.txt | 0 2021/Day19/Day19.py | 0 2021/Day19/input.txt | 0 2021/Day2/Day2.py | 51 + 2021/Day2/input.txt | 1000 ++++++++++++ 2021/Day20/Day20.py | 0 2021/Day20/input.txt | 0 2021/Day21/Day21.py | 0 2021/Day21/input.txt | 0 2021/Day22/Day22.py | 0 2021/Day22/input.txt | 0 2021/Day23/Day23.py | 0 2021/Day23/input.txt | 0 2021/Day24/Day24.py | 0 2021/Day24/input.txt | 0 2021/Day25/Day25.py | 0 2021/Day25/input.txt | 0 2021/Day3/Day3.py | 100 ++ 2021/Day3/input.txt | 1000 ++++++++++++ 2021/Day4/Board.py | 51 + 2021/Day4/Day4.py | 42 + 2021/Day4/input.txt | 601 +++++++ 2021/Day5/Day5.py | 66 + 2021/Day5/Line.py | 26 + 2021/Day5/input.txt | 500 ++++++ 2021/Day6/Day6.py | 27 + 2021/Day6/input.txt | 1 + 2021/Day7/Day7.py | 24 + 2021/Day7/input.txt | 1 + 2021/Day8/Day8.py | 21 + 2021/Day8/Day8_2_Reddit.py | 143 ++ 2021/Day8/input.txt | 200 +++ 2021/Day9/Day9.py | 0 2021/Day9/input.txt | 0 2022/Day1/Day1.py | 6 + 2022/Day1/input.txt | 2256 ++++++++++++++++++++++++++ 2022/Day10/Day10.py | 0 2022/Day10/input.txt | 0 2022/Day11/Day11.py | 0 2022/Day11/input.txt | 0 2022/Day12/Day12.py | 0 2022/Day12/input.txt | 0 2022/Day13/Day13.py | 0 2022/Day13/input.txt | 0 2022/Day14/Day14.py | 0 2022/Day14/input.txt | 0 2022/Day15/Day15.py | 0 2022/Day15/input.txt | 0 2022/Day16/Day16.py | 0 2022/Day16/input.txt | 0 2022/Day17/Day17.py | 0 2022/Day17/input.txt | 0 2022/Day18/Day18.py | 0 2022/Day18/input.txt | 0 2022/Day19/Day19.py | 0 2022/Day19/input.txt | 0 2022/Day2/Day2.py | 49 + 2022/Day2/input.txt | 2500 +++++++++++++++++++++++++++++ 2022/Day20/Day20.py | 0 2022/Day20/input.txt | 0 2022/Day21/Day21.py | 0 2022/Day21/input.txt | 0 2022/Day22/Day22.py | 0 2022/Day22/input.txt | 0 2022/Day23/Day23.py | 0 2022/Day23/input.txt | 0 2022/Day24/Day24.py | 0 2022/Day24/input.txt | 0 2022/Day25/Day25.py | 0 2022/Day25/input.txt | 0 2022/Day3/Day3.py | 32 + 2022/Day3/input.txt | 300 ++++ 2022/Day4/Day4.py | 0 2022/Day4/Day4_temp.py | 20 + 2022/Day4/input-sprechtlPC2.txt | 0 2022/Day4/input.txt | 1000 ++++++++++++ 2022/Day5/Day5.py | 0 2022/Day5/Day5_temp.py | 79 + 2022/Day5/input-sprechtlPC2.txt | 0 2022/Day5/input.txt | 512 ++++++ 2022/Day6/Day6.py | 0 2022/Day6/Day6_temp.py | 12 + 2022/Day6/input-sprechtlPC2.txt | 0 2022/Day6/input.txt | 1 + 2022/Day7/Day7.py | 0 2022/Day7/input-sprechtlPC2.txt | 0 2022/Day8/Day8.py | 0 2022/Day8/input-sprechtlPC2.txt | 0 2022/Day9/Day9.py | 0 2022/Day9/input.txt | 0 initFiles.py | 14 + 134 files changed, 21939 insertions(+) create mode 100644 .gitignore create mode 100644 2020/Day1/main.py create mode 100644 2020/Day1/numbers.txt create mode 100644 2020/Day10/input.txt create mode 100644 2020/Day10/main.py create mode 100644 2020/Day11/input.txt create mode 100644 2020/Day11/main.py create mode 100644 2020/Day2/input.txt create mode 100644 2020/Day2/main.py create mode 100644 2020/Day3/main.py create mode 100644 2020/Day4/input create mode 100644 2020/Day4/input.txt create mode 100644 2020/Day4/main-DESKTOP-0CGMHB1.py create mode 100644 2020/Day4/main.py create mode 100644 2020/Day5/input.txt create mode 100644 2020/Day5/main.py create mode 100644 2020/Day6/input.txt create mode 100644 2020/Day6/main.py create mode 100644 2020/Day7/input.txt create mode 100644 2020/Day7/main.py create mode 100644 2020/Day8/input.txt create mode 100644 2020/Day8/main.py create mode 100644 2020/Day9/input.txt create mode 100644 2020/Day9/main.py create mode 100644 2021/Day1/Day1.py create mode 100644 2021/Day1/input.txt create mode 100644 2021/Day10/Day10.py create mode 100644 2021/Day10/input.txt create mode 100644 2021/Day11/Day11.py create mode 100644 2021/Day11/input.txt create mode 100644 2021/Day12/Day12.py create mode 100644 2021/Day12/input.txt create mode 100644 2021/Day13/Day13.py create mode 100644 2021/Day13/input.txt create mode 100644 2021/Day14/Day14.py create mode 100644 2021/Day14/input.txt create mode 100644 2021/Day15/Day15.py create mode 100644 2021/Day15/input.txt create mode 100644 2021/Day16/Day16.py create mode 100644 2021/Day16/input.txt create mode 100644 2021/Day17/Day17.py create mode 100644 2021/Day17/input.txt create mode 100644 2021/Day18/Day18.py create mode 100644 2021/Day18/input.txt create mode 100644 2021/Day19/Day19.py create mode 100644 2021/Day19/input.txt create mode 100644 2021/Day2/Day2.py create mode 100644 2021/Day2/input.txt create mode 100644 2021/Day20/Day20.py create mode 100644 2021/Day20/input.txt create mode 100644 2021/Day21/Day21.py create mode 100644 2021/Day21/input.txt create mode 100644 2021/Day22/Day22.py create mode 100644 2021/Day22/input.txt create mode 100644 2021/Day23/Day23.py create mode 100644 2021/Day23/input.txt create mode 100644 2021/Day24/Day24.py create mode 100644 2021/Day24/input.txt create mode 100644 2021/Day25/Day25.py create mode 100644 2021/Day25/input.txt create mode 100644 2021/Day3/Day3.py create mode 100644 2021/Day3/input.txt create mode 100644 2021/Day4/Board.py create mode 100644 2021/Day4/Day4.py create mode 100644 2021/Day4/input.txt create mode 100644 2021/Day5/Day5.py create mode 100644 2021/Day5/Line.py create mode 100644 2021/Day5/input.txt create mode 100644 2021/Day6/Day6.py create mode 100644 2021/Day6/input.txt create mode 100644 2021/Day7/Day7.py create mode 100644 2021/Day7/input.txt create mode 100644 2021/Day8/Day8.py create mode 100644 2021/Day8/Day8_2_Reddit.py create mode 100644 2021/Day8/input.txt create mode 100644 2021/Day9/Day9.py create mode 100644 2021/Day9/input.txt create mode 100644 2022/Day1/Day1.py create mode 100644 2022/Day1/input.txt create mode 100644 2022/Day10/Day10.py create mode 100644 2022/Day10/input.txt create mode 100644 2022/Day11/Day11.py create mode 100644 2022/Day11/input.txt create mode 100644 2022/Day12/Day12.py create mode 100644 2022/Day12/input.txt create mode 100644 2022/Day13/Day13.py create mode 100644 2022/Day13/input.txt create mode 100644 2022/Day14/Day14.py create mode 100644 2022/Day14/input.txt create mode 100644 2022/Day15/Day15.py create mode 100644 2022/Day15/input.txt create mode 100644 2022/Day16/Day16.py create mode 100644 2022/Day16/input.txt create mode 100644 2022/Day17/Day17.py create mode 100644 2022/Day17/input.txt create mode 100644 2022/Day18/Day18.py create mode 100644 2022/Day18/input.txt create mode 100644 2022/Day19/Day19.py create mode 100644 2022/Day19/input.txt create mode 100644 2022/Day2/Day2.py create mode 100644 2022/Day2/input.txt create mode 100644 2022/Day20/Day20.py create mode 100644 2022/Day20/input.txt create mode 100644 2022/Day21/Day21.py create mode 100644 2022/Day21/input.txt create mode 100644 2022/Day22/Day22.py create mode 100644 2022/Day22/input.txt create mode 100644 2022/Day23/Day23.py create mode 100644 2022/Day23/input.txt create mode 100644 2022/Day24/Day24.py create mode 100644 2022/Day24/input.txt create mode 100644 2022/Day25/Day25.py create mode 100644 2022/Day25/input.txt create mode 100644 2022/Day3/Day3.py create mode 100644 2022/Day3/input.txt create mode 100644 2022/Day4/Day4.py create mode 100644 2022/Day4/Day4_temp.py create mode 100644 2022/Day4/input-sprechtlPC2.txt create mode 100644 2022/Day4/input.txt create mode 100644 2022/Day5/Day5.py create mode 100644 2022/Day5/Day5_temp.py create mode 100644 2022/Day5/input-sprechtlPC2.txt create mode 100644 2022/Day5/input.txt create mode 100644 2022/Day6/Day6.py create mode 100644 2022/Day6/Day6_temp.py create mode 100644 2022/Day6/input-sprechtlPC2.txt create mode 100644 2022/Day6/input.txt create mode 100644 2022/Day7/Day7.py create mode 100644 2022/Day7/input-sprechtlPC2.txt create mode 100644 2022/Day8/Day8.py create mode 100644 2022/Day8/input-sprechtlPC2.txt create mode 100644 2022/Day9/Day9.py create mode 100644 2022/Day9/input.txt create mode 100644 initFiles.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb6a689 --- /dev/null +++ b/.gitignore @@ -0,0 +1,259 @@ +# Created by https://www.toptal.com/developers/gitignore/api/pycharm+all,python +# Edit at https://www.toptal.com/developers/gitignore?templates=pycharm+all,python + +### PyCharm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PyCharm+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + + +# End of https://www.toptal.com/developers/gitignore/api/pycharm+all,python \ No newline at end of file diff --git a/2020/Day1/main.py b/2020/Day1/main.py new file mode 100644 index 0000000..e94d44a --- /dev/null +++ b/2020/Day1/main.py @@ -0,0 +1,10 @@ +if __name__ == '__main__': + numbers = [] + with open("numbers.txt") as f: + numbers = list(map(int, f.readlines())) + + for x in numbers: + for y in numbers: + for z in numbers: + if x+y+z == 2020: + print(x*y*z) \ No newline at end of file diff --git a/2020/Day1/numbers.txt b/2020/Day1/numbers.txt new file mode 100644 index 0000000..4f6f02c --- /dev/null +++ b/2020/Day1/numbers.txt @@ -0,0 +1,200 @@ +408 +1614 +1321 +1028 +1018 +2008 +1061 +1433 +1434 +1383 +1645 +1841 +1594 +1218 +1729 +1908 +1237 +1152 +1771 +1837 +1709 +1449 +1876 +1763 +1676 +1491 +1983 +1743 +1845 +999 +1478 +1929 +1819 +1385 +1308 +1703 +1246 +1831 +1964 +1469 +1977 +1488 +1698 +1640 +1513 +1136 +1794 +1685 +1802 +1520 +1807 +1654 +1547 +1917 +1792 +1949 +1268 +1626 +1493 +1534 +1700 +1844 +1146 +1049 +1811 +1627 +1630 +1755 +1887 +1290 +1446 +1968 +168 +1749 +1479 +1651 +1646 +1839 +14 +1918 +1568 +1554 +1926 +1942 +1862 +1966 +1536 +1599 +1439 +1766 +1643 +1045 +1537 +1786 +1596 +1954 +1390 +1981 +1362 +1292 +1573 +1541 +1515 +1567 +1860 +1066 +1879 +1800 +1309 +1533 +1812 +1774 +1119 +1602 +1677 +482 +1054 +1424 +1631 +1829 +1550 +1636 +1604 +185 +1642 +1304 +1843 +1773 +1667 +1530 +1047 +1584 +1958 +1160 +1570 +1705 +1582 +1692 +1886 +1673 +1842 +1402 +1517 +1805 +1386 +1165 +1867 +1153 +1467 +1473 +1803 +1967 +1485 +1448 +1922 +1258 +1590 +1996 +1208 +1241 +1412 +1610 +1219 +523 +1813 +1123 +1916 +1861 +1020 +1783 +1052 +1140 +1994 +1761 +747 +1885 +1675 +1957 +1476 +1382 +1878 +1099 +1882 +855 +1905 +1037 +1714 +1988 +1648 +1135 +1859 +1798 +1333 +1158 +1909 +652 +1934 +1830 +1442 +1224 \ No newline at end of file diff --git a/2020/Day10/input.txt b/2020/Day10/input.txt new file mode 100644 index 0000000..40f0a09 --- /dev/null +++ b/2020/Day10/input.txt @@ -0,0 +1,106 @@ +145 +3 +157 +75 +84 +141 +40 +20 +60 +48 +15 +4 +2 +21 +129 +113 +54 +28 +69 +42 +34 +1 +155 +63 +151 +8 +139 +135 +33 +81 +70 +132 +150 +112 +102 +59 +154 +53 +144 +149 +116 +13 +41 +156 +85 +22 +165 +51 +14 +125 +52 +64 +16 +134 +110 +71 +107 +124 +164 +160 +10 +25 +66 +74 +161 +111 +122 +166 +140 +87 +126 +123 +146 +35 +91 +106 +133 +26 +77 +19 +86 +105 +39 +99 +76 +58 +31 +96 +78 +88 +168 +119 +27 +45 +9 +92 +138 +38 +97 +32 +7 +98 +167 +95 +55 +65 \ No newline at end of file diff --git a/2020/Day10/main.py b/2020/Day10/main.py new file mode 100644 index 0000000..ad0bff9 --- /dev/null +++ b/2020/Day10/main.py @@ -0,0 +1,24 @@ +import collections + +if __name__ == '__main__': + + with open("input.txt") as f: + raw = [0] + for i in f.read().splitlines(): + raw.append(int(i)) + raw = sorted(raw) + raw.append(max(raw) + 3) + + diffs = [] + for i in range(1, len(raw)): + diffs.append(raw[i] - raw[i - 1]) + + diff_counter = collections.Counter(diffs) + print(diff_counter[1] * diff_counter[3]) + + ways = [1] + [0]*raw[-1] + + for i in raw[1:]: + ways[i] = ways[i-1] + ways[i-2] + ways[i-3] + + print(ways[-1]) diff --git a/2020/Day11/input.txt b/2020/Day11/input.txt new file mode 100644 index 0000000..57f9323 --- /dev/null +++ b/2020/Day11/input.txt @@ -0,0 +1,95 @@ +.LLLL.L.LLLL.LL.LLL.L.LLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLL.LLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLL..LLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLLLLLLL.LL.LLLLL.LLLL.L.LLLL.LLLLLL.L.LLL.LL..LLL.LLLLLLLLLLLLLLLLLL.L.LLL.LLLLLLL.LLLLL +LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.L.LLL +LL.LLLL.LLLLLLL.L.LLL.LLLLLL.L.LL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLL.LLLLLLLL.LL.LL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL.LLLL.L.LLLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LL.L.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLL. +LLLLLLLLLLLLLLL.LLLLLLLLLLL..LLLL.LLLLLLLL.LLLLLL.LL.L.LLLLL.LLL.LLLLLLLLLLLLL.LLLLLLL.L.LLLL +....L..L.....L......LL...L.LL.......L...L.L......L.L.LLL....L..L....L.LL..LLL....LL..L..L...L +LLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLL.LLL.LLLLL.LLLLLLLLLLLL. +LLLLLLL.LLLLLLL.LLLLLLLLLL.L.LLLL.LLLLL.LL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLL.LL.LL.LLLLLLLL.LLLLLLLLLLLLLLLLLL..LLLL.LLLLLLLLLLLLL +LLLL.LL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.L.LLL +LLLLLLL..LLLLLL.LLLLL..LLLLL.LLLL.LLLLLLLLLLL.LLL.LLL..LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL..LLLL +...L...L..LL....L.......L...L.......LL........LL.....LL....L.....LL............L..LL....L.... +LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLL..LLLLLLLL.LLLLLLLL.LLL.L.LLLLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.L.LLLLLLLLLLL.LLLLL.LLLLLLL..LLLLLL.LLLLLL.LLLLLLLLLLLLL.L.LLLLL +LLLLLLL.LLLLLLLLLL.L..LLLLLLLLLLL.L.L.LLLLLLLLLLL.LLLL.LLLLL.LLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLLLLLL.L.LLLL.LLLLLLLLL.LLLLLLLL..LLLL.LLLLLLLLLLLLL +LLLLLLLLLLLL.LL.LLLLL.LLLLLL.LLLLLLLLLLLLL..LLLLL.LLLL.LLLLL.LLL.LLLLLLLL.LL.LLLLLLLLLL...LLL +LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.L.LL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LL.LLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLL.L.LLLLL +...........LL.....L.LL....L....L..LL..LL.L.LLLL........LL.L.LL..L......L...LL...LL..L.L...... +LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLL.LL.LLLLLL.LLLL.LLL.LLLLL..LLLLLLLLLLLLLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLL..LLLLL.LLLLLLLLLLLLL +LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.L..LLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLL..LLLLLLL.LLLLL.LLLLLL.LLLL.LLLL.LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLL +LL.LL...L....LLL.L.L....LL.L.....L...LLL..LL.......L.......L.......L..L......LLL..L.LL..LL..L +LLLL.LL.LLLLL.L.LLLLLLLLLLLL.LLLL..LLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.L.LLLLLLLLLLLLLL.LLLLLLLL.LLLL +LLLLL.L.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLL..LLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLL +L.LLLLLLLLLLLLL..LLLLLLLLLLL..LLL.LLLLLLLL.LLLLL...LLL.LLLLLLLLL.LLLLLLLLLLL.LL.LLLLLLLLLLLLL +.L......LL...L.L....L...L...........L.LL...L.LLLLL.....LL....L......L.LL..L..L.....L...L.L.LL +LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLL.LLL.LLLLLL.LLL..LLLLLLLLL.LLLLLLLLLLLLLL..LLLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLL.L.LLLLL +LLLLLLLLLLLLLLL.LLLLL.LLL.LL.LLLL.LLLLLLLLLLLLLLLLLLLL.LL.LLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL +LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLL.L.LLLLL.LLL.LLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL +LL.L.LLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLL +LLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LL.LL.LLLLLLLLLLLLL +..L....L.L.LL.L.........L...LL.L....LL......LL..LL.L.L.....L..L..L..L..LL.L...L..L....L...... +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLL..LLLLLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLL.LL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL..LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLL.L.LLLL.L.LLLLLLLLLLL..LLLLLLLLLL.LL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLL.LL.LLLLLLLL..L.LL.LLLLLLLLLLLLL +.L......L....L.L.L...LLLL......LL...LL...L...L......L..L...........L......L.......L....L.L... +LL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LL.LLLLL.LLLLLLLLLLL.LLL.LLLLL.LLLLLLLL.LLLLL.LL.LLLL.LLLLL +L.LLLLL.LLLLLLL.LLLLL.LLLLLL.LL.LLLLLLLLLL.L.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLL.LLLLL +.LLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.L.LLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLLLLLLL.L.LLLL.LLLLLLLLLLL.LLL.LLLL.LLL.LLLLL.LLL.LLLLLLLLLL.LLLLLLL..LLLL +.L.....L...L....L.LL............LL..L.LL.....LLL..L.............L...........L...L.L.L........ +LLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLL +LL.LLLLLLLLLLLL.LLLLL.LLL.LL.LLL..LLLLLLLL.L.LLLL.LLLLLLLLLLLLLL.LLLLLL.L.LLLLLLLLLLLL.L.LLLL +LLL.LLL.LLLLLLLLLLLL..LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLL.LL.L.LLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL +LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL..LLLL..LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.LL.LL +.LLLLLL.LL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL.LLL.LLLLLLL.LLLLL +LL.L.L...L...L...LLL.......LLL..L.L...L.......L......L.LL.......L..LLL.L..L.L.LL..L..L.L.LLL. +LLLLLLL.LLLLLL..LLLLL.LLLLLL.LLLL.LLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLL +LLLLLLLLLLLLLLL.LL.LL.LLLLLL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLL.LLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLL +LLLLLLL.LL.LLLL..LLL.LLLLLLLL.L.L.LLLLLLLL.LLLLLL.L.LL.LLLLLL.LL.LLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLL.LL.LLLLLLLLL.LLL.LLLL. +L.LLLLLLLLLLLLLLLLLLL.LLLL.L.LLLL.L.LLLL.L.LLLLLL.LLLL.LLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLL.LL.LL +.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLL.LLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLL.L.LLLLL +LL....L....L..L.L.....L.L...L...L.....L.....L....LLL..L.L..L..L.LL.L...L.LLL.......L....L.LL. +LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLL.LLLLLLL.LLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.L..LLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.L.LLL.LLLLLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL +LLLL.LL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLL.L.LLLLLLLL.LLLLL.LLLLLLL.LLLLL +LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLL..LLLLLLLL.LLLLLL.LLLL.LLL.LLLLL.LLLLLLLLLLLLLL.LLL.LLL.LLLLL +LLLLLLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLL..LLL.LLLLLL.LL.L.LLL.LLLLLLLLL..LLL.LLLLL.LLLLLLL.LLLLL +..L..L..L.L.......L..LL...L.L..LL...L............L.L...L.....L...LL..LL......L.L...L.....L..L +LLLLL.LLLLLLLLLLLLLLL.LLLLLL.LLLL.LL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL +L.LLLLL.LLLLLLL.LLLLLLL.LLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.L.LLL.LL.LLL.LLLLLL +LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.L.L.LLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.L.LLL.LLL.LL..LLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLL.LLLL.LLLLLLLL.LLLLL.LLL..LL.LLLLL +LLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LL +LLLLLL.LLLLLLLL.LLL...LLLLLL.LLLL.LLLLLLLL.LLLLLL.LLLLLLLLLL.L.L.LLLLLLLL.LLLLL.LLLLLLL.L.LL. +LL.LL.L.LLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLLLL.LLLLLL..LLL.LLLLLLLLLLLLLLLLL..LLLLL.LLLLLLL.LLLLL +LLLLLLLLLLLLLLL.LLL.LL.LLLLL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LL.L.LLLLLLLLLLLLL +LLLLLLL.LLLL.LL.LLLLL.LLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLLLLLLL.LLLLLLLLLLLL.LLLLL +L.LLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLL..LLLL +LLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLL.LLLLLLLLLL..LL.LLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLL \ No newline at end of file diff --git a/2020/Day11/main.py b/2020/Day11/main.py new file mode 100644 index 0000000..6f232d4 --- /dev/null +++ b/2020/Day11/main.py @@ -0,0 +1,35 @@ +import collections +import copy + + +def getNeighbors(): + count = [temp[x][y + 1], temp[x][y - 1], temp[x + 1][y + 1], temp[x - 1][y + 1], temp[x + 1][y], temp[x - 1][y], + temp[x - 1][y - 1], temp[x + 1][y + 1]] + + count = collections.Counter(count) + return count + + +if __name__ == '__main__': + with open("input.txt") as f: + raw = list(f.read().splitlines()) + + while True: + temp = copy.deepcopy(raw) + for x in range(len(temp)): + for y in range(len(temp[x])): + line = list(temp[x]) + symbol = line[y] + if symbol != '.': + neigh = getNeighbors() + if symbol == "L" and neigh["#"] == 0: + line[y] = '#' + if symbol == "#" and neigh["#"] >= 4: + line[y] = 'L' + temp[x] = line + if temp != raw: + break + + raw = copy.deepcopy(temp) + + print(getNeighbors()["#"]) diff --git a/2020/Day2/input.txt b/2020/Day2/input.txt new file mode 100644 index 0000000..1dde3c2 --- /dev/null +++ b/2020/Day2/input.txt @@ -0,0 +1,1000 @@ +8-9 n: nnnnnnnnn +14-15 d: dzjgbdwdkdhdddh +16-17 m: mmmmmmmmmxmmmmwmm +7-17 d: pmgdhpqbqdhshgtjt +1-2 b: mvmgzbmfbrcnr +16-17 c: cccccccccccqcccgcc +1-6 x: ctqxsh +1-5 l: lllvw +9-10 k: kkkkkkklrsnk +7-9 g: xsgzggbglgtm +3-4 b: brwb +4-5 x: xdxlfx +5-6 c: cccccc +4-7 v: vvvvvdpx +2-7 s: qwdngzbtsntgzmxz +6-8 s: ssssssssssss +2-3 t: tjcttt +2-4 z: nbgfl +11-12 z: gnjzwzwzzwcbhv +4-5 v: tvkfvnvvvvcv +1-3 h: hhbhh +15-16 g: gggggggggggggggv +6-9 t: ftjztttfnztv +2-5 v: vxpmqvvzvnglvvv +2-4 r: rsxq +3-4 k: kxkk +2-3 k: kkkk +3-6 t: ktttztt +1-2 v: zvcvv +14-16 b: bbbbbbbbbbbbbrbb +7-10 b: sgmbgmxbxnpjgpthcbr +5-13 r: wmfmgmxxwgbrpllfqnjj +3-4 t: ftcd +2-3 z: szzf +1-6 j: cxjjbj +2-3 t: ttvt +2-6 h: hhkszjhjjxhqhrhn +3-4 s: ssns +4-8 x: xcjmwxxxlrqxxfx +3-10 g: ggvggggkgrggggggxg +2-6 z: lzmhmvftsvcjfhfw +9-14 x: xxxxxxxxhxxxxxxxxx +8-16 d: dddddddddfdddddtd +1-2 g: wrhg +2-7 r: krjrxmrrvhzrprr +11-18 v: vvwvdwslcxvtkzvvkr +9-10 m: mmmxfmmmmmmmmmmz +7-12 g: ggktlgggsqpgw +6-8 t: tttttbtpz +8-18 h: nfhhwkthhxhhcshhwh +10-16 c: smnclksccmnmcmzcc +14-15 f: nmndkphffnqmffj +4-10 f: ffcwqvfffffvfg +6-13 v: vvnvvcvxwxfvvvvvvvv +1-4 k: qklkkkspwkxfk +7-9 w: wwwwwwwwk +9-10 c: ccccccccbpc +11-14 r: qrxrjbbtrxrrrr +2-5 j: wckjjdjjjzvhsqr +10-12 x: xxxxxxxxxcxxx +3-8 l: vnlslkhlwdd +4-12 n: nxnfnqnnzmngnn +4-5 z: zzgpzzc +4-5 z: zgmtbz +2-3 v: vkvv +11-12 q: mqrqmlfqqqqlq +6-14 g: lggzggfxggsggqggxg +3-8 q: sqzqrbgvzp +6-7 l: lllklll +5-7 c: czrccvcclm +11-17 r: rrwrrrrrrdrrrrrrbrrr +2-4 x: xsxx +3-9 l: llllllllwl +3-19 c: ccccccccjccccvczcccc +5-6 h: zhvhhhhghb +1-3 t: ttttvttwt +1-5 p: ppppppp +3-4 g: ssvgr +5-6 t: ndjbtttnmf +14-16 f: fwptdqwwpztqhfnswts +1-2 h: ffvmvbhmh +2-3 f: gdrz +1-2 l: slll +3-5 w: zwwwrwwwwwwww +1-3 w: fszt +8-9 j: jjjjjjjjrj +4-9 k: kkkskkkkkkk +4-9 p: sppzppqpplpp +2-9 s: ssvxrrjhs +11-14 v: cvvvvvvvkvvvvvmv +1-10 q: qqqcmqfjqs +3-7 z: sgzzfzkzz +5-8 w: wwwwhwrztw +3-10 p: phbbmpzhpppspdfr +2-8 c: cscpcccg +2-4 r: rsvr +14-16 h: hhhhhhhhhhhhhhhh +1-13 j: jjjjjjjjhjxjxjjjj +7-8 v: vvvvvvvvv +4-8 r: vbhlmwrrvmkrwn +3-4 c: ccdc +3-5 h: hbjxx +3-4 q: qqdqq +10-14 k: dkkwnrkkhkwzhkkkk +1-3 z: zzzzzzm +3-7 t: tbtxfttvw +6-18 n: qntgnnnztkhwtnjrnm +4-5 g: gggrng +2-7 c: bclzgcgq +1-8 j: jbjjjjjj +2-3 x: jxxfbtxskxc +5-7 g: kgszqgcgxgqtppgb +1-6 l: llllltll +3-4 g: brgm +12-16 x: xsxxxxqpxxvxmxjxxx +6-7 k: kkkkkkk +3-9 f: fftbvjfvfffstzfff +14-15 r: khlwrfrcnrkddrh +2-4 h: hwhqm +4-5 z: zzzzd +7-10 b: bbbbbbpbbt +8-10 h: hhhhhhhdhn +5-6 c: bccclt +7-11 p: pppppppppppp +4-6 r: rwrrrrrr +9-17 m: mmmmmmmmmmmmmmmmmmm +3-9 n: nnnfnnnnjnn +3-4 q: rqqcq +1-2 z: mbzz +1-6 h: hhhhhs +10-11 h: whhhrvtghhh +5-6 g: ggggjz +5-8 g: gggbgggvg +15-16 v: vvvvvvvvvvvrvvtv +5-7 q: qwrzqbllqqqrgkqnlsr +2-4 c: ccccc +7-14 p: spppxpppphblprm +4-9 j: qzxlxdzsdlnlhw +2-4 l: lzphl +16-17 g: ggggggsgggggggxpqggs +3-17 d: ddddddddddddldddcddd +10-12 n: qtkgqxknvjnnsbnrwtp +8-13 d: dddddddcddsdkdd +7-16 v: wkntvjdvvwvfvnqvm +2-5 w: vwhjw +2-3 f: dmgff +2-5 p: nklmmzp +4-5 x: vxxxxd +1-2 m: mmmqm +9-12 r: rrrrrrrrqrrm +6-9 r: ldvhvrjdkqhmr +2-9 f: fmkffptffzdgk +5-12 x: xxxxxxxxxxxbxxxxx +3-4 w: bwwqgwt +10-11 f: fffffffffhfff +10-13 n: nnfnmnhnnnnnmn +12-13 n: nnnnnnnnnnnnnn +8-13 z: rzzfbzzdrzlkn +13-14 p: qgkxppfppfjcnx +3-4 z: bcxdctzg +3-9 z: zznzwzzmffqxj +1-2 n: nnnznr +2-6 s: mtspsskswf +2-15 g: ggggggggggggggqg +3-8 x: tzxqfjrkpdgkxptbxm +15-19 v: dvcvvvvvvvvvlvqvvvv +4-9 r: dszrbrbzrwlfxpcrkn +6-7 f: fffffsmf +5-8 v: vdvvvvrv +10-11 m: mmmmrmmmmmhmmm +9-12 s: stwssszcsssr +8-15 j: jjbjjjjjjjjjjhj +6-8 v: vvvvvhvv +1-7 w: ghxwddwwbfchvtff +6-9 v: vvtxxrbqpvdvvv +3-5 q: fqfqrskl +15-17 k: kkkkzkkkkvbkkksrlkkk +2-18 w: rtfwsrwcbpwtwjzmwwws +5-7 f: pfshgsnff +8-20 h: jkkhhhssfppkjqdfdhtp +2-7 b: bblqbfhbbbb +3-6 j: wjmjjxjj +4-13 d: dfzdkqpddgchbhtgg +4-7 x: xxxxtsn +5-6 m: mmmmmmtm +4-5 p: pkmppck +1-14 j: jpjjwjjkjjmxkjwqj +3-4 s: qxsfvs +8-9 k: kkkwkzxrvkkkk +13-15 r: qzrzrrbrxrcrzjpr +1-4 l: lmvlj +1-4 l: mrll +11-15 w: wqwwwnwwwwtwwfwwjww +8-9 g: fggzsggmggggccm +2-5 f: vggqfcffxh +2-4 c: cwcccr +11-12 c: ccccccccccfc +3-5 g: ggmggg +10-11 l: llllllllrll +5-6 v: wvdjvv +6-7 p: ppppphkp +7-10 c: tcccccnccjcccc +8-10 m: mmmrmmlgmt +3-14 j: ljsjjjjtjjjjjhj +10-16 c: kcjcccccccccnvtccccc +1-9 n: tnjnnnnnnnn +3-7 h: mhdpxhhh +15-16 c: ccccccgcccccccgcc +6-8 t: tvkddtrt +3-4 k: fkhjk +9-11 v: bqmhnjvpvxr +7-9 x: xxxxxxsxpx +16-17 h: hgjzqhvqhsgcplwmhvth +16-17 p: ppppppppppppppkqvp +8-11 l: lllllzlbclslt +4-18 k: kkkkkbkkkkkqkkkkkks +1-8 b: cxbvpxbzbsz +1-12 f: ffffffffffffffff +13-19 d: ddddddddddddkddddddd +9-11 v: mtvvvvvvhvgvv +10-11 t: tttttttttdtttt +5-9 g: gglgggpgdlgtcqg +7-10 m: mzmmmmmmrn +5-6 q: qqqqsq +8-11 f: ffrcfbfnwffzfpxfbvf +7-10 f: ffvfffxbpfffmjfqb +2-3 r: rrrr +6-7 x: bxxxxxgj +3-5 j: jljndr +4-14 q: qqqzqqqqqqpqqdqqqqqq +3-6 n: nnnnntnnn +15-16 g: ggggggggggggghggg +13-16 x: jxxzqxvxfhxxvggxdqx +4-6 f: zfxfkfhmsfgjf +9-12 r: rrrrrrrrgrrnrrrrv +3-7 w: wczsqxwdw +9-12 k: hxgkkklkkkkwkkk +1-4 s: sssns +5-6 v: vvdvlv +12-14 g: gsgggggggggggkgg +5-16 r: rlkqflvvtfcdckfrn +18-19 c: cfncccccccccccccclzc +4-8 n: nbntnnnvnnnnnn +3-6 l: jfpxllfrbll +4-14 k: xphrkstmqmqhkw +2-10 b: rrsrbbqvbr +5-7 k: wkbgkkkqfkkkk +5-6 k: kkkkkkk +7-10 k: mqrsjkksskswqz +11-14 x: kxxxxxcxxxnxpbdx +2-15 h: hhhhhhhhhhhhhhh +5-12 p: pppjpvgppppppppprv +2-11 l: lzlllllllpdlll +5-7 t: xwtzttvctqtpvbltpbtt +2-18 k: ckhhplvxfrdqkbjhbkpp +12-14 k: rkkqvkfngkkqjn +3-7 n: mtxnkbnw +3-11 z: zzzbzzzqzmzzczzzz +3-4 m: mmmq +2-7 s: ssssskcnssgnkzd +3-4 g: rmgrggd +2-3 h: grhrtpcch +2-6 d: dddddddv +3-7 g: jggggggggrfggggg +5-6 v: ljztvvqrcsjdnlwv +2-6 x: vxxtwk +2-8 v: vvvvvvvvjv +3-5 h: dwhwv +2-7 n: ttxgbdbwnnnvnnx +2-4 c: cctfcsb +16-17 c: ccccccccgcxckccxccc +5-6 x: xxxxxx +2-6 p: pwndpfrpppppppppppkp +1-4 h: zhhjlh +2-5 p: prpxwppljppvwjtppkp +2-6 j: bjjjjjjf +16-20 p: pmppppbpppppppppsdpn +1-3 b: bbbh +8-11 k: nkxskkbkfjvcjkdcgrk +7-12 c: cqcdcccgchnd +5-7 m: mmmmmmmmmmmmmmm +4-12 j: kjdjjvrjxsjw +7-16 c: dfzcsdcdgrxvfkjzccmw +1-12 m: mmmmmmmmmmmmmmmmzmm +1-2 s: sssws +1-5 x: xrtxs +3-4 w: wvwv +6-7 s: sssssss +11-12 m: lbwtvjjmmggm +16-17 l: llllllllllllwllht +11-13 t: qtttttgtttttdmt +2-5 r: ldgrf +13-18 r: rrrrrrrrrrrrrrrprr +12-19 l: lnfnhllrjgcllhjlczl +6-7 c: clccccv +9-14 b: shlfbcxhbbmbbzbg +4-6 s: sjssvxdx +11-12 v: vvvvjppqkvqv +5-7 j: jjjjmjjjj +8-11 l: dsldfrdvbll +3-4 p: pkvmcps +2-3 s: ssss +8-11 j: txbxnpwqxjm +4-6 d: drdvdd +4-8 v: xgwkxvfq +1-5 t: zttttttttqmtt +5-8 c: ccjccccqc +9-18 z: zzzzzzzzzzzzzzzmsgzz +1-4 q: qqqkq +10-11 w: wwwwwwwwwwww +5-9 r: prtdrksjbmzmrq +1-3 v: bvvnsmrdgxmnxjjv +6-11 d: drnkdpvdvhfrfgzkn +5-9 h: khhrhhhtvhtznhf +1-3 g: gfpgn +4-5 p: pppfg +8-19 n: nnnnnnnrnnnnnnnnnnzn +6-13 c: cztfcwpjcczsc +3-4 r: rrrg +4-6 t: tfjvtv +4-7 g: nggggggg +2-3 c: cmkc +7-15 r: jrrrrrrrrrrrrrwtrrqr +8-12 h: hjtpfjpbbzwhw +7-8 d: jddddddd +1-9 s: lsssssssmss +18-19 m: mmmmmlmkmmtdwmmmmmh +5-9 t: ttzstqtmt +7-11 x: xxxwxxxxkxxxxgfxxx +2-3 s: dssjzpsxjr +3-4 g: gcgtg +3-4 f: ffxff +9-11 v: tvvvvvfslvvfvv +1-7 n: nmlfmnz +5-6 q: gqzqtqlq +4-5 v: pvvvczdtwthvc +1-3 z: zzrd +6-7 b: sbbmbnbbrp +3-7 l: lkllvqplww +7-9 s: sssssssss +1-8 g: gggkvggsgg +5-6 n: nhnplpl +2-9 g: vgnfzjfvjmmtgd +1-4 d: dcddddddqdh +1-9 z: zzzzzzzzzz +8-10 q: wqhcwqdqqq +7-18 z: tfrfdpwpphzplxfbnw +7-10 f: rffnjdnffmfffrzfqgz +6-7 p: pppppppp +2-13 n: cndfbtxgqzmtnmq +14-19 v: vvvbvvvvvpvvvsvvvvvv +8-11 b: bbblbtwbbbbbb +3-5 v: rfvvv +15-17 n: snmnnnnnwnnnnnnnnnn +4-12 q: sqqqhwnbqqxqbvfrk +4-6 l: lllllvl +17-18 c: cccccccccccccccccc +1-12 t: gttttttxnttzttt +16-17 t: kfmtctsqttztmsxtf +7-14 f: ffffffcjffcfjfff +5-19 b: jtvbbbrbbbjbcsbbvvb +7-8 g: gggggggk +2-4 w: dwvwww +1-3 r: rrrrrrm +7-8 q: qqcqqqqq +6-9 m: tvglftcxmmnshcvscp +3-6 m: cmgmmdmm +6-9 k: kkkdkwzkgk +2-15 w: bwqwwhpwvfpdwdvjwvk +7-8 h: jdhhnhrdghh +3-6 l: llxllpl +4-11 q: ggrjmwhrqdc +7-8 w: cwcwwwwwww +5-6 s: sssssls +6-9 w: rwjwjwwww +1-8 c: ccncccccccccc +2-4 b: xkbbf +6-9 t: ttttttttrt +14-15 h: hbhhhhhhhhhhhhw +14-17 t: ttttgtttdttttttttt +4-7 q: gqmqrqr +9-11 j: tjjjsjwjglpjjjkjjg +18-19 j: jjjjjjjjjjjjjjjjjjf +15-17 p: ppppvhppppppppppp +3-5 d: jlqcqdnprnddpd +6-8 n: nnnnnnnn +5-7 h: cwhhthhhv +3-5 z: wqzmzpbjstzjpfww +2-9 c: fkthkshccccczcph +11-12 c: hcsscmqcdcgp +8-9 t: tttttttkq +3-4 m: tnmcvtljnpdphg +11-19 l: wqjvlvzrgxlvrngwlktj +6-14 s: dxzsssssmzgsmssss +4-7 c: ccckjchc +8-9 s: ssssssrslsm +16-17 b: bxbbbbbbbbbbbbbbz +3-12 p: mpnpplpkppmbp +14-15 v: vvvvvvvvvvvvtvv +5-6 d: kttkndlslhfg +3-5 w: tlwwl +3-4 n: wnhn +13-14 r: zrbmrrrrrrrrmrrr +3-5 f: fzwgrmzpkcfqkftmz +5-6 s: ssssss +5-7 h: wxpzhhzgwhdxqhmhw +8-12 j: djsgjqjjjjjdj +13-15 h: hhhrhhlhhpjhhhr +6-7 v: vwvmvhw +1-9 k: dmwkkkkzk +1-2 g: ggtkbgvgtvggx +10-18 r: rrrrrrrrpkhrrrrrrxrs +5-10 n: nxbslftnwpnn +4-5 d: ddhdd +12-15 l: lllllllllllllhlll +2-3 m: mmmmmmmmmmmmmmm +1-8 s: ssshsspm +3-5 b: nblhbdbbb +2-4 t: qtjtctndq +2-14 v: vcvkvvttxvkvpvhvvd +12-16 g: gqckxjtggwzgtlqrtjkf +3-10 s: ssvssssrsssbss +2-4 n: knln +4-10 f: xfqlfffbflm +1-3 s: mssshjgshpfrssrss +4-5 t: nttbj +2-13 w: lwqwmwhthzrtwkgp +1-3 r: jrnqb +3-13 k: khkkkvkkfkkqkkhfwzf +4-8 g: gggwgggg +3-4 g: wgjgxhngdt +7-9 k: mgshkgnhkpkjsmkvjp +7-9 d: gdjrfqndcdhddmdhdd +17-18 g: gnggggggggggggggng +14-15 g: ggrgggggggggggg +2-7 x: sxpwxddpxnxtxft +5-6 r: grdvrrrrrwrrrrrgvq +4-5 f: ffffff +8-9 f: fffxffzgff +12-15 f: dfffffffpffgffjlfmvf +10-14 l: dlflltmllplljllvlzll +1-2 j: jtnftndqklxzj +1-5 d: ddjwrdddddddhdddddz +13-14 j: lgztjqgjfbjfxff +5-7 k: kkklqkz +15-18 m: hwvmmpmmpqwsmrwmmmsm +5-6 h: hlvhhhqhlh +2-4 j: jjldjjjx +10-11 f: ffffffffffffff +15-16 t: ttttttttttttmtjttt +3-4 v: vvvv +8-9 n: nndhnclnnnnnrwnn +5-6 r: rxrrrrfrr +4-18 p: vwmppgpzltpplvwvpg +9-10 z: fzzzzzzzrzzz +4-6 n: nnbnvnnn +10-11 x: xxgxxxwxxfrwk +3-14 v: tqvvvjvdvvvzkvvvvv +11-13 z: zzmzzzzhrzrzzzzzp +5-6 s: ssgwsvssqs +2-5 z: zbzfzzds +2-5 s: sssss +1-18 r: rrrrlrrrrrgrrrrgrr +2-3 v: vgvvvvv +3-13 c: qdcvfvkjtczgb +3-9 h: hvhhhhhshh +12-13 x: xdxxxxxxxxxxxx +3-17 q: qqqqqqqqqqqqqqqqcq +12-14 q: khnjqkkxlzpqhqj +14-17 t: tttttttttttttsttpt +15-16 d: kwpdfkbhcdhkwsdh +2-15 m: fmdvntdqklcvmhmqjl +5-7 q: qqqqvqnqqq +3-4 j: mnjjj +4-15 f: lfbffxfpffsfbdfhpfs +8-9 s: sssssssgr +12-14 b: bbbbbbbbbrsbbnbb +2-3 x: xbxpvc +10-14 v: vvvvvvvvvvvvvx +6-13 f: kfvfcfffvfhdn +4-16 k: gnzkfdkmrjvwdjgkf +2-5 l: lljll +2-4 r: dprr +1-20 v: vvvvvhvvvvvvvvvvvvvc +1-2 l: mlzljlvllkpzll +4-13 r: kbzrzdrmdvfcl +6-7 v: vvpvvzvv +6-16 h: dxfwghscmjgfqmmf +6-9 h: hhthhfhhdh +6-10 j: bvqrjjjfdtjjjjj +4-7 k: gklkcrvvkk +2-8 k: ndtdhjpb +13-15 f: ffffffffffffffb +6-7 m: mmmmmmzm +2-15 g: xbgxgfgftvgvgmcgnxc +4-8 q: xkrqvqqq +4-9 v: vvvvvvvtbv +8-16 w: wwwxwxwbbwwwtdww +8-11 h: hdhhhhhcght +3-4 f: ffsb +12-13 h: hhhhghhhdmpfhh +6-7 f: ffdmgfh +1-2 c: pcsc +4-6 q: lkzqqmqqq +3-4 b: bbjg +3-6 f: lmbzffl +10-15 p: prxpdpwqpwplpppp +10-12 p: pppppppppppfp +7-8 m: mmmmmmmjmq +5-8 j: jjjfjbjtjj +8-10 t: tttttttmtm +5-11 k: kkkrhkkkkkk +2-3 c: jcccwcbwfrckb +3-10 n: qnnnnnfnnknnnnfnxn +12-13 h: hhhhhhhhhhlhh +9-10 s: smspmjsssss +6-7 d: dddddmdnd +9-10 g: kpnbgstjjgtbhk +9-13 s: ssssssmshsbsxss +1-2 s: lsfsss +8-9 n: nnnnngnnn +9-10 s: sssfssnssssjs +6-8 m: mmxmmmmmm +4-6 x: xtxjxx +8-11 r: qrqkrwbfjln +9-10 h: hfhhhhhhvq +6-10 k: kpkpkjkkkvk +7-10 b: bbbbhbkmmgbvk +8-10 k: kkkkkkkkplvmmk +1-2 r: rrwr +2-5 d: tdddrddgq +7-9 j: jjjjjjjjfj +15-17 m: mmmmmmmmmmmmmmmmj +5-6 v: vvcvvvfwjvvtn +14-18 t: kznfxrrtfcdntttjrt +3-4 c: cjdcc +17-19 q: qqqqqqqqqqqqqqqqfqh +4-5 k: fzvkk +3-7 p: pgppppppppfpp +10-11 k: kkkkkkvkkkz +6-7 t: tttjcttt +2-4 w: kwlcwbgfwwtqpngnb +4-5 q: kqqvlq +16-17 q: qqqqsbqqqqqqqqqbqq +19-20 q: lndjjddqcqkcjztwfxvw +4-6 p: pppmdccpp +13-15 x: xxxxxxxxxxxxhxw +1-9 d: lmdsdfbjpkmh +8-15 v: vthvwvjvcvvqvvhmvs +6-7 r: qxrrrrpr +3-6 n: cxzxnn +9-11 l: lllbhllhllbll +5-9 d: nbsqdctdkp +1-10 l: lllllllllflllllll +1-5 f: cdsfqzwfnjkhdj +2-5 m: clmgsmmdz +1-6 g: cbqgngzvjpxjbwnlprq +6-8 l: bfxrllllllw +6-9 v: qtcxqvmvvdptxvv +3-4 p: fjqx +5-8 t: tpnttxtlt +5-6 p: pppppf +12-13 q: qqqlqqqqqqqqw +5-6 g: hgggvx +1-2 x: qxxx +6-8 n: nkjnnpnnn +6-8 j: jjjjjjjfjjjjjjjj +4-5 s: sbsjm +2-6 m: lmtmlm +3-6 c: bzvhcccncz +3-5 l: lllglnlmpl +2-9 p: hpbwppwdrlpfwbdkmj +7-10 l: tlzwhnlrkrc +4-6 m: xmmmqdmcl +1-6 d: jkdmmd +5-7 c: cjqlhcdcc +4-10 z: xgtznmnznkzvz +13-15 z: zzzzzzzchzzzqzzzz +2-5 q: qhvqqz +1-9 l: nlllllllzlllllllll +4-5 q: qqqzh +5-7 t: ttpttdt +3-11 l: lmnxlthlmlzksggzll +2-5 q: qprnq +16-18 b: bbbbbbbbbbbhbbbtbgn +3-4 l: rlhl +8-9 n: nwdfntdnsnmzkqthl +6-8 h: hhhhhthv +1-2 x: xcxp +7-11 t: nttttctzxmtt +2-4 b: ksvb +17-18 d: dddddddddddddddpqd +3-5 x: lprxzdhxxvz +7-8 z: zgzzzzlzz +2-3 p: rcpxw +11-17 k: qkkkkkkkthkkkkkmkkk +4-6 s: ssrssswxsssmsk +5-8 d: ddddddddddd +5-17 v: vvtvvvtvdvvvvvvvmcw +3-8 r: rhvfrfcr +12-15 z: zzzzzzzzzzzpzzpzz +7-8 p: jppppvpp +13-18 d: dvdnddddddddgddsdd +10-11 q: hqnqvdpqdqqkq +2-4 x: jcxxl +6-7 q: qqfhfqjqr +10-11 w: kwpwwhwnwwwwwww +3-17 d: dddddddkddhdddddd +4-6 s: ssnhswswlsc +14-17 j: jhjjjrzjjmjfpzjjjjj +1-9 z: ztzhzwzzkdzzr +7-14 s: dcspnghrssxsss +5-12 w: ctbvvxzwbwgqw +7-9 k: kwkkqkkkgkm +11-15 l: gllclqplllrlnlpzllc +15-16 p: hpbpppppjpppppppppp +3-5 k: cklnfv +5-7 t: jczctqm +14-17 j: jjjjjhjjjjjjjsjjjj +9-10 g: gsknxggrgblfprf +5-6 m: zjmmqrflmfpmswcvvmtl +8-9 d: dxdddddds +16-20 w: wwwwwwwwwwwwwwwdwwww +5-7 s: ssssnsbs +5-8 z: bzbgzvzz +2-5 b: wbpkbbnkhcndh +11-13 r: rrrrrrrrrrkrsr +12-17 c: ksffzpccccspsqvjc +2-20 v: vvvtvjvjvvvvvvvvstvv +3-4 z: tzszjqzz +3-12 x: scpxgxqrtxxpjxn +13-16 w: wwwwnwjnzwwwwwwwwwwr +9-12 l: zxlrflvclgck +2-8 s: klsnwsdzbss +5-9 s: ssssssssns +1-9 q: fqqqqqqqqqqqqqqq +15-17 n: jknfnsvntjqglbnxn +15-16 h: gbpdwhhhhlthrjhh +5-7 w: cjwgkxdwwxl +1-5 j: jmnczjrlqchdwpthbjst +6-8 v: vvvfxkvvvv +5-8 g: ggbgqggmhg +3-15 v: vxvvfzvvwcxvjvvqvvq +6-14 h: drppknzrchcjhh +2-3 n: dgntnq +9-14 s: ssssssssxmsssxssssss +2-4 j: wjrdcjz +5-12 n: dntnnvbfjnznn +3-4 z: zzmnzbsrt +6-9 n: kngngnnbcnhp +6-13 k: tmsskkjkkvtksnm +2-4 w: rwhf +6-7 p: ppppppwdpvp +2-8 r: prqvprbrvrsjxm +1-8 f: gffffffff +6-8 b: lbmtblbptbxfdqb +4-10 r: rrsrrrnrrbmrngrk +10-17 b: bbbbbbbbbmbbbbjbhbb +2-13 v: tmvqcvvwvvqvzvdx +13-19 d: hrtlzplwdkshdbsjmsd +6-13 w: wwwwwwwwwwwwdw +14-16 q: hlkhpvdqrkhkqlhhlg +7-8 m: mmmmmmmx +11-12 p: pppfnpqppppp +4-5 k: kkclzkfk +8-9 k: krkkdkkkk +15-16 w: wwxwwwcwwwwwwwjw +12-16 w: wwwtmwnwqdwvjpwzwwz +5-9 d: wdddrdddrdkdkddd +5-6 p: qppbpvp +1-7 t: fgznlbtgwtnrlhgf +4-10 j: jjjjjjjjjljjj +3-6 z: spgznzcz +11-12 h: xhhhkfhhhhmh +3-12 g: ckgvgbrgcqrggggt +1-6 k: kkkkkjk +2-3 j: qzbf +3-4 r: rrlprrrrrrrrdrrrrr +13-19 l: llllllpllllllllllll +6-10 x: xxxxxjxxxxnx +2-12 f: jffffbffqftf +5-8 b: wbgbgbsb +4-8 t: jflltrxfgttqvrgt +2-5 z: fzzzszcwzz +3-6 w: whwwbnw +12-15 n: nndnnsnnnttnnnnnnn +4-9 c: mcsstwccc +3-4 q: dxwq +6-11 v: swmrlccvxzdrffvvwj +10-11 x: xxmxxxxxxmx +1-2 k: fkqk +15-16 d: nlnzddfrjqvdjwddmw +2-6 k: ldkdmnmcp +1-11 p: fptzpgpzfhp +12-14 b: bbbbbbbbbbtbbx +6-12 w: wwwpbwwmxwxz +1-4 r: mrrrrrr +13-18 w: wwrwgwrlwwwwwwwwwlw +16-19 z: szzzjzzmzzzzzzzzzzsc +2-7 v: qvvcsvd +7-10 s: mtskmnvnlcgsb +6-7 q: mkdqqqq +3-5 x: xwxmx +7-9 q: qsqjfqcqwnq +1-4 r: crcb +14-18 k: lfwklgqjzgxfpkpkfqr +9-14 j: jjjjjrjzjjjjjfj +5-6 x: xxxxxxh +1-17 z: gvczzzzqdqzzzzzmwkzd +11-14 k: dkkklkkpkkkktkkkkkk +9-12 j: jjjjjjjjqjjv +2-6 d: dthddmddd +4-5 v: qvfjfvvdlszqxvbl +4-5 n: nnndn +7-8 c: wqnmpcwf +1-10 c: cvgmnkcssrhqccmddgh +8-9 m: lmmtmxmsm +3-6 v: qvvnqvvrfhv +6-7 x: vxxxxmkjxxxxxxxxxxx +5-14 x: qxjgbxxxxprxxn +13-14 p: dphsqvhrfsbpqpp +3-5 r: trvrrxrrr +2-5 f: fffff +2-6 w: whwdwnwt +2-3 x: wxcsxx +10-14 p: pswtzbkslpqppph +3-5 l: zllllx +9-11 g: ggggggggggxgg +4-6 h: fvhhfhhfjqffhhhwx +7-8 t: wttttttf +11-14 q: qqqqvqqxzcqpqhqkpqtf +5-9 b: bsrbbbxkm +13-15 t: tttttkwtttttgttwt +4-7 c: czccvxtc +9-10 n: nwnnnnnnnn +3-5 f: ffdtf +13-14 h: hhzhhhhhhhzhphh +9-11 g: kgsfsnhsggglgsp +5-6 s: hbxpnsssvx +10-11 t: ltsrtmvmkgm +12-18 k: xlwkkkkktkkkbkkrjxkk +5-7 l: lnllwlw +16-17 k: kkkkkkklkpkkkkkknkk +11-12 t: ttttttttttttt +11-13 v: vvvvvvvgvvvvvvv +10-14 d: ddvddjdddkdddd +3-4 r: nrdrhnr +1-4 q: pqqxcsws +5-6 p: ppppjpp +14-15 b: bmbflqmbzhkbqvb +9-11 t: ttntttttnpt +15-16 l: llsllldflhblwlllf +5-10 w: swwwwnwncwtfrpnw +6-7 j: jjjjjthb +2-4 d: ddhdzfdddlp +2-9 q: jqqqqbqqqzq +19-20 b: bbbgbdbkbbhbsdpbbtbh +7-9 v: hvvvxvvvv +6-7 l: gsbslll +2-6 p: pzpppwpppppppppp +10-11 g: kmkngxnnrfh +1-11 v: rvdvvvvvvvv +2-4 n: nhndnnnnqn +12-13 q: qqqqqqqqqqqqm +7-9 s: ssssxsnsssss +2-15 t: ftntkfmqxzxggcfwb +1-7 v: vvwvvvqdvv +6-14 s: sbsssdssssssfqsss +3-8 w: vwwqwwww +6-10 z: zzzzzzczkzzz +5-8 b: bbvdmxqbbbbbbbbdv +4-8 s: stvsssszcswszs +12-13 x: xxxxxxxxxxxxxx +5-15 d: ngzjdxddjddxvbwzbd +1-10 s: ssssssssss +10-14 r: rnhrrrrrrrznrrr +1-7 z: nvzzzcvzzmzhnprzkz +2-9 w: zfmxnmltsbxpfsh +13-14 l: lllllblllllldgl +3-9 b: dbbrkmmfsmhblqb +1-6 t: tjmrctqggzdgtz +1-14 m: bmmmmmmmmmmmmmmmmmm +3-4 b: mwbndzbjp +9-11 n: nnnnnnccmnb +5-11 b: kpcbqbbbcmbkb +3-6 j: wpjjspjw +6-12 p: pppppppppppdppp +1-4 c: rccc +3-9 l: llllxllbllll +6-14 w: tlpcwxwwwzbtwd +3-4 q: qqqg +3-5 x: htxcvqkwx +15-17 r: rrrrrrrrrwxrrrrrr +8-10 k: kkkkkrkwkkw +3-4 s: jjwhksqrbxs +3-4 g: gvggg +11-13 t: tjgttvtdtbttttttqttr +5-6 j: jjjjmjjj +9-13 f: fffffffflffff +13-14 z: ccbzvzwmzpzzmz +6-7 b: bbjtbbbbbb +3-5 k: pkknmv +3-4 w: wmchw +4-7 b: bbbgbbbbb +10-13 q: qrqqqvxbplqqxqqqmqq +1-8 b: rbbbbbbjbbbcqbb +7-17 q: xqqqqqqqqqqqqqqtq +4-6 k: kqkkbbg +6-14 l: lglhbvslmhqjnw +4-6 w: pwwxxn +12-16 q: tvtqvcchgtmqqznb +8-14 q: hkthhbpjvkpxgq +11-13 m: smmffkhhkrmwnbwrs +8-11 d: dddddddddddd +4-6 m: lmdmmkwmmmfbs +12-20 w: wwwwwwwwwwwbwwwwwwsb +5-7 m: mrnhmplhwczr +7-11 p: pppppdbpppvpc +4-10 p: zpwsppfppj +3-12 d: dddddpfddrdln +8-9 g: chfcgzfgg +5-6 g: gggghg +7-8 q: hqqqxqqqqqqqqqg +4-10 c: cdtpvcccvd +7-8 s: sqwtsxsssss +5-11 v: pcvvrvxvvnpjn +4-6 z: hzmnzg +4-6 b: bslbbbxbbwml +16-18 z: zzzzzzzzzzzzzzzzzg +1-3 h: hhkh +2-4 r: wrtrb +5-6 d: ddddpd +4-7 k: kkkkkkkkkxk +8-13 k: pkkkkkkkkkgkkd +8-13 p: lpxppxpbpgppzppmppp +3-9 m: mmmmmmmmmmmmmm +6-7 h: cpmmhcttgx +11-15 b: bbbbbbqbpkfbbzh +4-7 j: jjqvjjj +6-8 c: gwrfrslcsqmcttzcl +11-13 r: mrrrrrpgrrnrrrr +3-8 q: tqqqqqqz +2-4 f: mtsxj +1-17 g: cgggggsgggdgcgrxg +1-9 m: mhgqjqxjnpmmmgnmfpm +2-4 g: rggbc +2-4 w: wgfw +7-9 d: qdmddddddmxdd +12-13 t: ttmjznwtwtttz +11-12 b: kjbkbgdbwbmcb +4-5 h: mhvhh +4-6 t: ttvttttt +9-12 r: zwlljhfrrfrr +3-4 j: jjjj +2-7 v: vvvvvvmvv +9-19 n: nnnnnnnnmnnnnnnnnnqn +1-3 q: qfflx +8-10 k: kkkkkkknkk +4-9 k: kvrspqfkkqj +14-15 b: bbbbbbbbbbbbbbbb +3-8 d: qrdsfdwd +5-8 j: jjxmrtjjjjkpnnjt +14-15 f: fnlnbzqffrrnffgf +1-4 f: fnff +4-5 x: xxxtx +5-6 q: qtqqlmqqq +14-15 f: fflffdfffffffkjfff +1-5 k: kkqkvkk +5-9 b: nbjtwbbgw +13-19 v: ssjjggrvrnbpvjlggsf +8-10 x: xxxxmxxxxx +4-5 d: vdwhtcsc +1-7 l: zlllllglll +2-5 d: drjpdwrlnpfqqrnlh +12-13 p: fthsszdpjcqxd +14-17 z: zzczzzzzzzzzzzzznzz +6-11 m: hhcsqmvmfgmkmbm +7-8 m: hmmmmmcmm +6-7 l: lllllgl +5-10 t: tttktdzttlcttv +6-12 m: nmmmpmmmxtmmjmxm +4-5 q: qnqnnqqqqqqq +1-4 c: zkpcc +5-6 n: nbphjnfn +6-7 f: ffffxqrf +1-6 g: lgggggggg +5-11 p: mbfpppplhdp +5-8 z: jzvzzkzm +5-7 l: llllllll +5-14 x: gvjvwmhxtzpsfxb +4-13 x: tvlfjxmpfrmqmkhrdlbl +8-11 b: nbbbbrcbbbb +8-10 w: ccccwwgwwwwl +2-13 p: wwwxrsfztddwplfpqx +17-18 c: ccccccccvccccccccj +11-13 d: dphdtwhqwdhmx +15-17 c: ccccccccwcccccccdc +3-4 d: ggjv +3-4 b: bbqbbqbx +2-3 g: qggg +10-18 w: wpbbfmdzhsnbcdxqrh +13-20 v: vpvvvvvvrvvvvsvvvvxv +16-17 w: vwwqhwwwfhwgdkhfw +16-19 b: bbbbbbbbbzpbbkbkbbjb +11-16 x: hczxsbkhxfbtxvzx +10-17 b: bbbbbbbbbsbbbbbbvbb +2-3 p: pppxsznnn +2-7 g: ggggsgggl +15-17 t: tttttttthttttttttttt +7-17 f: fffsfftfffffffffffqf +3-7 k: gpfmqbkqmkkkrpkpk +4-7 j: xpbgxjw +14-15 f: ffffftknfklfdff +1-4 k: pkkslkkkkk +4-7 w: czbwgqtpwztxwwbwmqf +1-5 n: tnnnnn +1-5 q: qdqtq +10-15 c: fccqccrkcccczcmcc +9-14 h: hhbbhhhhdhhhhhdhhh +2-6 f: fsbfdcvffhffm +12-15 h: jhhhhhhhhhhhhhs +9-11 p: ppppppppppbp +15-16 d: txdbddddjdsdbrvddddp +5-6 w: wqkwrv +2-4 z: zzjnsjspkgdkmvvlh +13-14 z: zzbzzzzzzzkzzzz +9-10 v: vvvvvvvvvcv +13-15 g: gggggggggpqgtgv +1-17 j: bjjjjjjgjjjjjjjjjjj +5-7 x: dpsxxxx +17-20 d: ddvxddtdhdrddjddnddd +5-6 f: ffxffp +12-14 w: wwwwwgwwwwwwwq +8-13 t: rnthvkbtnxvltsjn +4-5 q: qqqdq +4-12 s: ssssssssssszs +3-4 s: sssw +2-5 x: kzxwxqljv +1-3 x: rhxxdxxxdg +11-12 t: tthtstttgztrt +1-4 n: qzdnkpkrzgxdztdcfn +12-15 g: fgdzsqwkfdhrbsjz +1-3 g: kggg +6-9 c: hcwcccpcccwcck +8-9 r: rqrlrggwrrjfzgkmrq +4-5 r: ghzlrrrgs +9-11 g: ggggggdggggr +12-14 f: fffffffffffcffffff +3-7 z: mgzmpjz +1-6 h: hhzzbm +18-19 g: ggfhhvggffkqfgjnggg +1-8 p: ppppppphwppwr +13-15 l: qmjnjfnnlmbqgllwhk +5-13 z: zgpwzhwnmptrzrq +3-4 v: xnvnqjjrvvlgv +14-15 p: pppgpphppppppwpnrpr +9-13 h: hxfhhshbqhnhhp +5-6 w: wkvqbtbtfmsbwkwwhdwb +1-3 x: shxxx +1-2 v: vhvt +5-8 c: zdrlnhcctcpccsntl +12-19 x: xxxxppxxxmfglxfxmxg +3-4 v: vfqwq +8-9 f: fffffffxx +11-14 l: lslvlnbsjlbllmqllfl +3-9 j: njhfczjmmn +3-5 q: scqrdqq +2-16 q: tvgkgqqcpqmpjkqqqqqb +11-13 q: vdrmqfqqqqqqdjqq +3-8 j: jftcskds +10-11 j: ljjwfjtxqjh +7-16 z: zqtcldzxqmzmgzbz +6-14 v: vvvvvvvvvjvvvvv +1-13 q: qdrqgpcqzbpqftws +6-8 d: mdgddbtdddzd +1-6 g: gggjgggggg +1-4 d: djddbhddkdtkvt +11-12 l: lllllllllllll +1-9 g: gggggnvgm +7-17 v: vvvvvvxvvvvvvvvvv +7-11 m: mmmmmmmmmmh +2-4 m: cmfmcpm +4-5 m: mmmmjm +6-9 q: qzcqxbvqfk +1-2 s: ssnssms +2-4 m: xmmz +15-18 h: rtzvhbrpsrbhxqchbz +5-6 w: jwwwwnwt +4-5 m: jmrmwfqmrmtgmm +8-11 p: pkpjpmpppxzpp +1-7 s: sssspssszss +3-6 l: lclllllknlm +1-2 p: pwrwlc +7-9 s: ssssssxhfss +5-9 l: llllllllflllgl +12-19 n: clkznzskfvxngwnnclpx +14-18 n: nnnnnxnnnnnnnnnnngnn +1-8 m: vwbpmmsxmvbwsggqgxd +10-11 q: nqqqqgqfqpf +4-15 b: fctbwzqnwbnvqbqlb \ No newline at end of file diff --git a/2020/Day2/main.py b/2020/Day2/main.py new file mode 100644 index 0000000..9067e96 --- /dev/null +++ b/2020/Day2/main.py @@ -0,0 +1,15 @@ +if __name__ == '__main__': + with open("input.txt") as f: + inputs = f.readlines() + result = 0 + entered = 0 + for i in inputs: + rng, let, text = i.split(" ") + for x in range(0, len(text)): + letequal = text[x] == let[0] + if (letequal and x == int(rng.split("-")[0])-1) ^ (letequal and x == int(rng.split("-")[1])-1): + entered += 1 + if entered == 1: + result += 1 + entered = 0 + print(result) diff --git a/2020/Day3/main.py b/2020/Day3/main.py new file mode 100644 index 0000000..76d0e8c --- /dev/null +++ b/2020/Day3/main.py @@ -0,0 +1,16 @@ +# This is a sample Python script. + +# Press Umschalt+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. + + +def print_hi(name): + # Use a breakpoint in the code line below to debug your script. + print(f'Hi, {name}') # Press Strg+F8 to toggle the breakpoint. + + +# Press the green button in the gutter to run the script. +if __name__ == '__main__': + print_hi('PyCharm') + +# See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/2020/Day4/input b/2020/Day4/input new file mode 100644 index 0000000..bde96cb --- /dev/null +++ b/2020/Day4/input @@ -0,0 +1,1029 @@ +iyr:2015 +hgt:59cm byr:2029 cid:219 pid:9381688753 eyr:1992 hcl:#b6652a +ecl:#7a0fa6 + +ecl:blu iyr:2018 pid:943614755 cid:335 +byr:1968 +eyr:2026 + +pid:067285985 hcl:#ceb3a1 cid:281 +ecl:#07219a eyr:1944 +iyr:2025 +byr:2029 hgt:64cm + +hgt:185cm +ecl:gry cid:222 +iyr:2016 +hcl:#866857 byr:1970 pid:269105457 eyr:2026 + +pid:260043570 hcl:#b6652a cid:275 byr:1990 ecl:brn +hgt:163cm iyr:2012 + +hgt:181cm pid:604983466 +iyr:1930 eyr:2039 byr:1950 ecl:#906548 hcl:#b6652a + +iyr:2025 eyr:1956 hcl:z pid:#1c42cc byr:2006 +cid:327 hgt:141 ecl:#f2affc + +hgt:178cm byr:1939 pid:595705064 ecl:oth +iyr:2020 eyr:2026 +hcl:#888785 + +hgt:159cm iyr:2016 +hcl:#efcc98 pid:139063139 byr:1980 ecl:brn +eyr:2020 + +pid:646870519 hgt:179cm eyr:2022 iyr:2011 hcl:#602927 +ecl:brn +byr:1997 + +hgt:170cm hcl:#ceb3a1 iyr:2014 eyr:2023 ecl:oth pid:243067344 byr:1962 + +hcl:#866857 +ecl:oth pid:704529614 +byr:1941 cid:94 +eyr:2026 hgt:180cm +iyr:2010 + +iyr:1924 +pid:36196401 +hgt:74cm eyr:1921 +ecl:#3acf57 hcl:a4e4c0 byr:2024 +cid:153 + +pid:770262094 hcl:#866857 +eyr:2020 hgt:151cm +ecl:blu +iyr:2012 +byr:2002 +cid:242 + +pid:984364862 ecl:dne +iyr:2020 +hgt:151 eyr:2023 cid:314 hcl:z byr:2012 + +hgt:178cm iyr:2020 hcl:#6b5442 ecl:grn cid:323 eyr:2030 byr:1925 pid:285882039 + +iyr:2019 pid:986123633 +eyr:2024 byr:1990 hcl:#7d3b0c ecl:hzl hgt:192cm + +hgt:90 +byr:2025 iyr:1933 +ecl:dne eyr:2040 pid:8194347544 + +hgt:163cm byr:1934 eyr:2026 ecl:amb hcl:#eec6fb cid:303 pid:721792159 iyr:2013 + +iyr:2019 +byr:1920 hcl:#a97842 +cid:186 eyr:2020 +ecl:oth +hgt:167cm pid:217112082 + +pid:#55ce6b hcl:d30f6b eyr:2040 hgt:60cm ecl:dne iyr:1920 +cid:107 byr:2029 + +ecl:amb eyr:2024 pid:644304174 hcl:#6b5442 iyr:2018 +byr:1935 +hgt:182cm + +ecl:hzl pid:559383552 +hcl:#ceb3a1 eyr:2024 hgt:161cm byr:1968 iyr:2010 + +iyr:2018 +hcl:43fafb +hgt:65cm eyr:2027 +byr:1937 pid:#4bff3e ecl:grt + +eyr:2024 +iyr:2014 cid:163 byr:1924 hcl:#18171d +hgt:166cm + +eyr:2026 pid:955203781 +iyr:2016 cid:52 hgt:167cm +ecl:grn byr:1963 + +pid:479898570 hgt:165cm eyr:2024 byr:1932 +iyr:2010 ecl:grn +cid:88 +hcl:#c0a76e + +cid:241 hgt:178cm ecl:blu pid:069760797 hcl:#623a2f byr:1925 eyr:2029 iyr:2019 + +hgt:172cm eyr:2036 +iyr:2016 pid:#98caec +ecl:dne hcl:z + +ecl:#510672 iyr:1938 byr:2018 hgt:172in hcl:z cid:339 eyr:2039 +pid:#6c1216 + +hcl:#efcc98 +byr:1972 ecl:brn iyr:2011 pid:190911803 eyr:2025 hgt:171cm + +pid:0636917222 byr:2009 hgt:96 +hcl:z +iyr:1997 ecl:hzl eyr:2026 + +byr:1989 iyr:2011 pid:071588682 cid:155 ecl:grn +hcl:#ceb3a1 eyr:1955 hgt:170cm + +cid:266 hcl:#a97842 byr:1964 hgt:175cm +iyr:2017 ecl:brn + +pid:930133867 ecl:grn hcl:#733820 hgt:63in byr:1995 +eyr:2021 iyr:2014 + +eyr:2025 pid:284329794 +ecl:blu hcl:#ceb3a1 iyr:2012 +hgt:65in byr:1961 + +iyr:2010 byr:1998 +hgt:160cm +eyr:2029 hcl:#cfa07d +pid:253052921 +ecl:amb cid:324 + +pid:026835791 byr:1999 eyr:2022 hgt:162cm +hcl:#7d3b0c ecl:brn iyr:2014 + +pid:672752198 eyr:2030 byr:1952 hgt:65in iyr:2016 ecl:amb +hcl:#cfa07d + +hgt:193in +byr:2019 hcl:z pid:#cbc08c iyr:1951 ecl:#3e9f2f eyr:2002 + +ecl:utc pid:571477176 +byr:2012 eyr:1929 cid:240 +hgt:175in hcl:f4ef32 + +cid:93 hcl:#a5db2a +pid:274721479 byr:1940 eyr:2022 ecl:gry +hgt:157cm iyr:2012 + +pid:540858450 iyr:2014 cid:95 byr:1964 +hgt:156cm hcl:#866857 ecl:brn eyr:2026 + +pid:532626994 byr:1939 iyr:2017 +ecl:blu eyr:2026 +hcl:#fffffd hgt:184cm + +hgt:70 pid:404622083 +iyr:2026 +byr:2022 hcl:c1ba7f eyr:1979 ecl:lzr + +pid:931910908 +cid:177 hcl:#6b5442 +ecl:gry hgt:184cm +byr:1963 eyr:2020 +iyr:2014 + +iyr:2019 eyr:2022 hcl:#ceb3a1 hgt:191cm ecl:gry pid:954124659 cid:123 byr:1939 + +pid:411032659 byr:1950 +hgt:153cm eyr:2020 iyr:2014 ecl:hzl + +hgt:156cm eyr:2023 pid:29836124 byr:2017 hcl:56de83 ecl:zzz cid:179 +iyr:2018 + +hcl:#866857 iyr:2014 hgt:190cm byr:1998 pid:565524574 eyr:2020 + +byr:1973 hcl:#888785 iyr:2016 eyr:2028 hgt:173cm ecl:blu + +byr:1987 +pid:028825120 hcl:#7d3b0c +eyr:2023 hgt:190cm ecl:oth iyr:2014 + +eyr:2036 pid:172661617 +ecl:#ae607d byr:2017 hcl:z +hgt:82 cid:153 + +pid:202888577 eyr:2028 iyr:2013 +byr:1933 +hgt:68in cid:151 hcl:#b6652a ecl:brn + +iyr:2020 +ecl:amb eyr:2025 hcl:#a355be hgt:63in pid:146650894 + +iyr:2016 hgt:192cm pid:531372965 hcl:#fffffd +ecl:blu eyr:2025 + +eyr:2025 ecl:blu byr:1961 cid:224 iyr:2016 hcl:#6b5442 pid:368694418 +hgt:169cm + +pid:43707504 iyr:1945 +ecl:grt byr:2010 +eyr:2026 cid:273 +hgt:165in hcl:z + +hgt:159cm ecl:gry +hcl:#6b5442 +eyr:2030 pid:915819272 iyr:2015 + +pid:808392314 ecl:gry cid:285 hcl:#efcc98 byr:1923 hgt:161cm iyr:1941 eyr:2020 + +iyr:2017 +hgt:161cm +eyr:2025 hcl:#602927 ecl:oth pid:081917611 byr:1983 + +eyr:2028 pid:831032131 ecl:brn iyr:2013 hcl:#341e13 cid:198 byr:1991 hgt:67in + +hgt:181cm cid:320 pid:032769757 ecl:grn hcl:#733820 +eyr:2022 byr:1992 + +iyr:2010 cid:128 hgt:171cm byr:1932 pid:923377839 ecl:brn +hcl:#18171d eyr:2020 + +ecl:hzl iyr:2021 byr:2008 pid:569583509 hcl:f74823 +hgt:188in + +iyr:2016 hcl:z eyr:2021 ecl:#24ceee pid:349492243 hgt:67cm +cid:144 byr:2010 + +ecl:gry +byr:2029 hcl:3a0c30 hgt:163in eyr:1962 + +byr:1927 hgt:180 +cid:87 +ecl:#7ea777 +hcl:#623a2f iyr:2024 pid:597098940 eyr:2027 + +cid:89 hgt:193cm hcl:#623a2f +iyr:2010 eyr:2026 +pid:374988952 ecl:hzl byr:1973 + +eyr:2023 iyr:2013 byr:1977 +cid:329 pid:711256829 ecl:grn hgt:154cm +hcl:#866857 + +pid:212535692 ecl:brn +hcl:#b6652a hgt:169cm eyr:2025 byr:1920 iyr:2019 + +ecl:blu +byr:1962 +hgt:157cm iyr:2020 eyr:2027 pid:451039029 +hcl:#6b5442 + +hgt:187cm pid:187808959 eyr:2026 iyr:2020 +ecl:oth +byr:1956 hcl:#733820 + +byr:1959 hgt:160cm ecl:blu hcl:#6b5442 +cid:193 eyr:2026 +iyr:2014 +pid:812555315 + +hgt:153cm iyr:2011 +ecl:grn hcl:#ceb3a1 +eyr:2026 byr:1966 pid:503356330 + +ecl:#95d8a9 +eyr:2024 pid:382174744 +iyr:2025 +hgt:152 hcl:#888785 byr:2012 + +eyr:2028 +iyr:2017 byr:1938 +cid:279 hcl:#733820 ecl:amb pid:497365268 hgt:191cm + +cid:335 byr:1982 hgt:171cm iyr:2013 +ecl:hzl eyr:2030 +hcl:#efcc98 pid:018900639 + +eyr:2029 hgt:175cm pid:530128340 +hcl:#888785 +ecl:gry +byr:1947 iyr:2019 + +hgt:183cm +hcl:#6b5442 eyr:2023 ecl:grn +byr:1934 + +hcl:f8ed45 cid:54 iyr:1997 +hgt:69cm eyr:2037 ecl:gry +pid:184cm byr:2012 + +ecl:grn hcl:#733820 byr:1928 pid:002528194 +iyr:2014 eyr:2021 hgt:157cm + +hgt:163in +hcl:#c0946f byr:2018 eyr:2021 +iyr:1955 ecl:#216920 pid:87155266 +cid:298 + +eyr:2026 byr:1945 cid:161 iyr:2017 hgt:170cm hcl:#fffffd ecl:hzl pid:649441221 + +byr:1930 +iyr:2014 pid:151910079 hcl:#18171d ecl:oth eyr:2029 +hgt:169cm + +ecl:blu byr:1950 iyr:2010 cid:260 hcl:#cfa07d +hgt:167cm +pid:910685738 eyr:2021 + +hgt:182cm byr:1993 +eyr:2030 pid:073035999 hcl:#341e13 +cid:117 + +byr:1981 +hcl:#866857 +eyr:2028 iyr:2012 ecl:blu pid:620133246 hgt:157cm + +hgt:191cm +iyr:2010 pid:089995590 eyr:2023 ecl:amb byr:1986 hcl:#733820 + +iyr:2019 ecl:gry +hgt:165cm pid:910093364 hcl:#efcc98 byr:1997 +eyr:2028 +cid:153 + +hgt:83 hcl:174774 eyr:2032 +ecl:xry iyr:2017 byr:1940 + +byr:1943 +pid:980352645 +iyr:2015 hgt:66 eyr:2023 hcl:#b6652a ecl:oth + +ecl:amb byr:1980 hgt:164cm pid:775303596 hcl:#671bed iyr:2013 eyr:2030 + +hgt:173cm byr:1947 eyr:1947 iyr:1940 ecl:gmt hcl:7e515c + +hcl:#b6652a +iyr:2012 +eyr:2030 hgt:185cm ecl:grn + +ecl:amb byr:1940 hcl:#2943a5 iyr:2015 +hgt:185cm pid:931660417 +eyr:2021 + +eyr:1957 hcl:#623a2f +ecl:grt hgt:62cm pid:#af106a iyr:2012 +cid:59 byr:1985 + +ecl:amb eyr:2025 +pid:351412754 iyr:2014 byr:1941 hcl:#6b5442 hgt:174cm + +pid:5621200134 hcl:6ef9ba ecl:#ef68f5 eyr:1924 +hgt:63cm cid:188 byr:2004 + +hcl:#a97842 byr:1976 eyr:2020 hgt:171cm pid:041926354 iyr:2019 + +cid:234 +byr:2025 hcl:98619a pid:181cm eyr:1941 +iyr:2021 +hgt:167in ecl:#f5e651 + +hgt:73cm eyr:2028 byr:1985 iyr:1949 hcl:z ecl:utc cid:207 pid:#ee9f95 + +pid:179cm eyr:2030 hcl:b8e142 +hgt:69cm +iyr:1933 +byr:1934 +ecl:grn + +iyr:2028 eyr:1954 hgt:111 cid:180 pid:183391861 +byr:2030 hcl:1fb30f ecl:#0d0160 + +ecl:#0b3b2d hgt:191cm byr:2023 pid:727024676 eyr:2025 hcl:#b6652a + +hgt:66in +byr:1923 eyr:2023 ecl:gry +pid:454789451 iyr:2013 hcl:#cfa07d + +eyr:2020 +pid:339972685 +ecl:amb +iyr:2017 byr:1926 hgt:154cm +hcl:#18171d + +ecl:oth cid:302 +byr:1946 +hcl:#ceb3a1 +pid:622779476 eyr:2024 iyr:2012 hgt:158cm + +byr:2012 +pid:748786877 hgt:135 iyr:2016 hcl:b6e962 ecl:gry eyr:2011 + +byr:1997 +hcl:#a97842 +eyr:2022 pid:325672898 ecl:amb hgt:190cm iyr:2010 + +cid:210 hcl:#c0946f byr:1957 eyr:2022 +iyr:2020 pid:374646087 ecl:blu hgt:184cm + +eyr:2029 ecl:#353e0f +pid:#66ec82 +byr:2023 hcl:10d9d8 cid:271 + +pid:816485054 +eyr:2019 ecl:grn +hcl:#efcc98 hgt:185cm iyr:2013 +byr:2014 + +hcl:#866857 iyr:2014 byr:1953 eyr:2022 ecl:blu hgt:166cm + +pid:162cm hgt:59cm iyr:1981 +eyr:2025 byr:2009 +ecl:gmt hcl:116742 + +eyr:2028 hgt:67cm hcl:3d1f34 byr:1963 pid:62859332 +ecl:dne +iyr:2023 + +iyr:2013 +pid:271450754 eyr:2016 hcl:e20882 cid:186 hgt:157in ecl:utc byr:2023 + +pid:702200026 eyr:1968 ecl:gmt hcl:#888785 iyr:2018 hgt:193in byr:1943 + +eyr:2025 byr:1989 ecl:amb hcl:#866857 cid:119 +hgt:191cm +pid:556011434 + +hgt:178cm iyr:2013 +pid:928476807 +ecl:amb hcl:#623a2f byr:1996 eyr:2026 + +cid:222 +pid:325218825 eyr:2021 byr:1983 hgt:155cm ecl:brn iyr:2011 +hcl:#fffffd + +pid:949344785 ecl:grn eyr:2025 cid:182 byr:1974 hcl:#ceb3a1 +iyr:2011 + +cid:269 pid:669599426 hgt:176cm ecl:blu byr:1957 +iyr:2015 hcl:#623a2f eyr:2025 + +eyr:2023 hcl:#888785 +pid:178525132 iyr:2018 hgt:186cm + +ecl:hzl +byr:1940 iyr:2013 +hgt:185cm eyr:2028 +hcl:#7c73a3 + +hcl:z +byr:2001 cid:292 ecl:#d56bbd pid:93473192 +iyr:2003 hgt:150 +eyr:1922 + +eyr:2021 pid:786485899 +hgt:170cm hcl:#efcc98 byr:1955 +iyr:2010 ecl:brn + +hcl:#733820 ecl:hzl hgt:157cm byr:1944 eyr:2027 pid:906803629 iyr:2015 + +hgt:151cm ecl:blu iyr:2016 +hcl:#02ffd7 byr:1995 +pid:369315941 eyr:2026 + +cid:330 ecl:#18e883 eyr:2038 +hcl:z iyr:1929 +hgt:193 pid:33765426 + +pid:743094345 eyr:2027 +iyr:1949 byr:1955 +ecl:gry +hgt:160cm hcl:8dae67 + +cid:167 hcl:#18171d +iyr:2016 pid:214065645 byr:1942 eyr:2030 hgt:183cm ecl:hzl + +ecl:brn hcl:#623a2f cid:171 byr:1971 +iyr:2011 eyr:2028 +pid:607344613 +hgt:153cm + +byr:1921 pid:677007802 hcl:#341e13 ecl:brn iyr:2012 hgt:188cm eyr:2028 + +hgt:162cm cid:319 hcl:z iyr:2025 +byr:1989 eyr:1939 pid:67311222 +ecl:utc + +iyr:2014 eyr:2025 hgt:171cm +cid:302 byr:1997 +hcl:z +ecl:amb pid:101363367 + +ecl:oth iyr:2010 +cid:96 hgt:164cm hcl:4bc20a byr:1947 +pid:166115442 eyr:2030 + +byr:1964 +hcl:#6b5442 hgt:156cm eyr:2022 pid:426807062 ecl:brn cid:321 iyr:2012 + +byr:2012 hcl:#888785 cid:298 eyr:1920 ecl:zzz hgt:169cm pid:0660316558 iyr:2019 + +hcl:579266 byr:1931 pid:#aa5fd0 ecl:gry eyr:2017 hgt:60 iyr:1965 + +iyr:2011 +pid:610896691 hcl:#733820 +byr:1936 +ecl:gry eyr:2021 hgt:161cm + +pid:443246791 iyr:2015 hgt:158cm hcl:#18171d +byr:1928 ecl:brn cid:207 + +byr:1950 pid:644579904 hcl:#b6652a +eyr:2027 iyr:2017 +ecl:brn hgt:171cm + +iyr:2011 byr:1960 +eyr:2023 +hgt:171cm ecl:hzl +pid:331465564 cid:205 hcl:#18171d + +hgt:61cm eyr:1987 ecl:#9f458c byr:2023 pid:162cm hcl:z iyr:1997 + +hcl:59e376 pid:065607649 +iyr:2020 +byr:2010 ecl:blu + +pid:167cm byr:2022 hgt:150cm ecl:#06650a hcl:caa145 eyr:2032 +iyr:2015 + +byr:1932 +hcl:#419d73 +cid:203 iyr:2017 +pid:105921085 +ecl:gry + +pid:501585534 hcl:#418895 +iyr:2018 +hgt:157cm byr:1940 ecl:hzl eyr:2027 + +cid:220 hgt:171cm hcl:#623a2f +ecl:gry +iyr:2017 +pid:085309709 eyr:2024 byr:1932 + +hcl:#733820 eyr:2028 cid:93 +iyr:2017 +byr:1974 hgt:163cm ecl:grn pid:630322998 + +hcl:#602927 cid:97 hgt:166cm eyr:2025 +ecl:hzl iyr:2016 byr:1964 pid:355325363 + +iyr:2016 pid:402228657 hgt:174cm byr:1993 +eyr:2020 hcl:#733820 ecl:grn + +iyr:2020 hgt:171cm ecl:amb +hcl:#c0946f +byr:1939 +cid:316 pid:782384470 eyr:2030 + +byr:1983 pid:839608616 +eyr:2026 +hcl:#ceb3a1 cid:242 +hgt:192cm ecl:hzl + +pid:701022732 byr:1931 ecl:amb +hgt:70in hcl:#341e13 eyr:2030 iyr:2013 + +eyr:2027 +pid:740692321 byr:1940 +hgt:179cm ecl:blu cid:153 iyr:2010 + +iyr:2024 hcl:z ecl:zzz hgt:181in pid:#c38620 eyr:1976 cid:97 +byr:2029 + +byr:1999 ecl:lzr hcl:6f29a6 eyr:2023 +iyr:2018 cid:209 pid:401606571 hgt:163cm + +ecl:amb +byr:1996 hgt:181cm iyr:2018 hcl:#6b5442 pid:022285219 eyr:2021 + +cid:93 pid:807990476 +hgt:61in eyr:2027 hcl:#cfa07d ecl:oth iyr:2017 + +hcl:#7d3b0c pid:225151503 iyr:2013 cid:68 +eyr:2029 +ecl:brn hgt:64in byr:1959 + +eyr:2028 hgt:172in +iyr:2014 byr:1950 pid:187cm hcl:z ecl:brn + +byr:1982 +pid:978263388 eyr:2021 hgt:175cm iyr:2014 ecl:brn hcl:#a97842 + +hgt:162cm +eyr:2025 +pid:6533951177 byr:1993 iyr:2011 hcl:#c0946f ecl:hzl + +pid:182cm +iyr:2025 eyr:2035 hgt:59in +ecl:#799f29 hcl:z +byr:1920 cid:202 + +hcl:#733820 +eyr:2022 hgt:185cm byr:1989 pid:195276207 +ecl:blu iyr:2017 + +hcl:#7d3b0c +cid:257 ecl:gry +pid:123065639 byr:1951 iyr:2013 + +eyr:2039 ecl:#a82e90 byr:1927 pid:719738468 hgt:73cm + +hcl:605223 +hgt:162cm pid:50424035 +ecl:oth cid:343 byr:2025 iyr:2023 eyr:2024 + +hcl:699116 iyr:2001 +eyr:2022 +byr:2013 +hgt:171cm pid:8900968325 + +hcl:#efcc98 eyr:2029 ecl:grn pid:568953221 +byr:1986 +hgt:178cm +iyr:2020 + +pid:452235579 byr:1932 +ecl:grn +iyr:2010 hgt:189cm eyr:2028 +hcl:#602927 cid:258 + +ecl:xry iyr:2009 cid:334 pid:189cm +eyr:2032 byr:2005 hgt:172in hcl:z + +hgt:159cm hcl:z pid:166cm +ecl:oth eyr:2026 iyr:2020 + +eyr:2023 ecl:blu byr:1935 iyr:2015 +hcl:#866857 pid:542611829 +hgt:168cm + +pid:#ec3d53 +hcl:#ceb3a1 +byr:1999 eyr:2024 +hgt:188cm ecl:oth iyr:2018 + +byr:2003 hgt:167 +hcl:486800 +ecl:#29bdd6 eyr:2037 cid:169 iyr:2010 + +byr:1983 +eyr:2026 ecl:gry +pid:203934984 +hgt:181cm iyr:2020 hcl:#a97842 cid:184 + +hgt:180cm +iyr:1934 eyr:2038 hcl:#a97842 ecl:brn byr:1942 pid:427001597 + +hcl:#18171d byr:1988 +cid:267 hgt:188cm +ecl:amb +eyr:2028 pid:696617232 + +eyr:2024 hcl:#cfa07d +iyr:2013 pid:176cm hgt:189cm byr:1990 +ecl:gry + +eyr:2025 iyr:2015 hgt:153cm hcl:#ceb3a1 ecl:grn pid:686467422 byr:1961 cid:282 + +byr:1931 hgt:185cm ecl:oth +eyr:2022 +pid:561083684 hcl:#efcc98 +iyr:2012 + +byr:1948 cid:327 hgt:151cm +iyr:2016 hcl:#733820 ecl:oth pid:341978822 + +hcl:#ceb3a1 +byr:1978 iyr:2020 hgt:172cm +eyr:2022 ecl:oth pid:093317990 + +eyr:2029 +pid:096891409 iyr:2018 +hcl:#d82822 hgt:174cm ecl:hzl +byr:1988 + +hgt:170cm iyr:2018 pid:588142771 eyr:2022 hcl:#733820 +cid:273 byr:1940 ecl:#a608fe + +iyr:2029 eyr:1980 hcl:#341e13 byr:2027 ecl:grt +pid:443809337 hgt:180cm +cid:205 + +ecl:#f89df0 hgt:144 hcl:2f26ab iyr:1982 pid:#3b43c1 eyr:2032 byr:2012 + +ecl:hzl byr:1971 +pid:030850749 +hgt:170in +hcl:#ceb3a1 eyr:2023 iyr:2018 + +byr:1940 iyr:2020 +eyr:2026 pid:437820254 +hgt:179cm ecl:gry + +byr:2028 +eyr:1986 hcl:z +hgt:185in pid:773739744 ecl:dne iyr:2020 + +hcl:#a97842 +hgt:186cm cid:64 iyr:2016 +byr:1947 eyr:2021 + +byr:1988 hgt:160cm eyr:2023 hcl:#866857 pid:788805179 iyr:2022 ecl:amb + +hgt:164cm byr:1996 cid:338 hcl:#efcc98 +eyr:2029 pid:208596014 ecl:blu + +pid:357680064 byr:1960 eyr:2029 ecl:gry hgt:192cm hcl:#c0946f + +ecl:#d32320 +hgt:167in pid:19531341 +hcl:z +cid:346 iyr:2024 byr:2006 eyr:2035 + +pid:843729120 byr:1987 hgt:185cm eyr:2022 +ecl:amb +iyr:2012 hcl:#c0946f + +eyr:2020 byr:1961 iyr:2011 +hgt:162cm cid:54 pid:891397982 ecl:brn + +ecl:zzz byr:2019 iyr:2015 eyr:2028 hcl:43d56d +hgt:152cm +pid:182cm + +hcl:#18171d byr:1979 hgt:174cm +iyr:2013 cid:228 eyr:2022 ecl:amb pid:82422450 + +cid:156 iyr:2017 +byr:1924 +hcl:#b6652a ecl:gry hgt:184cm eyr:2027 pid:451347151 + +pid:850192502 hgt:65in +iyr:2011 hcl:#7d3b0c +eyr:2023 ecl:gry + +ecl:amb hgt:181cm iyr:2017 pid:233345009 byr:1934 +hcl:#341e13 +eyr:2024 cid:199 + +eyr:2026 pid:#4cb480 +iyr:1958 hgt:176cm ecl:dne hcl:z + +ecl:grn eyr:2027 hgt:178cm byr:1994 hcl:#341e13 +iyr:2016 pid:790075315 + +pid:140922484 +byr:1958 +eyr:2025 +iyr:2019 ecl:brn hgt:157cm hcl:#623a2f + +pid:466785488 hgt:160cm hcl:#cfa07d +byr:1947 +iyr:2010 +cid:198 eyr:2020 ecl:hzl + +ecl:oth +eyr:2022 byr:1963 +hcl:#fffffd iyr:2017 +hgt:171cm pid:463249115 + +hgt:73cm byr:1968 +pid:470317690 ecl:blu +iyr:2015 hcl:#c0946f cid:54 eyr:2029 + +hgt:162cm iyr:2014 +byr:1951 hcl:#b6652a eyr:2029 ecl:blu + +ecl:oth +hgt:176cm hcl:#888785 byr:1963 +iyr:2017 pid:453133253 eyr:2025 + +hcl:#efcc98 +eyr:2024 iyr:2020 cid:330 byr:1950 pid:937122408 ecl:gry hgt:162cm + +hgt:168cm +pid:745867335 +cid:165 hcl:#c0946f iyr:2018 ecl:grt eyr:2030 +byr:1932 + +byr:1949 pid:116003343 +hcl:#c0946f hgt:178cm eyr:2028 iyr:2020 cid:220 +ecl:hzl + +iyr:2013 +cid:314 pid:186cm hgt:74cm eyr:1973 ecl:hzl byr:2007 +hcl:180e0c + +pid:486330019 +byr:1999 ecl:oth hgt:154cm iyr:2019 eyr:2026 +hcl:#efcc98 + +eyr:2030 iyr:2018 hcl:#18171d byr:1950 +pid:648616604 hgt:160cm ecl:gry + +hgt:173cm +ecl:oth byr:1993 eyr:2029 hcl:#fffffd iyr:2010 pid:317451887 + +ecl:brn hgt:157cm +byr:1963 eyr:2023 pid:005387570 hcl:#866857 iyr:2012 + +pid:419695212 eyr:2020 byr:1957 cid:198 iyr:2015 hcl:#888785 hgt:168cm ecl:amb + +ecl:amb +iyr:2017 eyr:2024 pid:039995171 hcl:#a97842 +hgt:153cm byr:1983 + +byr:1979 eyr:2021 iyr:2011 hgt:157cm ecl:blu pid:110855542 hcl:#c0946f + +ecl:blu pid:948753945 eyr:2029 iyr:2012 hcl:#ceb3a1 +hgt:164cm byr:1988 + +iyr:2010 +eyr:2032 hcl:#fffffd pid:#175129 hgt:184cm +ecl:hzl byr:1985 + +hgt:189cm ecl:blu byr:1936 eyr:2027 hcl:#733820 +pid:728752361 iyr:2011 + +hcl:#733820 ecl:blu eyr:2023 hgt:172cm iyr:2017 +pid:013415387 byr:1947 + +byr:2012 iyr:2017 pid:#424ae4 +cid:172 hgt:166cm eyr:2022 +hcl:b1319b ecl:#6635d8 + +eyr:2030 +iyr:1928 hgt:185cm ecl:brn pid:#ac5a90 byr:1984 hcl:ac8f43 + +eyr:2027 +ecl:amb iyr:2014 hcl:#fffffd +pid:838758900 +hgt:177cm byr:1942 + +cid:166 iyr:2020 ecl:lzr hgt:70cm eyr:2040 byr:2004 hcl:#733820 + +eyr:2028 ecl:grn byr:2016 cid:61 iyr:2010 +hcl:#cfa07d +hgt:155in +pid:9594283803 + +ecl:gmt pid:984675198 +byr:1997 hgt:128 eyr:2037 hcl:#b6652a cid:299 + +iyr:2015 pid:733864914 eyr:2021 ecl:amb +byr:1971 cid:280 +hgt:181cm hcl:#054593 + +ecl:hzl hcl:#cfa07d eyr:2022 pid:832736421 +byr:1958 +iyr:2010 +cid:274 hgt:152cm + +eyr:2020 hcl:#6b5442 cid:223 hgt:155cm byr:1989 ecl:oth +iyr:2011 pid:549182194 + +iyr:2020 hcl:#cfa07d +eyr:2027 pid:093361240 byr:1941 cid:271 hgt:178cm ecl:brn + +ecl:blu cid:290 eyr:2027 +hgt:192cm byr:1945 hcl:#7d3b0c iyr:2020 pid:910713369 + +byr:1991 hcl:#ceb3a1 ecl:xry hgt:159cm pid:9496171384 +eyr:2030 iyr:2016 + +eyr:2020 pid:812617809 hcl:#7d3b0c +byr:1970 ecl:gmt +iyr:1971 hgt:157in + +pid:596027311 hcl:#866857 hgt:169cm byr:1945 eyr:2030 ecl:oth +iyr:2010 + +hgt:176cm +pid:213213359 byr:2012 hcl:be7b13 eyr:1971 ecl:gmt iyr:2011 +cid:64 + +pid:27107946 ecl:utc hgt:66cm byr:1928 eyr:2040 +cid:87 + +byr:1959 ecl:blu hcl:4e023b pid:9017609497 eyr:2023 hgt:68 iyr:2029 + +hgt:164cm eyr:2023 byr:2008 ecl:grn pid:420168481 hcl:#b6652a iyr:2012 + +eyr:1977 byr:1934 +ecl:brn cid:163 +iyr:2018 pid:2863284754 +hgt:150in hcl:#623a2f + +ecl:hzl eyr:2031 cid:145 hgt:186cm hcl:#cfa07d +byr:1941 iyr:2010 pid:722056139 + +ecl:blu eyr:2027 +hcl:#888785 iyr:2018 byr:1977 cid:278 hgt:156cm + +eyr:2039 hgt:82 byr:2007 +hcl:z iyr:2021 ecl:dne cid:191 +pid:#1cf69f + +pid:183cm cid:111 +hgt:66cm +iyr:1950 +eyr:1947 ecl:#016f6a + +ecl:hzl byr:1957 iyr:2015 hgt:186cm eyr:2029 hcl:#701e04 cid:149 pid:827898914 + +cid:214 pid:785688542 hgt:189cm byr:1974 ecl:brn +hcl:#18171d +eyr:2030 + +hcl:#866857 +cid:241 ecl:grn pid:389488422 byr:1959 iyr:2015 hgt:67in +eyr:2027 + +hcl:#6b5442 iyr:2011 hgt:193cm +eyr:2026 byr:1952 +pid:033382338 +ecl:grn + +iyr:2020 hgt:166cm byr:1927 +eyr:2029 ecl:hzl +pid:927006613 hcl:#623a2f + +ecl:gry pid:640783974 +hgt:71in byr:1945 iyr:2019 cid:268 hcl:#b6652a +eyr:2025 + +hcl:#733820 hgt:163cm +pid:1285584293 byr:1967 ecl:oth +cid:309 iyr:2020 eyr:2031 + +pid:910349085 iyr:2011 hcl:#623a2f byr:1956 +eyr:2025 ecl:gry +hgt:182cm + +pid:018283044 hcl:#602927 hgt:153cm ecl:gry iyr:2020 +eyr:2024 +byr:1990 + +hgt:184cm hcl:#866857 ecl:oth +eyr:2023 pid:405733635 cid:205 +byr:1987 iyr:2012 + +hgt:167cm +iyr:2015 ecl:brn +eyr:2025 +hcl:#18171d cid:313 byr:1960 + +hgt:165cm byr:1933 +iyr:2014 +cid:203 +hcl:#1cdbb3 +ecl:hzl eyr:2027 pid:747009469 + +hgt:169cm ecl:gry iyr:2014 +byr:1966 pid:621876532 hcl:#efcc98 + +cid:342 eyr:2029 hcl:#a97842 byr:1970 +ecl:oth +pid:137287449 hgt:180cm +iyr:2011 + +hcl:#cfa07d byr:1985 hgt:183cm ecl:grn +iyr:2013 eyr:2022 + +iyr:2023 +pid:164cm hcl:z byr:1966 +eyr:2021 ecl:utc + +hcl:#fffffd cid:60 +byr:1973 +pid:324648387 +hgt:177cm eyr:2022 iyr:2010 +ecl:oth + +pid:632056596 hcl:#efcc98 +hgt:73in ecl:brn byr:1928 iyr:2017 +eyr:2023 + +cid:144 ecl:amb eyr:2035 byr:1943 hgt:180cm +iyr:2012 +pid:155cm + +hcl:#6b5442 +pid:927492391 +eyr:2023 hgt:172cm byr:1958 cid:92 ecl:gry iyr:2019 + +iyr:2020 cid:82 +hgt:193in hcl:#b6652a +ecl:grn eyr:2034 byr:2026 + +iyr:1922 hcl:245cb3 byr:2015 +pid:151cm +eyr:2040 +ecl:lzr cid:136 hgt:101 + +byr:2025 +eyr:2029 +hgt:193in +cid:308 +ecl:gry iyr:2028 pid:9335153289 +hcl:z + +eyr:2030 hgt:163cm iyr:2014 +pid:147768826 ecl:blu byr:1922 hcl:#ceb3a1 cid:169 + +ecl:blu byr:2002 eyr:2028 pid:998185490 cid:165 iyr:2020 +hgt:188cm hcl:#c0946f \ No newline at end of file diff --git a/2020/Day4/input.txt b/2020/Day4/input.txt new file mode 100644 index 0000000..bde96cb --- /dev/null +++ b/2020/Day4/input.txt @@ -0,0 +1,1029 @@ +iyr:2015 +hgt:59cm byr:2029 cid:219 pid:9381688753 eyr:1992 hcl:#b6652a +ecl:#7a0fa6 + +ecl:blu iyr:2018 pid:943614755 cid:335 +byr:1968 +eyr:2026 + +pid:067285985 hcl:#ceb3a1 cid:281 +ecl:#07219a eyr:1944 +iyr:2025 +byr:2029 hgt:64cm + +hgt:185cm +ecl:gry cid:222 +iyr:2016 +hcl:#866857 byr:1970 pid:269105457 eyr:2026 + +pid:260043570 hcl:#b6652a cid:275 byr:1990 ecl:brn +hgt:163cm iyr:2012 + +hgt:181cm pid:604983466 +iyr:1930 eyr:2039 byr:1950 ecl:#906548 hcl:#b6652a + +iyr:2025 eyr:1956 hcl:z pid:#1c42cc byr:2006 +cid:327 hgt:141 ecl:#f2affc + +hgt:178cm byr:1939 pid:595705064 ecl:oth +iyr:2020 eyr:2026 +hcl:#888785 + +hgt:159cm iyr:2016 +hcl:#efcc98 pid:139063139 byr:1980 ecl:brn +eyr:2020 + +pid:646870519 hgt:179cm eyr:2022 iyr:2011 hcl:#602927 +ecl:brn +byr:1997 + +hgt:170cm hcl:#ceb3a1 iyr:2014 eyr:2023 ecl:oth pid:243067344 byr:1962 + +hcl:#866857 +ecl:oth pid:704529614 +byr:1941 cid:94 +eyr:2026 hgt:180cm +iyr:2010 + +iyr:1924 +pid:36196401 +hgt:74cm eyr:1921 +ecl:#3acf57 hcl:a4e4c0 byr:2024 +cid:153 + +pid:770262094 hcl:#866857 +eyr:2020 hgt:151cm +ecl:blu +iyr:2012 +byr:2002 +cid:242 + +pid:984364862 ecl:dne +iyr:2020 +hgt:151 eyr:2023 cid:314 hcl:z byr:2012 + +hgt:178cm iyr:2020 hcl:#6b5442 ecl:grn cid:323 eyr:2030 byr:1925 pid:285882039 + +iyr:2019 pid:986123633 +eyr:2024 byr:1990 hcl:#7d3b0c ecl:hzl hgt:192cm + +hgt:90 +byr:2025 iyr:1933 +ecl:dne eyr:2040 pid:8194347544 + +hgt:163cm byr:1934 eyr:2026 ecl:amb hcl:#eec6fb cid:303 pid:721792159 iyr:2013 + +iyr:2019 +byr:1920 hcl:#a97842 +cid:186 eyr:2020 +ecl:oth +hgt:167cm pid:217112082 + +pid:#55ce6b hcl:d30f6b eyr:2040 hgt:60cm ecl:dne iyr:1920 +cid:107 byr:2029 + +ecl:amb eyr:2024 pid:644304174 hcl:#6b5442 iyr:2018 +byr:1935 +hgt:182cm + +ecl:hzl pid:559383552 +hcl:#ceb3a1 eyr:2024 hgt:161cm byr:1968 iyr:2010 + +iyr:2018 +hcl:43fafb +hgt:65cm eyr:2027 +byr:1937 pid:#4bff3e ecl:grt + +eyr:2024 +iyr:2014 cid:163 byr:1924 hcl:#18171d +hgt:166cm + +eyr:2026 pid:955203781 +iyr:2016 cid:52 hgt:167cm +ecl:grn byr:1963 + +pid:479898570 hgt:165cm eyr:2024 byr:1932 +iyr:2010 ecl:grn +cid:88 +hcl:#c0a76e + +cid:241 hgt:178cm ecl:blu pid:069760797 hcl:#623a2f byr:1925 eyr:2029 iyr:2019 + +hgt:172cm eyr:2036 +iyr:2016 pid:#98caec +ecl:dne hcl:z + +ecl:#510672 iyr:1938 byr:2018 hgt:172in hcl:z cid:339 eyr:2039 +pid:#6c1216 + +hcl:#efcc98 +byr:1972 ecl:brn iyr:2011 pid:190911803 eyr:2025 hgt:171cm + +pid:0636917222 byr:2009 hgt:96 +hcl:z +iyr:1997 ecl:hzl eyr:2026 + +byr:1989 iyr:2011 pid:071588682 cid:155 ecl:grn +hcl:#ceb3a1 eyr:1955 hgt:170cm + +cid:266 hcl:#a97842 byr:1964 hgt:175cm +iyr:2017 ecl:brn + +pid:930133867 ecl:grn hcl:#733820 hgt:63in byr:1995 +eyr:2021 iyr:2014 + +eyr:2025 pid:284329794 +ecl:blu hcl:#ceb3a1 iyr:2012 +hgt:65in byr:1961 + +iyr:2010 byr:1998 +hgt:160cm +eyr:2029 hcl:#cfa07d +pid:253052921 +ecl:amb cid:324 + +pid:026835791 byr:1999 eyr:2022 hgt:162cm +hcl:#7d3b0c ecl:brn iyr:2014 + +pid:672752198 eyr:2030 byr:1952 hgt:65in iyr:2016 ecl:amb +hcl:#cfa07d + +hgt:193in +byr:2019 hcl:z pid:#cbc08c iyr:1951 ecl:#3e9f2f eyr:2002 + +ecl:utc pid:571477176 +byr:2012 eyr:1929 cid:240 +hgt:175in hcl:f4ef32 + +cid:93 hcl:#a5db2a +pid:274721479 byr:1940 eyr:2022 ecl:gry +hgt:157cm iyr:2012 + +pid:540858450 iyr:2014 cid:95 byr:1964 +hgt:156cm hcl:#866857 ecl:brn eyr:2026 + +pid:532626994 byr:1939 iyr:2017 +ecl:blu eyr:2026 +hcl:#fffffd hgt:184cm + +hgt:70 pid:404622083 +iyr:2026 +byr:2022 hcl:c1ba7f eyr:1979 ecl:lzr + +pid:931910908 +cid:177 hcl:#6b5442 +ecl:gry hgt:184cm +byr:1963 eyr:2020 +iyr:2014 + +iyr:2019 eyr:2022 hcl:#ceb3a1 hgt:191cm ecl:gry pid:954124659 cid:123 byr:1939 + +pid:411032659 byr:1950 +hgt:153cm eyr:2020 iyr:2014 ecl:hzl + +hgt:156cm eyr:2023 pid:29836124 byr:2017 hcl:56de83 ecl:zzz cid:179 +iyr:2018 + +hcl:#866857 iyr:2014 hgt:190cm byr:1998 pid:565524574 eyr:2020 + +byr:1973 hcl:#888785 iyr:2016 eyr:2028 hgt:173cm ecl:blu + +byr:1987 +pid:028825120 hcl:#7d3b0c +eyr:2023 hgt:190cm ecl:oth iyr:2014 + +eyr:2036 pid:172661617 +ecl:#ae607d byr:2017 hcl:z +hgt:82 cid:153 + +pid:202888577 eyr:2028 iyr:2013 +byr:1933 +hgt:68in cid:151 hcl:#b6652a ecl:brn + +iyr:2020 +ecl:amb eyr:2025 hcl:#a355be hgt:63in pid:146650894 + +iyr:2016 hgt:192cm pid:531372965 hcl:#fffffd +ecl:blu eyr:2025 + +eyr:2025 ecl:blu byr:1961 cid:224 iyr:2016 hcl:#6b5442 pid:368694418 +hgt:169cm + +pid:43707504 iyr:1945 +ecl:grt byr:2010 +eyr:2026 cid:273 +hgt:165in hcl:z + +hgt:159cm ecl:gry +hcl:#6b5442 +eyr:2030 pid:915819272 iyr:2015 + +pid:808392314 ecl:gry cid:285 hcl:#efcc98 byr:1923 hgt:161cm iyr:1941 eyr:2020 + +iyr:2017 +hgt:161cm +eyr:2025 hcl:#602927 ecl:oth pid:081917611 byr:1983 + +eyr:2028 pid:831032131 ecl:brn iyr:2013 hcl:#341e13 cid:198 byr:1991 hgt:67in + +hgt:181cm cid:320 pid:032769757 ecl:grn hcl:#733820 +eyr:2022 byr:1992 + +iyr:2010 cid:128 hgt:171cm byr:1932 pid:923377839 ecl:brn +hcl:#18171d eyr:2020 + +ecl:hzl iyr:2021 byr:2008 pid:569583509 hcl:f74823 +hgt:188in + +iyr:2016 hcl:z eyr:2021 ecl:#24ceee pid:349492243 hgt:67cm +cid:144 byr:2010 + +ecl:gry +byr:2029 hcl:3a0c30 hgt:163in eyr:1962 + +byr:1927 hgt:180 +cid:87 +ecl:#7ea777 +hcl:#623a2f iyr:2024 pid:597098940 eyr:2027 + +cid:89 hgt:193cm hcl:#623a2f +iyr:2010 eyr:2026 +pid:374988952 ecl:hzl byr:1973 + +eyr:2023 iyr:2013 byr:1977 +cid:329 pid:711256829 ecl:grn hgt:154cm +hcl:#866857 + +pid:212535692 ecl:brn +hcl:#b6652a hgt:169cm eyr:2025 byr:1920 iyr:2019 + +ecl:blu +byr:1962 +hgt:157cm iyr:2020 eyr:2027 pid:451039029 +hcl:#6b5442 + +hgt:187cm pid:187808959 eyr:2026 iyr:2020 +ecl:oth +byr:1956 hcl:#733820 + +byr:1959 hgt:160cm ecl:blu hcl:#6b5442 +cid:193 eyr:2026 +iyr:2014 +pid:812555315 + +hgt:153cm iyr:2011 +ecl:grn hcl:#ceb3a1 +eyr:2026 byr:1966 pid:503356330 + +ecl:#95d8a9 +eyr:2024 pid:382174744 +iyr:2025 +hgt:152 hcl:#888785 byr:2012 + +eyr:2028 +iyr:2017 byr:1938 +cid:279 hcl:#733820 ecl:amb pid:497365268 hgt:191cm + +cid:335 byr:1982 hgt:171cm iyr:2013 +ecl:hzl eyr:2030 +hcl:#efcc98 pid:018900639 + +eyr:2029 hgt:175cm pid:530128340 +hcl:#888785 +ecl:gry +byr:1947 iyr:2019 + +hgt:183cm +hcl:#6b5442 eyr:2023 ecl:grn +byr:1934 + +hcl:f8ed45 cid:54 iyr:1997 +hgt:69cm eyr:2037 ecl:gry +pid:184cm byr:2012 + +ecl:grn hcl:#733820 byr:1928 pid:002528194 +iyr:2014 eyr:2021 hgt:157cm + +hgt:163in +hcl:#c0946f byr:2018 eyr:2021 +iyr:1955 ecl:#216920 pid:87155266 +cid:298 + +eyr:2026 byr:1945 cid:161 iyr:2017 hgt:170cm hcl:#fffffd ecl:hzl pid:649441221 + +byr:1930 +iyr:2014 pid:151910079 hcl:#18171d ecl:oth eyr:2029 +hgt:169cm + +ecl:blu byr:1950 iyr:2010 cid:260 hcl:#cfa07d +hgt:167cm +pid:910685738 eyr:2021 + +hgt:182cm byr:1993 +eyr:2030 pid:073035999 hcl:#341e13 +cid:117 + +byr:1981 +hcl:#866857 +eyr:2028 iyr:2012 ecl:blu pid:620133246 hgt:157cm + +hgt:191cm +iyr:2010 pid:089995590 eyr:2023 ecl:amb byr:1986 hcl:#733820 + +iyr:2019 ecl:gry +hgt:165cm pid:910093364 hcl:#efcc98 byr:1997 +eyr:2028 +cid:153 + +hgt:83 hcl:174774 eyr:2032 +ecl:xry iyr:2017 byr:1940 + +byr:1943 +pid:980352645 +iyr:2015 hgt:66 eyr:2023 hcl:#b6652a ecl:oth + +ecl:amb byr:1980 hgt:164cm pid:775303596 hcl:#671bed iyr:2013 eyr:2030 + +hgt:173cm byr:1947 eyr:1947 iyr:1940 ecl:gmt hcl:7e515c + +hcl:#b6652a +iyr:2012 +eyr:2030 hgt:185cm ecl:grn + +ecl:amb byr:1940 hcl:#2943a5 iyr:2015 +hgt:185cm pid:931660417 +eyr:2021 + +eyr:1957 hcl:#623a2f +ecl:grt hgt:62cm pid:#af106a iyr:2012 +cid:59 byr:1985 + +ecl:amb eyr:2025 +pid:351412754 iyr:2014 byr:1941 hcl:#6b5442 hgt:174cm + +pid:5621200134 hcl:6ef9ba ecl:#ef68f5 eyr:1924 +hgt:63cm cid:188 byr:2004 + +hcl:#a97842 byr:1976 eyr:2020 hgt:171cm pid:041926354 iyr:2019 + +cid:234 +byr:2025 hcl:98619a pid:181cm eyr:1941 +iyr:2021 +hgt:167in ecl:#f5e651 + +hgt:73cm eyr:2028 byr:1985 iyr:1949 hcl:z ecl:utc cid:207 pid:#ee9f95 + +pid:179cm eyr:2030 hcl:b8e142 +hgt:69cm +iyr:1933 +byr:1934 +ecl:grn + +iyr:2028 eyr:1954 hgt:111 cid:180 pid:183391861 +byr:2030 hcl:1fb30f ecl:#0d0160 + +ecl:#0b3b2d hgt:191cm byr:2023 pid:727024676 eyr:2025 hcl:#b6652a + +hgt:66in +byr:1923 eyr:2023 ecl:gry +pid:454789451 iyr:2013 hcl:#cfa07d + +eyr:2020 +pid:339972685 +ecl:amb +iyr:2017 byr:1926 hgt:154cm +hcl:#18171d + +ecl:oth cid:302 +byr:1946 +hcl:#ceb3a1 +pid:622779476 eyr:2024 iyr:2012 hgt:158cm + +byr:2012 +pid:748786877 hgt:135 iyr:2016 hcl:b6e962 ecl:gry eyr:2011 + +byr:1997 +hcl:#a97842 +eyr:2022 pid:325672898 ecl:amb hgt:190cm iyr:2010 + +cid:210 hcl:#c0946f byr:1957 eyr:2022 +iyr:2020 pid:374646087 ecl:blu hgt:184cm + +eyr:2029 ecl:#353e0f +pid:#66ec82 +byr:2023 hcl:10d9d8 cid:271 + +pid:816485054 +eyr:2019 ecl:grn +hcl:#efcc98 hgt:185cm iyr:2013 +byr:2014 + +hcl:#866857 iyr:2014 byr:1953 eyr:2022 ecl:blu hgt:166cm + +pid:162cm hgt:59cm iyr:1981 +eyr:2025 byr:2009 +ecl:gmt hcl:116742 + +eyr:2028 hgt:67cm hcl:3d1f34 byr:1963 pid:62859332 +ecl:dne +iyr:2023 + +iyr:2013 +pid:271450754 eyr:2016 hcl:e20882 cid:186 hgt:157in ecl:utc byr:2023 + +pid:702200026 eyr:1968 ecl:gmt hcl:#888785 iyr:2018 hgt:193in byr:1943 + +eyr:2025 byr:1989 ecl:amb hcl:#866857 cid:119 +hgt:191cm +pid:556011434 + +hgt:178cm iyr:2013 +pid:928476807 +ecl:amb hcl:#623a2f byr:1996 eyr:2026 + +cid:222 +pid:325218825 eyr:2021 byr:1983 hgt:155cm ecl:brn iyr:2011 +hcl:#fffffd + +pid:949344785 ecl:grn eyr:2025 cid:182 byr:1974 hcl:#ceb3a1 +iyr:2011 + +cid:269 pid:669599426 hgt:176cm ecl:blu byr:1957 +iyr:2015 hcl:#623a2f eyr:2025 + +eyr:2023 hcl:#888785 +pid:178525132 iyr:2018 hgt:186cm + +ecl:hzl +byr:1940 iyr:2013 +hgt:185cm eyr:2028 +hcl:#7c73a3 + +hcl:z +byr:2001 cid:292 ecl:#d56bbd pid:93473192 +iyr:2003 hgt:150 +eyr:1922 + +eyr:2021 pid:786485899 +hgt:170cm hcl:#efcc98 byr:1955 +iyr:2010 ecl:brn + +hcl:#733820 ecl:hzl hgt:157cm byr:1944 eyr:2027 pid:906803629 iyr:2015 + +hgt:151cm ecl:blu iyr:2016 +hcl:#02ffd7 byr:1995 +pid:369315941 eyr:2026 + +cid:330 ecl:#18e883 eyr:2038 +hcl:z iyr:1929 +hgt:193 pid:33765426 + +pid:743094345 eyr:2027 +iyr:1949 byr:1955 +ecl:gry +hgt:160cm hcl:8dae67 + +cid:167 hcl:#18171d +iyr:2016 pid:214065645 byr:1942 eyr:2030 hgt:183cm ecl:hzl + +ecl:brn hcl:#623a2f cid:171 byr:1971 +iyr:2011 eyr:2028 +pid:607344613 +hgt:153cm + +byr:1921 pid:677007802 hcl:#341e13 ecl:brn iyr:2012 hgt:188cm eyr:2028 + +hgt:162cm cid:319 hcl:z iyr:2025 +byr:1989 eyr:1939 pid:67311222 +ecl:utc + +iyr:2014 eyr:2025 hgt:171cm +cid:302 byr:1997 +hcl:z +ecl:amb pid:101363367 + +ecl:oth iyr:2010 +cid:96 hgt:164cm hcl:4bc20a byr:1947 +pid:166115442 eyr:2030 + +byr:1964 +hcl:#6b5442 hgt:156cm eyr:2022 pid:426807062 ecl:brn cid:321 iyr:2012 + +byr:2012 hcl:#888785 cid:298 eyr:1920 ecl:zzz hgt:169cm pid:0660316558 iyr:2019 + +hcl:579266 byr:1931 pid:#aa5fd0 ecl:gry eyr:2017 hgt:60 iyr:1965 + +iyr:2011 +pid:610896691 hcl:#733820 +byr:1936 +ecl:gry eyr:2021 hgt:161cm + +pid:443246791 iyr:2015 hgt:158cm hcl:#18171d +byr:1928 ecl:brn cid:207 + +byr:1950 pid:644579904 hcl:#b6652a +eyr:2027 iyr:2017 +ecl:brn hgt:171cm + +iyr:2011 byr:1960 +eyr:2023 +hgt:171cm ecl:hzl +pid:331465564 cid:205 hcl:#18171d + +hgt:61cm eyr:1987 ecl:#9f458c byr:2023 pid:162cm hcl:z iyr:1997 + +hcl:59e376 pid:065607649 +iyr:2020 +byr:2010 ecl:blu + +pid:167cm byr:2022 hgt:150cm ecl:#06650a hcl:caa145 eyr:2032 +iyr:2015 + +byr:1932 +hcl:#419d73 +cid:203 iyr:2017 +pid:105921085 +ecl:gry + +pid:501585534 hcl:#418895 +iyr:2018 +hgt:157cm byr:1940 ecl:hzl eyr:2027 + +cid:220 hgt:171cm hcl:#623a2f +ecl:gry +iyr:2017 +pid:085309709 eyr:2024 byr:1932 + +hcl:#733820 eyr:2028 cid:93 +iyr:2017 +byr:1974 hgt:163cm ecl:grn pid:630322998 + +hcl:#602927 cid:97 hgt:166cm eyr:2025 +ecl:hzl iyr:2016 byr:1964 pid:355325363 + +iyr:2016 pid:402228657 hgt:174cm byr:1993 +eyr:2020 hcl:#733820 ecl:grn + +iyr:2020 hgt:171cm ecl:amb +hcl:#c0946f +byr:1939 +cid:316 pid:782384470 eyr:2030 + +byr:1983 pid:839608616 +eyr:2026 +hcl:#ceb3a1 cid:242 +hgt:192cm ecl:hzl + +pid:701022732 byr:1931 ecl:amb +hgt:70in hcl:#341e13 eyr:2030 iyr:2013 + +eyr:2027 +pid:740692321 byr:1940 +hgt:179cm ecl:blu cid:153 iyr:2010 + +iyr:2024 hcl:z ecl:zzz hgt:181in pid:#c38620 eyr:1976 cid:97 +byr:2029 + +byr:1999 ecl:lzr hcl:6f29a6 eyr:2023 +iyr:2018 cid:209 pid:401606571 hgt:163cm + +ecl:amb +byr:1996 hgt:181cm iyr:2018 hcl:#6b5442 pid:022285219 eyr:2021 + +cid:93 pid:807990476 +hgt:61in eyr:2027 hcl:#cfa07d ecl:oth iyr:2017 + +hcl:#7d3b0c pid:225151503 iyr:2013 cid:68 +eyr:2029 +ecl:brn hgt:64in byr:1959 + +eyr:2028 hgt:172in +iyr:2014 byr:1950 pid:187cm hcl:z ecl:brn + +byr:1982 +pid:978263388 eyr:2021 hgt:175cm iyr:2014 ecl:brn hcl:#a97842 + +hgt:162cm +eyr:2025 +pid:6533951177 byr:1993 iyr:2011 hcl:#c0946f ecl:hzl + +pid:182cm +iyr:2025 eyr:2035 hgt:59in +ecl:#799f29 hcl:z +byr:1920 cid:202 + +hcl:#733820 +eyr:2022 hgt:185cm byr:1989 pid:195276207 +ecl:blu iyr:2017 + +hcl:#7d3b0c +cid:257 ecl:gry +pid:123065639 byr:1951 iyr:2013 + +eyr:2039 ecl:#a82e90 byr:1927 pid:719738468 hgt:73cm + +hcl:605223 +hgt:162cm pid:50424035 +ecl:oth cid:343 byr:2025 iyr:2023 eyr:2024 + +hcl:699116 iyr:2001 +eyr:2022 +byr:2013 +hgt:171cm pid:8900968325 + +hcl:#efcc98 eyr:2029 ecl:grn pid:568953221 +byr:1986 +hgt:178cm +iyr:2020 + +pid:452235579 byr:1932 +ecl:grn +iyr:2010 hgt:189cm eyr:2028 +hcl:#602927 cid:258 + +ecl:xry iyr:2009 cid:334 pid:189cm +eyr:2032 byr:2005 hgt:172in hcl:z + +hgt:159cm hcl:z pid:166cm +ecl:oth eyr:2026 iyr:2020 + +eyr:2023 ecl:blu byr:1935 iyr:2015 +hcl:#866857 pid:542611829 +hgt:168cm + +pid:#ec3d53 +hcl:#ceb3a1 +byr:1999 eyr:2024 +hgt:188cm ecl:oth iyr:2018 + +byr:2003 hgt:167 +hcl:486800 +ecl:#29bdd6 eyr:2037 cid:169 iyr:2010 + +byr:1983 +eyr:2026 ecl:gry +pid:203934984 +hgt:181cm iyr:2020 hcl:#a97842 cid:184 + +hgt:180cm +iyr:1934 eyr:2038 hcl:#a97842 ecl:brn byr:1942 pid:427001597 + +hcl:#18171d byr:1988 +cid:267 hgt:188cm +ecl:amb +eyr:2028 pid:696617232 + +eyr:2024 hcl:#cfa07d +iyr:2013 pid:176cm hgt:189cm byr:1990 +ecl:gry + +eyr:2025 iyr:2015 hgt:153cm hcl:#ceb3a1 ecl:grn pid:686467422 byr:1961 cid:282 + +byr:1931 hgt:185cm ecl:oth +eyr:2022 +pid:561083684 hcl:#efcc98 +iyr:2012 + +byr:1948 cid:327 hgt:151cm +iyr:2016 hcl:#733820 ecl:oth pid:341978822 + +hcl:#ceb3a1 +byr:1978 iyr:2020 hgt:172cm +eyr:2022 ecl:oth pid:093317990 + +eyr:2029 +pid:096891409 iyr:2018 +hcl:#d82822 hgt:174cm ecl:hzl +byr:1988 + +hgt:170cm iyr:2018 pid:588142771 eyr:2022 hcl:#733820 +cid:273 byr:1940 ecl:#a608fe + +iyr:2029 eyr:1980 hcl:#341e13 byr:2027 ecl:grt +pid:443809337 hgt:180cm +cid:205 + +ecl:#f89df0 hgt:144 hcl:2f26ab iyr:1982 pid:#3b43c1 eyr:2032 byr:2012 + +ecl:hzl byr:1971 +pid:030850749 +hgt:170in +hcl:#ceb3a1 eyr:2023 iyr:2018 + +byr:1940 iyr:2020 +eyr:2026 pid:437820254 +hgt:179cm ecl:gry + +byr:2028 +eyr:1986 hcl:z +hgt:185in pid:773739744 ecl:dne iyr:2020 + +hcl:#a97842 +hgt:186cm cid:64 iyr:2016 +byr:1947 eyr:2021 + +byr:1988 hgt:160cm eyr:2023 hcl:#866857 pid:788805179 iyr:2022 ecl:amb + +hgt:164cm byr:1996 cid:338 hcl:#efcc98 +eyr:2029 pid:208596014 ecl:blu + +pid:357680064 byr:1960 eyr:2029 ecl:gry hgt:192cm hcl:#c0946f + +ecl:#d32320 +hgt:167in pid:19531341 +hcl:z +cid:346 iyr:2024 byr:2006 eyr:2035 + +pid:843729120 byr:1987 hgt:185cm eyr:2022 +ecl:amb +iyr:2012 hcl:#c0946f + +eyr:2020 byr:1961 iyr:2011 +hgt:162cm cid:54 pid:891397982 ecl:brn + +ecl:zzz byr:2019 iyr:2015 eyr:2028 hcl:43d56d +hgt:152cm +pid:182cm + +hcl:#18171d byr:1979 hgt:174cm +iyr:2013 cid:228 eyr:2022 ecl:amb pid:82422450 + +cid:156 iyr:2017 +byr:1924 +hcl:#b6652a ecl:gry hgt:184cm eyr:2027 pid:451347151 + +pid:850192502 hgt:65in +iyr:2011 hcl:#7d3b0c +eyr:2023 ecl:gry + +ecl:amb hgt:181cm iyr:2017 pid:233345009 byr:1934 +hcl:#341e13 +eyr:2024 cid:199 + +eyr:2026 pid:#4cb480 +iyr:1958 hgt:176cm ecl:dne hcl:z + +ecl:grn eyr:2027 hgt:178cm byr:1994 hcl:#341e13 +iyr:2016 pid:790075315 + +pid:140922484 +byr:1958 +eyr:2025 +iyr:2019 ecl:brn hgt:157cm hcl:#623a2f + +pid:466785488 hgt:160cm hcl:#cfa07d +byr:1947 +iyr:2010 +cid:198 eyr:2020 ecl:hzl + +ecl:oth +eyr:2022 byr:1963 +hcl:#fffffd iyr:2017 +hgt:171cm pid:463249115 + +hgt:73cm byr:1968 +pid:470317690 ecl:blu +iyr:2015 hcl:#c0946f cid:54 eyr:2029 + +hgt:162cm iyr:2014 +byr:1951 hcl:#b6652a eyr:2029 ecl:blu + +ecl:oth +hgt:176cm hcl:#888785 byr:1963 +iyr:2017 pid:453133253 eyr:2025 + +hcl:#efcc98 +eyr:2024 iyr:2020 cid:330 byr:1950 pid:937122408 ecl:gry hgt:162cm + +hgt:168cm +pid:745867335 +cid:165 hcl:#c0946f iyr:2018 ecl:grt eyr:2030 +byr:1932 + +byr:1949 pid:116003343 +hcl:#c0946f hgt:178cm eyr:2028 iyr:2020 cid:220 +ecl:hzl + +iyr:2013 +cid:314 pid:186cm hgt:74cm eyr:1973 ecl:hzl byr:2007 +hcl:180e0c + +pid:486330019 +byr:1999 ecl:oth hgt:154cm iyr:2019 eyr:2026 +hcl:#efcc98 + +eyr:2030 iyr:2018 hcl:#18171d byr:1950 +pid:648616604 hgt:160cm ecl:gry + +hgt:173cm +ecl:oth byr:1993 eyr:2029 hcl:#fffffd iyr:2010 pid:317451887 + +ecl:brn hgt:157cm +byr:1963 eyr:2023 pid:005387570 hcl:#866857 iyr:2012 + +pid:419695212 eyr:2020 byr:1957 cid:198 iyr:2015 hcl:#888785 hgt:168cm ecl:amb + +ecl:amb +iyr:2017 eyr:2024 pid:039995171 hcl:#a97842 +hgt:153cm byr:1983 + +byr:1979 eyr:2021 iyr:2011 hgt:157cm ecl:blu pid:110855542 hcl:#c0946f + +ecl:blu pid:948753945 eyr:2029 iyr:2012 hcl:#ceb3a1 +hgt:164cm byr:1988 + +iyr:2010 +eyr:2032 hcl:#fffffd pid:#175129 hgt:184cm +ecl:hzl byr:1985 + +hgt:189cm ecl:blu byr:1936 eyr:2027 hcl:#733820 +pid:728752361 iyr:2011 + +hcl:#733820 ecl:blu eyr:2023 hgt:172cm iyr:2017 +pid:013415387 byr:1947 + +byr:2012 iyr:2017 pid:#424ae4 +cid:172 hgt:166cm eyr:2022 +hcl:b1319b ecl:#6635d8 + +eyr:2030 +iyr:1928 hgt:185cm ecl:brn pid:#ac5a90 byr:1984 hcl:ac8f43 + +eyr:2027 +ecl:amb iyr:2014 hcl:#fffffd +pid:838758900 +hgt:177cm byr:1942 + +cid:166 iyr:2020 ecl:lzr hgt:70cm eyr:2040 byr:2004 hcl:#733820 + +eyr:2028 ecl:grn byr:2016 cid:61 iyr:2010 +hcl:#cfa07d +hgt:155in +pid:9594283803 + +ecl:gmt pid:984675198 +byr:1997 hgt:128 eyr:2037 hcl:#b6652a cid:299 + +iyr:2015 pid:733864914 eyr:2021 ecl:amb +byr:1971 cid:280 +hgt:181cm hcl:#054593 + +ecl:hzl hcl:#cfa07d eyr:2022 pid:832736421 +byr:1958 +iyr:2010 +cid:274 hgt:152cm + +eyr:2020 hcl:#6b5442 cid:223 hgt:155cm byr:1989 ecl:oth +iyr:2011 pid:549182194 + +iyr:2020 hcl:#cfa07d +eyr:2027 pid:093361240 byr:1941 cid:271 hgt:178cm ecl:brn + +ecl:blu cid:290 eyr:2027 +hgt:192cm byr:1945 hcl:#7d3b0c iyr:2020 pid:910713369 + +byr:1991 hcl:#ceb3a1 ecl:xry hgt:159cm pid:9496171384 +eyr:2030 iyr:2016 + +eyr:2020 pid:812617809 hcl:#7d3b0c +byr:1970 ecl:gmt +iyr:1971 hgt:157in + +pid:596027311 hcl:#866857 hgt:169cm byr:1945 eyr:2030 ecl:oth +iyr:2010 + +hgt:176cm +pid:213213359 byr:2012 hcl:be7b13 eyr:1971 ecl:gmt iyr:2011 +cid:64 + +pid:27107946 ecl:utc hgt:66cm byr:1928 eyr:2040 +cid:87 + +byr:1959 ecl:blu hcl:4e023b pid:9017609497 eyr:2023 hgt:68 iyr:2029 + +hgt:164cm eyr:2023 byr:2008 ecl:grn pid:420168481 hcl:#b6652a iyr:2012 + +eyr:1977 byr:1934 +ecl:brn cid:163 +iyr:2018 pid:2863284754 +hgt:150in hcl:#623a2f + +ecl:hzl eyr:2031 cid:145 hgt:186cm hcl:#cfa07d +byr:1941 iyr:2010 pid:722056139 + +ecl:blu eyr:2027 +hcl:#888785 iyr:2018 byr:1977 cid:278 hgt:156cm + +eyr:2039 hgt:82 byr:2007 +hcl:z iyr:2021 ecl:dne cid:191 +pid:#1cf69f + +pid:183cm cid:111 +hgt:66cm +iyr:1950 +eyr:1947 ecl:#016f6a + +ecl:hzl byr:1957 iyr:2015 hgt:186cm eyr:2029 hcl:#701e04 cid:149 pid:827898914 + +cid:214 pid:785688542 hgt:189cm byr:1974 ecl:brn +hcl:#18171d +eyr:2030 + +hcl:#866857 +cid:241 ecl:grn pid:389488422 byr:1959 iyr:2015 hgt:67in +eyr:2027 + +hcl:#6b5442 iyr:2011 hgt:193cm +eyr:2026 byr:1952 +pid:033382338 +ecl:grn + +iyr:2020 hgt:166cm byr:1927 +eyr:2029 ecl:hzl +pid:927006613 hcl:#623a2f + +ecl:gry pid:640783974 +hgt:71in byr:1945 iyr:2019 cid:268 hcl:#b6652a +eyr:2025 + +hcl:#733820 hgt:163cm +pid:1285584293 byr:1967 ecl:oth +cid:309 iyr:2020 eyr:2031 + +pid:910349085 iyr:2011 hcl:#623a2f byr:1956 +eyr:2025 ecl:gry +hgt:182cm + +pid:018283044 hcl:#602927 hgt:153cm ecl:gry iyr:2020 +eyr:2024 +byr:1990 + +hgt:184cm hcl:#866857 ecl:oth +eyr:2023 pid:405733635 cid:205 +byr:1987 iyr:2012 + +hgt:167cm +iyr:2015 ecl:brn +eyr:2025 +hcl:#18171d cid:313 byr:1960 + +hgt:165cm byr:1933 +iyr:2014 +cid:203 +hcl:#1cdbb3 +ecl:hzl eyr:2027 pid:747009469 + +hgt:169cm ecl:gry iyr:2014 +byr:1966 pid:621876532 hcl:#efcc98 + +cid:342 eyr:2029 hcl:#a97842 byr:1970 +ecl:oth +pid:137287449 hgt:180cm +iyr:2011 + +hcl:#cfa07d byr:1985 hgt:183cm ecl:grn +iyr:2013 eyr:2022 + +iyr:2023 +pid:164cm hcl:z byr:1966 +eyr:2021 ecl:utc + +hcl:#fffffd cid:60 +byr:1973 +pid:324648387 +hgt:177cm eyr:2022 iyr:2010 +ecl:oth + +pid:632056596 hcl:#efcc98 +hgt:73in ecl:brn byr:1928 iyr:2017 +eyr:2023 + +cid:144 ecl:amb eyr:2035 byr:1943 hgt:180cm +iyr:2012 +pid:155cm + +hcl:#6b5442 +pid:927492391 +eyr:2023 hgt:172cm byr:1958 cid:92 ecl:gry iyr:2019 + +iyr:2020 cid:82 +hgt:193in hcl:#b6652a +ecl:grn eyr:2034 byr:2026 + +iyr:1922 hcl:245cb3 byr:2015 +pid:151cm +eyr:2040 +ecl:lzr cid:136 hgt:101 + +byr:2025 +eyr:2029 +hgt:193in +cid:308 +ecl:gry iyr:2028 pid:9335153289 +hcl:z + +eyr:2030 hgt:163cm iyr:2014 +pid:147768826 ecl:blu byr:1922 hcl:#ceb3a1 cid:169 + +ecl:blu byr:2002 eyr:2028 pid:998185490 cid:165 iyr:2020 +hgt:188cm hcl:#c0946f \ No newline at end of file diff --git a/2020/Day4/main-DESKTOP-0CGMHB1.py b/2020/Day4/main-DESKTOP-0CGMHB1.py new file mode 100644 index 0000000..9ecbb59 --- /dev/null +++ b/2020/Day4/main-DESKTOP-0CGMHB1.py @@ -0,0 +1,18 @@ +if __name__ == '__main__': + f = open("input", "r") + inputs = f.read().split("\n\n") + + passports = [] + for i in inputs: + passports.append(i.replace("\n", " ").split(" ")) + + reqFields = ["byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"] + + valid = 0 + + for passport in passports: + dsplit = dict(i.split(":") for i in passport) + if all(field in dsplit for field in reqFields): + valid += 1 + + print(valid) diff --git a/2020/Day4/main.py b/2020/Day4/main.py new file mode 100644 index 0000000..75eb703 --- /dev/null +++ b/2020/Day4/main.py @@ -0,0 +1,77 @@ +import re + + +def checkDate(min, max, val): + return min <= int(val) <= max and len(val) == 4 + + +def checkHeight(height): + unit = height[-2:] + rv = False + if unit == "cm" or unit == "in": + num = height.strip(unit) + + if unit == "cm" and 150 <= int(num) <= 193: + rv = True + elif unit == "in" and 59 <= int(num) <= 76: + rv = True + return rv + + +def checkHair(color): + return re.match(r'#[a-f0-9]{6}', color) + + +def checkAll(): + rv = 0 + for val in keys: + for j in range(0, len(keyval)): + if val == keyval[j][0]: + rv += 1 + break + return rv == 7 + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + raw = f.read().split("\n\n") + + keys = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'] + eclValids = ['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'] + + pp = [] + + for i in raw: + pp.append(i.replace("\n", " ").split(" ")) + + valid = 0 + + for passport in pp: + keyval = [] + counter = 0 + for i in passport: + keyval.append(i.split(":")) + + if checkAll(): + for i in keyval: + key = i[0] + val = i[1] + if key == "byr" and checkDate(1920, 2002, val): + counter += 1 + elif key == "iyr" and checkDate(2010, 2020, val): + counter += 1 + elif key == "eyr" and checkDate(2020, 2030, val): + counter += 1 + elif key == "hgt" and checkHeight(val): + counter += 1 + elif key == "hcl" and checkHair(val): + counter += 1 + elif key == "ecl" and val in eclValids: + counter += 1 + elif key == "pid" and len(val) == 9 and val.isdigit(): + counter += 1 + + if counter == 7: + valid += 1 + + print(valid) diff --git a/2020/Day5/input.txt b/2020/Day5/input.txt new file mode 100644 index 0000000..d9506fa --- /dev/null +++ b/2020/Day5/input.txt @@ -0,0 +1,807 @@ +FBFFFFFLLL +FFBFFFFRRR +FFFBBBBLRL +FBFFBBFLLL +FFFBFBBLLL +FBFFFFBRLR +BFFBBFBLLL +FBFBFFBLLL +BFFFBBBRLL +FBFBBFBRLR +BFBFFFBRLR +FFFBBFFRLR +FFFFFBFRRR +FBFBBBFRRL +FBFBBFBRRR +FBFBBBFLRR +BBFFFBBRLL +FBBBBBFRLL +FBFFFFBLLR +FBFFFFFLRR +FBFBFFBLRR +FBFBFBBRRL +FFFFBFFRRL +FFFFBBFLRR +BFFBBFBRLR +BBFFFFFRLR +FFBFBBBRLL +FFBFBBBLRL +FBFFFBBLLL +FFFFBBFRLR +FBFBBFFLLR +FBBFFBFRLL +BFFFBFBLLR +FBFFBBBLLL +FFFFBBBLRR +FFBFFBFLLL +BFBFBFBRRL +BFBFFFBRRL +FBFBFBFLLL +FBBBBFFRRR +FBFFBFBRRR +BBFFFFFRRL +BFFFFFFLRL +FFFFFBBLLR +FBBFBFBRRL +BFBFFBFLLL +FFFFBBBRLL +BFFFBFBRLL +FFFBBFFLLL +BFFFFFBRLR +FBFBBFFRLR +BFFBBBFRLR +BBFFBFFRRR +BFFBFFFRLL +FFFBBBFLLR +FBFBFFFRRL +FBBFFFBLLR +BFBFFBFLRR +BFFBBFBRRR +FFFBBBBRLR +BBFFBFFRLR +FBBBBBFRRR +FBFBBBFRLR +FBFFFBBLRL +FFBFBFFLRR +BFFFBFFRLL +FBFFBFBLRL +BFBBFBFLLR +BFFFBBFRLL +BFBFBFBLRR +BFFFFBBRLR +BFBBFFBRRL +BFFBFFBRRR +FBFFFBFRLL +FFFFBFFLLR +FBFFFBFLLR +FBFFFFFRRL +FBBBFBBLLR +BFBFFFBLLR +BFFBFFBLLR +FFFBBBFRLL +FBBBBFFRRL +FBBFBBFRRR +BFBFBFFLLR +BFFFBBBRRL +FBBFBBBRRL +FFBFBBFRLL +FBBFBFFLLL +FBBBBBFRLR +BFBFBFFRRL +BFFBBFFRRR +BFBFBFBRLL +BFFBFFBRLR +BBFFBFBLRL +FFBFBFBLLL +FFBBBFBRRR +BBFFFFBLRR +BFBBBBBRLR +BFFFFFBLLR +FBFBBBBRRR +FBBBFBFLRR +FBBFBBFLLL +BBFFFFBLRL +FFBBFBFLLL +FBBBBFBLLR +FFFBBBBRRL +FFBFFBFRLL +BFFBBBFLLR +FFFBFBBLRR +FFBBFFBLLR +FFBFFBFLRR +FBBBBFBLRL +FBBBFBFRLL +FBFBFFFRLL +FBBFBBFRLR +BFFFFBBLLL +FBFBFBFLRL +FBBBFFBRRR +FFFFBFFLLL +BFBBBFFRLL +FBBBFBFLLR +FBBFBBFLRR +FBFFBBBLRL +FBFFBBFLRR +FBBBFFBRRL +FBFBBFBRRL +FBFBBFBLRL +BFBFFBBLLL +FBFFFBFLRR +FBFFBBFRLL +FFBBFFFRLR +FBFBBBBRLL +FBBBBFFRLR +BFBFBFBRLR +BFFBFBFRLR +FFFBFFBLLL +FFFFBBFLLR +FFBFBBFRRL +FBBFBFBRLR +FBFBBFBLRR +BFBBBBFLRL +BFFFFBBRRR +FBBFBFBLLL +BFFFFBFLLR +FFFFFBBLRR +FFFBFBBRRL +BFBFFFFRRR +FBFBBFFLRL +FBFFBBBRLL +FFBBBBFLLR +FFFBFFBLLR +FBFFFFFRLL +BFBFFFBLLL +FBBBBFBRLL +FFFFFFBRRL +FFBFBFBLLR +FBFBFBFRLR +FBBBBBBLLL +BFFBFFBLRL +FFBBBFBLRL +FBBFFFFRLL +BBFFBFBLRR +BFBFFBFLLR +FFBBFBBRLR +FBBFFFFRRL +FBFFBFBRLR +BFBFBFFLLL +FFFBFFFLLL +BFBFBFFLRL +BFBFBBFLLL +FFFBBBBLRR +BFFBFBFLLL +BFBBFBFRRR +BFBBFFFLLL +BFFFBBBLRL +FFBBFBFLRL +FFFFBFBLLR +FBFBFFFLLL +BFBFFFBLRR +FFBBFBBLLR +FFFFBBFLRL +BFBBFBBLLR +BFFBBFBLLR +BFFBFFBRLL +BFFFBBFLLR +FFBBFBFLLR +FBBBFFBRLR +FFBFBFFLLR +FBFFFBBRLR +FBBFFFBRLL +FBBFFBBLRL +BBFFFFBRRL +FFBFFFBRLL +BFFFBFFLRL +FFFFFBBRRR +FBFFBBFRRL +FBFBFBFLRR +FBBFFBFLRR +BFBBFBBLLL +FFFBFBFLRL +BBFFFFBLLR +BBFFBFBLLL +BFBBFBFRRL +FBBFFFBRRL +BFFBBBFLRR +FFBBBBFRRL +FBBBBBBRLR +FFFBFFBRRL +FFFBBFBLRL +FBBBBBBRRL +FFFFBFFRRR +FFFBBBBRLL +FFBBFFBLLL +BFBFBBFRLR +FFBFFBBRLL +BFBBBBFLRR +FBFFBFFLLR +FBBBFFBLLR +BFFBBBBRRR +FFBFFFFLRL +BFFBBFBRLL +FFBFBBBRRL +FFBBBFFRLL +FBBFFBFLLR +FBFFBFFLRR +BBFFFFFLRL +FFBBBBFRLR +BBFFFBBLRR +FFFFFFBRRR +FBBBFBBLRL +BFFBBFBRRL +BFBFBBFRRL +BFBBFBBRLL +BFBFFFBRLL +BFFBFFFLRL +BFFBBBBRLL +FFBBBBBRRL +FBBFFBFRRR +BFBBBBBLRL +BFFFFFBLRL +BBFFFFBRLR +FFBBBBBLRL +BFFBFBFLRL +BFBBFFFLRR +BFFBBBFLRL +BFFBFFFLRR +BFBBFBFLRR +BBFFFFFLLR +FFBFFBBLRL +BFFBBBBLLR +FBFFBBBRLR +BFFFFBBLRR +BFFFBFFRRR +FBBFFBBRLL +FBFBFBFRRL +FFFFBFBRRR +FFBBBFBRLL +FBFFBFBRRL +FFBFBFBLRR +BFFFFFFRLL +BFFBFFBRRL +FBFBFFFLLR +BFBFFBBRLL +FFBFFBBLLR +FBFBBFBLLL +FFBBFBFLRR +FFFBBFBRLL +FBBFFBFLRL +FFBFBFFRRR +FBBBFBBRLL +FBFFFFBLRL +FFFFFFBLRR +BFFBFFFRRL +BFFBFBBLRR +FBBFFFBLRL +FBFFBBFRRR +BBFFFBFLRL +BBFFBFFLRL +FFBBFFFLRR +BFBBBFBLLR +FBFBFBFRLL +BFBFBBFRLL +FFBBFBBRLL +BFBBBFBRRL +BFFFBBFLRR +FFFBFFFRLL +BBFFBFFLRR +BBFFBFFLLR +FFFBFFBLRR +BFFBFFFRRR +FBFBFFFRLR +FBFBFFBLLR +FBBFBFBLRR +FBFBBBBLRL +FBFBBFFRRR +BFFFFBFLRR +FBBFBBBRLL +FFBFFBBLRR +FFBFBFFRLR +FBBBBBBLLR +BFBFFFFLRR +BFFFBBFRRR +FFBFBFFLLL +FFBFBBFRRR +BFFBBBFRLL +BFBBFBFRLL +BFBBBFFRRR +BFFFBBBLRR +FFFBBFBRLR +BBFFFBBLLR +BFFFBBBLLL +FFFBFFBRRR +BFBFBBBLRR +BFBFBFFLRR +FBFBFBBLLL +FBBBFBBLRR +FBFFBBBRRR +FFBFFBBRLR +FFFBBFFRRL +FBBFFBBRLR +BFFBFBBRRL +FBBBFFFLRL +FBBFFFFLLR +FFBBFFBRRR +FFFFFBFLRL +BBFFFFFRLL +BFBBBFFLLL +FBFBBFBRLL +FBFBBBFRLL +FBBBFFFLLR +BFBBFBBLRL +FFFFBBFLLL +BFBBBBBRRR +FFFBFBFRLR +FBFFBFBLLL +BFBBBBBLLR +FFBBFFFRLL +FFFBFFFLRL +FFBBBFFRRL +FFBFFFFRLR +BFFFBBBLLR +BFBFFFFLRL +FBBFFBFRLR +FBFFFFFRLR +BBFFFBBRRL +BBFFFBBLRL +FBFFFBFLRL +FBBFFFFLRR +FBFFFFBLRR +FBFFBFFLRL +BFBFFBFRLL +BFBFBBFRRR +FBBBFBFLLL +BBFFFFFLLL +FFFFBFFLRL +FBBFBBFLRL +FBBFBBBRLR +FFBFFFFLLR +FFBFBFBRRR +FBBBFBBLLL +FBFBBBBLLR +BFFFFBBLRL +BFFBFBFLLR +BFFBBBFRRR +BBFFFBFLRR +FBFFFFFLRL +BFFFFFFRRL +BFFBFFBLLL +BFFFFFFLLL +FFFBFFBLRL +BFFFFBFRRL +FBBBFFFRLR +BFBFBBBLRL +BBFFFBFRRR +BFFFFBBLLR +BFBFBBBRRR +FBFFFBFLLL +FBBBFBFRLR +FFFFFFBLRL +FBFBBFFRRL +BFBBFBFLLL +FFBFFBBRRL +BFBFFFFLLL +FBBFFBFLLL +FBFFFBFRRR +BFBBBBFRRL +BBFFFBFRLL +FBBFBFBLRL +FFBBFFFLRL +FBBFBBFRRL +FBBFBBFLLR +BFBFBFBLLR +FBBFFFFRRR +FBBFFBFRRL +BFFFFFFRRR +BFBBFBBRLR +FFFBFBFRLL +FBFFBBBLLR +BFBBBBBRLL +BFFBFFFRLR +BFBBBFFLRL +BFBBBFFRRL +FFBBFBFRRR +FFBFBBFRLR +FFBFBFFLRL +FBFBFFBLRL +FBBBFFBLRR +BFBBBFFRLR +BBFFBFFRRL +FBBBBBFRRL +FBFBBFFLLL +BFBBFBFRLR +FFBFBFFRRL +BBFFFFFLRR +FBBBFBFRRL +BFBFBBBRLR +FFBFFBFRLR +FFBBFBFRLR +FBFFBFFLLL +BFBFBBBLLL +BFFFFFBRLL +FFBFBBFLRR +BFBBFFFLRL +BFFFFBFLRL +FFBBFBFRRL +FFFFBBFRRR +FBFBFFBRLL +FBBBBFBLRR +BFBBFBBRRL +FFFBFBFRRL +FBFFBFBLLR +FFBFBBBLRR +BBFFFBFLLL +BFBBBBFRLR +FFFFFBFRLL +BBFFFBBRRR +BFFBBFFRLR +FBFBBBFLRL +BFBBFFBLRL +BFBBBFFLRR +FBBBFFFRRR +FFFFBFBLRL +BFFBBBFLLL +FBBBBFBRRL +BFFBFBBRRR +FBBBBBFLLR +BFBFBBBRLL +FFFFFBFLRR +BFFFBBFRRL +FFFBBBFLRL +FBBBBFBLLL +FBBFBBBLLR +FBFBBFBLLR +FBFBFFFLRR +BFFFFBFRLR +FFFBBBBLLL +BFBFFFFRRL +FBFBBBBLRR +FBBBBFFLRL +BFBBBFBLLL +FBBFFFBRRR +FFFBBFFLRL +FBBFFFFLLL +BFFFFBBRLL +FBBBBFBRLR +FFBBBFBLLL +BFFFBFFLLL +BFBBBBBLRR +FFBFFFFLRR +FBBFBFFRLL +BFFBBBFRRL +FFFBFBFLLR +BFFFBFFRRL +FBFBFBBLLR +FBFBBBFRRR +FBBFBFBRLL +BBFFFBBLLL +FBFFBFBRLL +BFBFFBBLLR +FFFBBFFLRR +FBBFBBBLRL +FFFFBFFRLL +FFBBFFFLLL +BFFBBBBLRL +BFBBBFFLLR +FFBBFBFRLL +BFBBBFBLRL +BFBBBFBRLR +BFFBBFFLRL +FFBBBBBRLL +FBBFBFFLRR +FFFBBFBLRR +FBBFFBBRRL +FFFBBFBLLR +FFFBBFBLLL +FBFBFFFRRR +FFFFFFFRRR +BFFFBFFLLR +FFBFFBFLRL +FFFBFFFLRR +FBBFBFFRLR +FBFBFBFLLR +FBFFFBBRRL +FBFFFBBRLL +FFBBFFBLRL +FFFFBFBRRL +FFFFFBFRRL +BFBBFFBLLR +FBFFFBBLRR +FFFFBFFRLR +BFFBBFFLRR +FBBBBBFLLL +BBFFBFFRLL +BFFFFFBRRL +FFFBBBFLLL +FFBBBBBRLR +FFBBBBBLRR +BFFFFFFLRR +FFFBBBFRRR +FFBBBFBRRL +BFBBBFBLRR +FBBFFBBLLR +FFFBFBBRRR +FBFBFBBRRR +FBBFFFBLRR +FFBFFFBLRR +FFBFBBBRLR +FFFBFBFRRR +BFFBFBFRLL +FFFFFBBLRL +FFBBFFFRRL +FFBFBBBRRR +FFBFFBBRRR +FFFFFBBRLL +FFFFBBBLLL +FBFBFFBRRL +FFFBFBFLRR +BFBBFBBRRR +BFFBFBBLLR +BFBFBBBLLR +FBBBBBBRLL +BFFBFBBRLL +FBFFBFFRRR +BFFFBFBRLR +FFBBFBBLRL +BFFFBBFLRL +FFFBBFFRRR +BFFBFFBLRR +FFFFFFBLLR +BFFBFBBRLR +FBFBBBBRRL +BFBBFFFRLL +FBFBBFFLRR +FBBFBBFRLL +FFBBFBBLRR +BFBBFFBRRR +FBBBFBFRRR +FFFFBFBRLR +FFFFFBFRLR +FBBBFFFRRL +FBBFFFFRLR +FFFFBBFRLL +FBBBFBFLRL +BBFFFBFRLR +BFBBFFFLLR +BFFBFBFRRL +FBBBFBBRLR +FBBFBFBRRR +FBFFBBFRLR +FFBBFBBRRL +FBFFFFBLLL +FBFFBBFLLR +BBFFBFBRLR +FBFBBBFLLR +FFFFFFFRRL +FFBFBBBLLL +FFFFBFBLRR +BFFFBFFLRR +FFFFBBBLLR +FFBFBFBRLR +BFFBBFFLLL +BFBBBFBRLL +BBFFFBFLLR +FFFBFBFLLL +FFFFBFFLRR +FFBBBBBLLL +FFFFFBFLLL +FBFBFBBLRR +BFFFFFBLLL +BFBBFFBRLL +FBFBFBBRLR +FBFBFBBLRL +FBBBBBBLRR +FFBFFFBRRL +FBBFBFFLLR +FBBFFBBRRR +BFBBBBFLLR +BFFBBBBRRL +FFFBFFFRRR +BFBFBBFLLR +FFBBFFBLRR +BFFBFFFLLL +FBBFBFBLLR +FFBFFFBLLL +FFFBFFFRRL +FFBFFFFRRL +FFFBBBFRLR +FBFFBBBLRR +FFBBFFBRLR +FFFBBFBRRL +BFFFFFBLRR +BFBFBFFRLR +FFBBFBBLLL +FFFFFBBLLL +FFFFBBBRRL +BFFBFBFLRR +FFBBFFBRLL +FFBFBFBRRL +BFBFFFFLLR +BFFBBBBLRR +FFFBBBBRRR +FFBFBFBLRL +FBFFFBBRRR +FFBFFFFLLL +FFBBBFFRLR +FBFBBBBRLR +FBBBBFFLLR +BFFFBFBRRR +FBBFBBBRRR +FFBFFBFLLR +FFBBBFBLRR +BFBFFFFRLL +BFBBBBBLLL +BFBFFBFRRR +BFFFBFBRRL +FBFBBBFLLL +FFBBBBFLLL +BFFBBFFLLR +BFBFFBFRLR +FBBBBFBRRR +FBFFFBFRRL +FFBBBFBLLR +FBFFBBFLRL +BFFBFBBLLL +FFFFFFBRLR +FBBFBBBLLL +FFFBFFBRLR +BFBBBFBRRR +BFFFFFFRLR +BFFFBBFRLR +FFBBBBFRRR +FFFFFBBRLR +BFBFFBBRRR +FBBFBFFRRR +FFBBBBFLRL +FBBBFBBRRL +FBBBBBBLRL +FBBBBBFLRR +BFBFFBFRRL +FFFFBFBRLL +FBBBBFFRLL +FBBFFFBLLL +BBFFFBFRRL +FFBFFFBLRL +FFFBFFFLLR +FFBFFFBLLR +BFFFBFBLLL +BFBBBBFRRR +BFBBFBBLRR +BFBBFFBLLL +FBFFBFFRRL +FBBFBFFRRL +FFFBBBBLLR +FFBBBFFLLL +BFFBBFBLRR +FBFBFFBRLR +FFBFFFBRRR +FFFFBBBRRR +BFBFFFFRLR +FFBBBFFLLR +FBBBFFFRLL +FBBFFBBLRR +FFBBBFFLRR +FFBFBFBRLL +BFBFBBFLRL +BFBFFBFLRL +FBBBFFFLLL +FFBBBFFLRL +FBFBBBBLLL +FFBBBBFRLL +FBBBFFFLRR +FBFBBFFRLL +BFBFFBBLRL +FBBBFFBLLL +BBFFBFBLLR +FBBBFBBRRR +BBFFFFBRLL +FFFBFBBLLR +BFBFBBBRRL +BBFFFFFRRR +BFFFFFFLLR +FFBFFFFRLL +FBBFFFFLRL +FFFBBBFLRR +FFBFBBFLLR +BFBBFBFLRL +FFBFBBBLLR +BFFFFFBRRR +BFBBBBBRRL +BFFBFFFLLR +BFBBFFFRRL +FFFBFBBLRL +FBBBBBBRRR +FFFFBFBLLL +FFBBBFFRRR +BFFFFBFRRR +FFFFFFBRLL +FFFFFBFLLR +FFBFBBFLRL +BFFFFBBRRL +BFBFBBFLRR +FBFBFBFRRR +FBFFBFFRLL +FFFFBBBRLR +BFBBFFBRLR +BFBFBFFRRR +FFBFFFBRLR +FBBFBBBLRR +FBFFFBBLLR +FFFBBFFLLR +FBBFBFFLRL +BFFFFBFRLL +BFFFBBBRRR +FBFFFFFLLR +FFBBBBBLLR +FBFFFFFRRR +FBFBFBBRLL +BBFFFFBRRR +BFFFBFBLRR +BFFFBFBLRL +BFFFBFFRLR +FFFBFBBRLL +BFBFFFBRRR +FFBFFBFRRR +BFBFBFFRLL +BFBBBBFLLL +FBBFFFBRLR +BBFFBFBRLL +FFBFFBFRRL +BFFBBBBLLL +BFBFFFBLRL +BFBBFFFRLR +FBBBBBFLRL +FFFFBBBLRL +FFFBBFBRRR +BFFBFBFRRR +FBFFFFBRLL +FBFFBBBRRL +FFBFBBFLLL +FFFFBBFRRL +FBFFBFFRLR +BFBFFBBRRL +FFFFFFBLLL +BFBFFBBRLR +FBBBFFBLRL +BFFBBBBRLR +BBFFFFBLLL +FBFFFBFRLR +FBBBBFFLLL +BBFFFBBRLR +FFFBBBFRRL +BFBFBFBLRL +FFFFFBBRRL +BFBFBFBLLL +FFFBFBBRLR +FBBFFBBLLL +FFBBBBBRRR +BFFFBBFLLL +BFBFBFBRRR +BFFBFBBLRL +FFBBFFFLLR +BFFBBFFRRL +BFFBBFBLRL +FBFFFFBRRR +FBBBFFBRLL +FFFBFFFRLR +BFBFFBBLRR +FFBBFBBRRR +FFBBBFBRLR +FFBBFFBRRL +BFBBFFBLRR +FBFBFFBRRR +BFBBFFFRRR +FBBBBFFLRR +BFFFFBFLLL +FBFFFFBRRL +FFFBFFBRLL +BFFFBBBRLR +FBFBFFFLRL +FFBFBFFRLL +FFBBFFFRRR +BFBBBBFRLL +BBFFBFFLLL +FFBBBBFLRR +FFBFFBBLLL +FBFFBFBLRR +FFFBBFFRLL \ No newline at end of file diff --git a/2020/Day5/main.py b/2020/Day5/main.py new file mode 100644 index 0000000..b5c8c7d --- /dev/null +++ b/2020/Day5/main.py @@ -0,0 +1,17 @@ +if __name__ == '__main__': + highest = 0 + with open("input.txt", "r") as f: + raw = f.read().split("\n") + + seatIDs = [] + + for less in raw: + row = int(less[:7].replace("F", "0").replace("B", "1"), 2) + seatnum = int(less[-3:].replace("L", "0").replace("R", "1"), 2) + seatID = row*8+seatnum + seatIDs.append(seatID) + + seatIDs = sorted(seatIDs) + + mySeat = set(range(seatIDs[0], seatIDs[-1])) - set(seatIDs) + print(mySeat) diff --git a/2020/Day6/input.txt b/2020/Day6/input.txt new file mode 100644 index 0000000..df39bdf --- /dev/null +++ b/2020/Day6/input.txt @@ -0,0 +1,2178 @@ +w +s +q +s + +klfrwivqhc +w +wgyze +anw + +khfraeogtbdscw +rdofujgnm +ydfrgo +dgjoqmrf +yrfdgzpon + +xmivszjcnqhda +efwvanjd +dvjuywna +egjwvndkboa + +mraiyzpxngdl +ynzdmgkxwpaiolr + +ur +rq +r + +xbkdvzgwuterocn +zukrvtbneogdx +umykaztlrodgbxwve +odujhzrpsxekgbiv + +vhkmesczrwpj +cvkmrzhsewpj + +rpt +qwu +j +k +p + +crjqtmzkba +kjuhynv + +xjnpivhszgofwum +cipqmtugyobxvwfhn + +qgcmjr +rbmgjoq +zuekypfwdng +amsxg + +ykwj +yjunwk +jkwyd +iwkzjy + +qsdczjkoixlrnyvbmgtf +woickyhaguesfrnpq + +pma +ma + +g +n +rh +n + +tjhcxba +bxthacj +abhtxjc +hjbaxtc +jbctxha + +obuairedl +wauixvbogejdpln +ldciokbaue +myblsdeuiazo +tdembualfizo + +bpumtwsxe +tsaumxw +hxuftswm + +vqglbnuhej +xbglpwzyam +uelbgovc + +qcdwjtghispmorvlu +mziopsvhdwtlgjuqrc +rdlspoujmtwgihvcyq +nojtaidspuhvmkblwercqg +dpqohtufrcvlmjgswi + +jgmbovu +akiuxtg + +rsuypgkdiofnbwt +npcdvyokbirwgt +mnybkgeortadpw + +idt +idta +idt +idt +nidtry + +amoxgqywpznistrlf +zqfidnsbyjgaxwo +nsyqijwxvohazfg +sioxnqfwazgy + +ryhgae +ahygre + +waopckqgeyrsuh +qrkwaegysocuph +csohuawqegrpky +ykqahecrsoupwg + +eswjgdxfmkvq +jmtkwbvxqfedrs + +eqkmozylat +yjmaezkrl +zbmkalye +zmaekigyl +ylakemzjc + +tqlrzgwdokxnu +lkdanfmci +nhmejkdflap + +mxviraylsouf +vbspyxfaewiruqktdczl +yhlravxgfisu +nxyvlusafir +rsvafxliyu + +qlrgcjdpnyzofkxmeiv +kmazvnxscotrjeygdilpf +zxdnogtmlqjevfkiypc +pglconixjvbzkfymue + +zyxucs +sxcy +csxy +xscy +xscy + +uavrcwslpdqghmenbioxjyz +kjcqgrpdnymelxuzothawvib +lhbcumsfqrvzwnxjydpoagie +qgozpicjumxwaybnrlvdhe + +vwdegcnoqafb +avbwqectgnof +acqefnwvgbo +oeqabfwrcjlgnv +ancqwovegfb + +qva +va +xba +a + +nhxeygm +oaypjdznr + +ngzm +uhql + +nyujw +uynw + +ercqboln + +s +yh + +d +qs +n +efwcn +w + +yzowkdciuqljeg +goiyjwzckludeq +yuekgwjodlzicq + +qxkhclsg +xlqckg +qxkcgl + +nwrxtshalk +fqoc +ypqug +pmfvzc +vzigd + +diqentabxumf +utnmieadqb +udtemqinba +mbqidntaeu + +imjpuxdlsr +pmrlxsjdi +xjpisrdml +ialpxshdmyjr +smjxzplrdi + +eivhrugycstznxjkawqo +rhxwkizjeqayougtvncs +zbsygjuwacioxpnktqvhre +cyirhogexjzkwsntuavq +csrovwjqxnhzayktegui + +h +fd +h + +uphjsebqgklcomtwify +cqkltbwofhspugimeyj +wvrekmaxicufgyjbhqopsltz +qtobyikeschjmgflwup +sceghujwtfkpblyqmio + +a +a +a +a +a + +gskndyzmophwclqv +mylhsqdcnozpkgwv +snyodvwplgmkzchq + +nyfjkgwielzq +shoumqbpxg +zlvkwrgaq + +omndevzcwyajltfksq +ztfvpyjwdrlbmqoce + +viqrlshezknaow +vheawroznstkblq +hxfswlvegjnoyrkqc +iblhwqneouvkrms +hdpsnwqrvekol + +r +tr +srk +ryz + +aqzkthji +qkwzjta +jzktqa +tgzkasrojq +nzikhjaqut + +wr +wrg +wr + +lmvpujx +bczhsgfaqt + +fhadqpy +qbk +ixstvjlcrmwognuez + +cpuznxavj +pxvuzcja +cjpuzaxv +upzjvaxc + +hftodjcxvbrisuy +bhuodryvsfjxi + +wtdf +nwuikz +lxmbjawysh +kdrtw +qfkw + +ymxzrfh +zrwjdhf + +lniw +wnli +wnzrli + +ubwjo +sjzo +rjo + +zikumqlvjobw +ktoaufevgrb +rnkbtovduh + +jmvbntqilzhrgp +qhgzvkmtripw +psrqwgihzvtm +vmgqrtpihzd +vqrwipgmthsz + +hnyzvkwgeo +ezhvoynk +evnhkoqwzy +hvznelgkoy +oyekhaxviznu + +pwqivtzgebnolk +inqwtvgzopb +qwinobvgzpt +vbiowqtpnzg + +ulsvitcxngwzhryaebkfp +sxypjlzgoihkrnubva + +bzgt +gotxzb +ztgb +tbglz + +lsrqikouybjdvawz +qnchepfoi + +ufwavmp +vfpamwu +wfvmpau +vwumfpa +pmtfuawv + +g +gh +e +n + +swfjhadxgnuzrybokl +sleobifpuqhkzc + +pcwfrnhsvdgejimlzoaubk +vducpzwnsjmhoilgkbaerf +rpbjnwvguahecofmkisdzl +ufbxshgloznvrwipjcqeadmk +hnmscakpleigdfjozvburw + +ouraitbgl +trdmgi +fcxpstnyjg +gouat + +nmrvxhdc +chnrmvxd +xvrhcnmd +mrcdvxhn +mxvndhcr + +cufsjilngrbydkhqex +kljdhfaxyguqisbrw +dkgubshipmxrlqftoyj + +jsi +sij +sji +isj +jis + +prnxkmutl +pdvuaeyxochzltnkmr +gmxlutkpnrb +lxpmkrtnu + +amcxhzlrpg +kpmowcr + +n +ryn +an +n + +qfgeuyn +unqcfe + +haj +ocja + +tbfmzce +tfmzbe +smzefbt +mbztfe +mfztbe + +cgrtbynxejvqmhalf +hyafxecjqvrnmbltg +qtghbfrmcxaevjlny +fyqjgcemhlabnrtxv + +h +h +h +wh +hg + +mpidnesyhcowqtgulfk +oehmlsxqundfgbkytwa + +hsqywtmpgazudj +tpuewnhoagzsydjlm +gdupwstzjahym +qwrpgikdyuatzhjms +mtaduhswzjpgy + +yfcirgulotspbxehdzmwnkqv +aqvgyhtrniemlxpbcudwsf + +bguysvaqwcmdjk +xmgfuybtkprqacd + +rjmoslapxkvuht +uavxpsflhjoktr +hpcjtarlsqwkoxuv +jvakpxloushtr + +iwcnso +bgwc +gpwcu + +jwdiuyabzklmqsxv +uxyjkvqwdszflabmi +aiqwuszlxbkjydvm +vysjdmqlzwxaibku +mksabwzxqivujdly + +a +alo +a +a +a + +dzushfvegcopkbw +oueshcbkvdpwg +esbcowkgvpduh +pghduksijcevywobl +puezsvdohbwckg + +ymow +moy +ohmyle +ymo +moy + +mzctqbypdkrialjgoxsf +kqpoyabcigszdrtmfljx +xkfgltdipzjqysacmbro +lirmkbxsafcgdozytjpq + +yhtvcsfaigk +wrevhoqdm +zphujdrlnv + +zyahfewvcs +sfzcweayh +woeshuacyf + +p +ljbr +wxp + +cfdltixjupqon +nmuptcqodlfij +rpltfunoqjicd +nlqctporjifud +ufipcdtlnojq + +xu +uowa +ux + +ycloxsvrwajqbzfkhpgmun +wjlrmuoaxvkqfbpzsyhcng +aqrcybjgonhkpuvmzlfxsw +warfnczvokmyjgsqxhblpu +tvzngwyqbfulxcphoskjrma + +yfhzaw +hmuazqwbj +ayhzwi +awxetzh +gawzih + +gsbqoynfmevkcadjzu +dmyofukqezgasctvn +zqkmoadfnubsiveygc +gezqymskdfnouvaci +kzgncourmyfqeavsd + +pzkyu +pyedw +ypr +tyifxjnsp +rbkqywup + +mlwtuqxsog +xzmusgwtlq +qmitxvulsgwcak +uxwgjmrtslq + +bcnkpwtmqgorsfxy +hmogknxfpqwsctbr +gqsracvfiobzkxnpmw + +kpxv +pfkzxv +xpk +pkx +xubokps + +bwlytxgviueczfqakrpsmhojd +fowlhcmvasbqdgptjikyxruze + +nowi +ivonqx +if +lysuabtiprdkzh + +u +u +u + +dkrhoamveqlgcjwfsz +dgokizyvfjhaqwcme +thwguqxoadznekvcjpmbf + +hyrsn +rhdyjsf +ycbzrs +smrykotpu + +tsnfogyic +ingctoysf + +cvnoazqpkthxwj +qhsmjdlznvkwfbt +qnvkhjwlstz +ltjzkugbqhwvnis + +q +ytx + +vxjyeorpcgbsta +oajbxtysv +tymsxjoabv + +jwko +wojk +wjko + +nfjvu +nfkv +dvnfse + +toe +toe +ote + +zqrmchysuf +oyzufmqslke + +sgbwp +pgwbs + +bl +klp +led +l +lq + +ea +ea +rfeah +ae +aex + +kbpnxtliue +kxbtieunp +exbtipuknr +nburkipxtel +igtpwhnejqbuckx + +hfarpblqs +baophlqrexfsd +hbqfsnlpar + +fspkvb +hfpkvsb +vpsfkb + +fbnx +fknl +nftl +cuzownfq +fyn + +qd +qfdzy +dq + +jhwgyisz +vfkcdjqhme +hxwjo +jyhbr +hsuj + +bip +jolwnbcgp +reptb +pbz +bpe + +hrdiepna +vitecpzyndar +esbkaudrijpnlog +pxivdaenrh + +hpfwjy +fjya +ajyf +yfj + +r +rz +r +r +r + +r +r +r + +sqlcpxhtouyzwv +tyxhrsbuczklidogvq + +aisdgc +mcdsiga +asigdc +dcisag + +iswu +siw +sqwi + +aixlbtqznjcgshu +oayljitqguzbchxns +suxgbcntaliqjzh + +fubhpe +ufibkay + +lena +izaj +axbvk +chav + +fkoshgqju +jiq +qjwbi +jiq +jyqbi + +ebaqscfvhgtuoirnjwxlzykp +hfjxqtuvrwgeknboipazyscl + +qrdo +qlfejdru +pqxyra + +gmnafo +fsgmepna +mfonag + +pnxtgjqsbizkyc +ithkycsjbpzxru + +snfwtloepqdrkiy +qkobliwsdnh +wsxjqnihzkodl +ahdwsilnkqbo +duowiqcmksnl + +cjft +haorelpitd +gbxhedt +knzthvyaqu + +vgyoklbrhedtwcjxans +eaxgovbrudfnhzktjsyclw +ytcgjxvodwhaenlsbrk + +fnmhxj +lfnxr +xmnefc +wduktfvqgn + +omf +jwfou +cpdgxqevabkrzny +lwhts + +vhn +hirkuj +hzngm + +minhkslfp +rfahobpksn +plfknsch +psifmcnhk + +xkoiztsqvpceywhfbndu +ebkpvsunzcxhmofdiqyt + +nfp +fne +fn + +hinmuatrvygoqxfsjc +vrfxtuagojyiqnhscm +tifguysjoxrnqmadhcv + +yetihjzfkndum +nejhiatzumkyd +zitvhkdenmjyu +hinjeumtzykd +ekztmhndjiuy + +glbtefawdsycomj +djbsgnalyokcwmte +mojdwysnategclb +bvgcjosaytwldemp + +evwuatlypjixqzrsmhc +erwiucsaxmtvhyjzl +lhcxeavjmyzurtsonwip +mxveyutrhslgbaczdjifw +snmyhxctuazerkwlvji + +rvpwjbh +yfecq + +vxbchwiygoe +gwivcydbxeho +ylogwcevibhtxa +bgwphicvexyo +emivwogychrbx + +pwghmnxtfzbyl +vqsakujrdo + +areduqjvczsm +jadhzebrcum +dcrumqayjzei +rczsujymdea + +omtyndvrha +vwdhaort + +crb +r + +uirepncmbyhzkaofwxvd +recwkxyhfnbmzaduovs +kwceyznjbfoidhamrxvu + +lejmaipctkvuwgzqfsnor +okmuaizfsrtnwlevjcgqp +lqkwnraeuovstmizpjcgf +atsunvqljzepckrmogwif + +rjobteshildmxacpz +lrpdbajtmhcsoexiz + +l +pvnsiom +khgx +f +f + +khjgfwy +fpgykjw + +wajntv +wdzuvtj +iowjvtke + +fwvopmi +singjtf + +nocq +nugbvmqeo +qaoscn + +rlkzoi +opfsta +qvuo +soxp +xhmoj + +guvqownkfrilte +aegnhfyxcszqbwvl + +qzo +qlr +vquo +fgq +nkwhbdactmxijq + +ijqgmnkeoxwuvbta +tiubnkgwamoqvj +ajdkuqtimbpvonhgw +mjgnyqitvwraobuk + +s +g +g +g + +vspbciqmaj +pijumqscva + +evpqzoxgtmbns +tevgqbpfsnxl +epnbtgsxvq +qxpsnetgmvb +depavkqngtrbjxs + +aplrhkuiyf +mxhpvwfzolsn + +fxtbhediuslacmy +hbkufmistx +ihupfsmtbxz +mfhipusxtb +xihmtjbsuf + +muzqcfp +mcpfzu +mrzfpucw +zfcvmup +pzcufm + +q +q +q +q + +jbk +peiw + +vuejaotbcp +ulbakiotxdcry +cobunat +bmcfvhauto + +qpo +qopw +pqo + +ckpequzlfdtrb +yphsdgwbzn +bgmpzd + +nbuqtywiloaesz +rkghxdvf + +owetrs +etbwciulf + +heaudnstmjwrpg +pxkyniszuebmolhfjdgr +jenrsqcupdwhmg +pujhrdmcengs + +cutnl +ltunc +cntlu + +hd +bih + +rdf +drf + +kftwxpoqmgbuil +wfstpikuhqbcmxog +zktqfjpxayobvumin +qgtfbopkruidmx + +sovyuxi +vux +uvqx + +j +j +j +j +mav + +qark +tdeaquk +zaxnwcpylkgvoqmhi +kaq + +rfysxdtumlwavingkhqo +gbudftnxypmzrlevakjoq + +qafyltcembujhd +jmaqtdublyfche +dmhbqljfeaytuc +emdtqyjahucbfl +tcbfjlyemaqudh + +cpxhbjlqwarm +bhlzcawpjmqyg +cjlwbamhqpe +fhlbjcmpqawv +jalmbqiphwc + +zoyw +yzo + +qvudhfxtjesibgwynaorl +nuctmlvpkgoefqsihbrwyzxa + +mgkqthideusny +ohtgleqksudiynm +nhgikyustdqme +puqgrdyntmhkise + +hlmfcir +lcmfrih +rlkcyfmhin +imhcrlf + +ifqds +spodiqf +ifdsq + +ajp +apj + +dramqyjeiskugn +qidmekaysrgpjfun +egysqnkrijluadm +ngdirjyksameqlu + +tmpogzdsxrye +sryedpmqxzg +zcxpmlsukydreg +dpeolsyxkwgtzijrm +mefyrxdpbsvghz + +qafgj +agfjd + +hrczjfebg +fjergzc +cfmrztsygvl + +istujvdk +keyoahi + +ktwuhfqas +qksmthdwaru +ajkthusqpw + +eprjtfahignbcklvuqwyx +apxqrceguwtjnkbhyfilv + +drosxgbv +orvbgx +xgrobv + +ylmpr +yrmlp + +auwizmytjcsdbnvo +ywsmkoatibzndcju +nytqecdbxhlzmiwuoarsgj +vtdowcfjymsauknbiz + +z +z +z +z + +hxjiqdaveoku +jxqkdvheioau +hxoqdueajvki + +tuxfs +usxtf +uxtfs + +dnaiovgxlryzhqwepbmuj +zbgxvpaudnmwrqohejyil + +qaybxdnelzokvjhmwrgusiftp +pyoukjfretqzsdxmhwvna +szwcvfkohpuyeqntrdamxj +jzkrfqvyptahxsmnowdue +yepoudnfxzkwjmqvtrsha + +pd +e +m +lq + +xcyvzopaubf +zhuyovbpcx +bcxuyvgzhop +dyczxoubvpmsw +zovykxucpb + +w +w +w +h + +aohk +kao +vkyhoa +oqvak +akjow + +r +r +g +r + +clnhiwztgq +ydfxzrcvjg + +otmchepjl +gkvunyfwlm + +ruzxit +ixtzdr +xrzit +xqzitckr +trizux + +grufeslzwvxqndhimakcyjp +soaxtzmwgjdlnkpcqevrfuiy +bdaxjepnmzkruslyvqifwcg +qjiysmvhxfurkaegzdwlpcn + +cerjstxhanlzkqgodfuy +crjsonqyuvdaelhftxzgk +rksaucfxdgmoqnhytejzl +gsnuojthickrealfzdyqx + +wmstjfqhvaplord +fgnejqhkouizpvt + +ojzucmk +upvmaozj +uhimrxjoqgzbw +utzjoemk +vztojmeu + +elqmorhugsxypbtza +ogtlyehzpfaqxurbms +eqbgrxhauymptlzso + +xldewg +lgdxznew +zexwgld +ldwxge +bghlxviwed + +pgqovbkfxciz +fqobpzxkct +czqfxpbko + +h +h +w +h +h + +gw +wg +wg +gw +gew + +byvadoriwmkhfqtcznglusxpje +xmwvnjpglyeocqhfarusbkzdti +zlrgmsbhinxvqueojtfawdcpky +pwghxcjybruidskelqmvaonftz + +zwqlxogbvtuafeh +xrhaelugfwkoztb +zytuelfhoawxgb +deglztxbouawhf +xuageoztfhlbw + +rqydeszwhu +uwzydhqcers +yqsdhruewz +reyhqdzsuwn + +bomazjw +wzabmjno +jamzowb +ojawbzm +wbhzfamjo + +pxzofjkney +aedkui + +iezhxcldqrasu +givchplftdorun + +xy +gydxv + +igduyfakwjeot +utewfoajykid + +cvudfonrqshzbgyemtkxlap +fxlapvmdcqzybugnhrketso +fkbersnvythqodmuaglzxpc +luqerdogftkmxnyzvsbahcp +fsolzkxvdtughqmabcyrpne + +zwayveu +dvpwyiztgae +yzeuawv +evarwyz + +tpkeivrucdhsawmn +imspcednuvw +epmnvlicsdwu +icmupenvdws +fmswudvpeionc + +nbekcurq +rnckqbeu +qrlkcnbuv +buerqkcn + +jylehvp +ejvlyph +ypjvhegl +ehpylvj +hlvyjfep + +cnwjxzisphtdgveqky +njqvwdyhitocxzkpesg +teywxgihcsvdkjpzqn +hdiqyntzgxwejpsvkc + +a +a +ma + +cd +cj + +nzekclihqfyrovdwgtusm +eosqnkxdpcuftzhwjmrily +ynimldrewskufczohqt +foreinluhctqkyszmdw + +gxwfcasjqbnoyrv +cnqjyfvwgas +vfqangjcwuys + +en +jn +n +gnzdf + +knarqm +lknhmars + +wpenjuhd +krucdjzb +nutjhd + +xiejmt +cijktnpxme +pmixcj +xoijm +bzjqrmighx + +ftucvebloxijamnzwy +vqxtyiucdlnfbzaj +cntxajbfslviukzy +cbtxlzjfsudvinay +dvftjyizuxnbacl + +ty +ry +y + +kanrgxtibzsjydf +pscfavzqyb +blasyzfcvum +wfhzasbey +ampozwyfbuqs + +ihmpuwjfvygbnze +vzgcwefnihymxpubs +hvmbuwznygpife +vzdiknatrgmhyebwfoulp + +hretmjgxwcidl +hjkiedvmcglx +jdmilhxewgc +clhgbjndxie + +gnabr +rnbga +bywnuar + +lhd +d +mqdbo +ahd +d + +kisuyql +qsymkglu +skvuiyplq + +xhyabuesjpd +lxagr +xzlaqt + +kepiznwbyas +gyfirmnbodztsv + +b +b +b +b + +zskcmdxeaogqbu +zmbscodakqupxge + +e +j +b +q + +blvwcsymj +vwjsymbcl +wbmlcyjsv +mwjvcybsl +symvcblwj + +yivbad +dayibv +bviayd +idvyba +ivadby + +atzulnbxedjgq +egbvijuzyxtqadl +ladebjzrtgu +blzdjetaug +ehpzmcdgtuasbkolj + +vejskrgaqnbltxiy +bviglyatsrno +iwcbrlysgvntad +gsliobcrynavtp + +ybowxj +sufavcpghd + +fjcikx +cjxki +cjxmik +xjkic +cjxki + +o +tz +p +o +p + +f +h +f +f +f + +n +n +din + +udlnyspztvcf +uzpdhtcayv +ydhzcvutp + +teylnzmf +lntmefzy +lnztyemf + +ugwcfqzrpsdxhnyv +ldfosniyuwxhcvbg +lxvdumygwfsnch +vcowxgynhusfd + +qwxuykodtpehbzmgsrc +nyxqougapktdbh +ykdpbxtfquohg +tubxpdygoqhk + +zgyomlb +moglkbzy +yogbclmz + +qrejtivfwzubyknaplhmgcodxs +witcplundkhaqxeryvbzsgfojm + +fvoindcxqhzabketlug +xgdqizetlhvkubaofcn +xciztehdlufnkvboagq + +hbolxizvkmctw +udoarnhsjwk +owdrhsk +ghfwkyoea + +cfzkvieqtoagsln +egtolisqrcf +stlqcifgoe + +erjlptikwqoczdgubanxvf +evaqfnxljitbkdwucozrpg + +ojqbicpwexfglrvyastzk +pzvisdhlortfqjxkwgacyeb + +xiezsdhj +hwvgtplfs +hioskr + +atyqbkzlw +bzakwqylt +ovwpzaybqktjl +ylakwtbqz + +flxozwatvkcmibjn +wcxhokusjzvmbtn + +jm +n + +vmtwznjklocridexufapb +nztijrefwxuvkmacdplb +wjtipvfzenlmcrxuadbk +vpyefticjsxrzdauwnkbml + +sjryquvzi +qvzsiuryj +vyjruqsiz +quykrjszvi + +iqgpeslwatumyvxrkndhcjb +gcdqpktlmuzwjrvbsinha +usbcltqjmvpagndkrwhi +hkatgblrqpidnwjumvsc + +ijrwnhlfsaxuy +cyzdt +cyvpm +qpkybtoe + +agtpnyvweqrmohfil +lmtwhfgyzneaipq +yianftmwsgqlpeh +ezfsihltawgpnbmqy + +fvdj +djv + +jybuhgeapvnk +qdmscixzlto +wpvgfar + +dtlbwgjyxphmqus +hkjxdtvqngyzar + +i +i +v + +jpbamlvyowxsgkzinc +dwijheuxmkbstqpnvoza + +pnfbzdmysukvlj +fzlksnydpjumvb +djfmbqnvyzskplu + +ylxfuzsdr +yxvfrzlkus +yxlsfwrzu +yulsfxzr +yrzuxlfds + +cq +qcp +g + +hyadprtkis +tykpiharsd +sdyahrtpki +pakifrhdyst +ritysadhkp + +tdnuxmkhcveqgwasyr +vmhctngxuawsrqykbed + +x +dhkts +pfg +fg + +oz +qnudf +owzeg + +axkvulniypoezgdmcht +kgeponhxactvylzdmi +fdkotcgiwhnljbqmepazyrvx +udhtkyexzncopglmvia +olhadkzxiepngvytcm + +cxilwnkmdatosv +saovmlncxiktwd +swdmlnaivkotcx +kdclnvtsiaoxwm +vmndksiawtxolc + +pla +ifgjtx + +zvfsaiykgrh +vgzafikhsyr +faghrvizsyk + +bvsldjymgzcqokie +zstldyexgrwokvimjqb +oqjgalksbymizcedv + +thkil +puas +vqhlt + +gvbhrqewyxj +bgejxvh +jsvibeagx +geftjxbvhw +exvgjbwh + +ywjaichxrfvq +lnugcesm +tcmoe +etkbc + +vlitomya +vmiplyoa +amvliyo +ayvlmio +ovfdmajyli + +pxeqymbdt +fetymxnzs + +ogerunlazpijskqfbmtdywv +orgudspwmfzvyljniakqeb +jkruynsdbcxifelogmpqvwza +auprhvlodbwmqikgsjyezfn + +kjmehoatdxslfgrwyni +dzrnowjumiveqaltpfkc +jwmktnafrdieol + +z +hu +pd +ap +pjx + +hzjqrw +qrzjah +bvjizfyq + +wxpgcbzie +ctegxwvh +egxcqtwf + +zmwjpnviqde +npgijdvhzmwq +zwinjpqvmhd +tmwzjdpiqnv + +thoezprianclgudvksyfbw +gizdnfqwvebathopyurkl +qeipwgrbvfndjtazhlokyu +vodgpzryhxwtlenkfuiab +tufkbyhegznadjilwvopr + +dbvigopmznrclaexjfwkyhtq +kbvgmrioznjfycapxwleqdh +zrqgpeasymbhokunvjxdilwcf + +ahmsunwpjzrtdlxqey +mjuqrshdatxnpzelyw +nrjqamdstpxlehwzuy +qyxbahsrlmvzwuedjntp +hudayszfmxptwljrqne + +zdanj +manqwjed +anzd +jqdnwa +fcaxdbn + +rabxt +brta +arbt +tarb + +ajoshwczdmxkrivp +fxpskmtchuzra +pmyhacuzrxgkts +bskzphxmcrael + +x +x + +moay +omay + +izocxhdkenqyavb +ihlpsrnkfo +twnpikho + +ftpahurnomkcvdzily +ckapvofuzdlybtnrm +neglmcpyrdzjavfutowk + +cdlnuqbvfejao +vdsocqlfebxnau +enjduqfcavblogm + +yfnhbem +d +j + +izhy +ihyz +zhyi +ijzhy +yhzi + +jxzchrsb +xhi +vegaxdn +sfjopyx + +xu +yxe +x +x +x + +nyhlqrtzipagkmowuefvbcd +ewhoialgqyfpmcnrdkzj +roqhlinpdfwycmkgzase + +ytwerh +utgwoirne +wxsm + +xnjpohdmgykbtsraiqfu +sjphqtbuoankirgxdymf +amqpdilhfsytgoxbujknr +fsxordjuayhgkpiqbmnt +ipsvgmzyaqfdrtkuhonjbx + +xwekvftlbnujarm +jweukmvanrbxltf +luebtmwjranfkv +jfuvklrbnmtwae +rlhbvemkjfanwut + +pidycjeznrvh +vcjbepznry +wgnjvyofcaiplzer +ermiyzpvjcnh +pxrjqetknzvsyc + +qnxmivda +xvdqim +qvxdmi +vxmqid +vxdmqi + +wfapsg +scwgdufr +osfwg + +zfayobrc +fyzobarc +zobcryaf +rfboycza + +musbrjnygkftpoxad +sfnjgmoutkxrbyac +nljabtukighmrqyxosf + +hwqxn +wnhxq +xbqhw + +vg +qv +v +v +qv + +lwo +vwa +wus + +iwecv +dzvau + +ynewjdhtlcm +npydwjmehlc + +l +l +l +l +l + +f +m +z + +gqbawtycdnzhfjvix +wgnidzfxtajqychvb +dfqzjwvanycxtighb +ndgfatjwixvqhyczb + +lvsftm +mtvlsf +ltvsfm +fvltsm +tlsmvf + +wdvhntmbcausfgyk +mcanyusbkvgftdw +mauygksiwvftbcdn +cftwojgesayvkmudbn +kvdbcwafyzmnugsqt + +a +bhngw +a +vu + +prxqlit +pitqzr +featyrpmsi +iropt + +wkux +txg + +dto +o +bj + +uagbxqkwit +wvthxnqgaki +hjqikngxaw +odarkwgqpi +wqagki + +atobwlprngejvmixdqcu +ofwbtepxrqgimuyhdajkl + +hqeotif +mpnvuyas + +qzdlxrp +bdxzqrpl +rhqzpldx +qxpzrlbd + +wp +pg +dyvph +wp +pn + +netpfbl +jario +w + +pcefadnkhzv +kgdhaupicxnezf + +eadohrcjnkgiypsmtlfvzuq +hzaimfoqcuxtpdveykrgj +aytcjiumfpkdvgrehozq +btquhdlgfrmejkoiyvpzac +qcvkdrywezfmtiujaoghp + +msueprdbjnzflgvytcwo +glftyscmvbojzudwrpen +jlgyfsntvwmrzdcuopbe +osivwyfumczldjbgretqphn + +tuikjg +nmibokj +hbjikl + +bzgymjnd +ndbygmzj +yjnhbdmz +jnyzbdm +gibndyztmj + +iorhgcxbfjamwyenpvdksqu +evytoqjxznkbadhrmisgfcw +wbengjckvhmasfiyqrodx +esdcnwxjohmqkrgiybfav +ohkxbjgyvdeiqnsrcmawf + +mkqgwxicp +qvailgsnxymo +xqrmidg +gqxihm +xqmigrp + +zecksafgl +jlazcgfek +ugclqeakzxrf +cgkoflzae +eawcgkfzl + +lehtfqcx +wojlmpdu + +bnsjyrcmah +mynajrshbc +nbrhscamyj +jymhabnrsc +cybjsrnamh + +uzybinv +zvblpy +xvlmybz + +aeuyibogwkxpvjt +fismchnrzdqwp + +hgsnrqoupzitwafvxek +hurvxiqezgknofaptws +wagytrequfixhpvzonsk +opknhiteqjwzxlfauvgrs + +rghduv +aijsybl + +fboy +body + +azhcqrk +kmqfcuaz +mickatzqhg +qaosvkdzpcb +cazkgwhtq + +snpgwemqclyd +gfjhe +rvgeubx +jerkbigo +oeigax + +lhsifzcg +izhcfgls +ishgzlcf + +msfqhtecuibyg +gdwkvyiq +yroxlivgqp + +wftdvlgcubj +tsafjbwuiyxlqmr + +nsvibpqze +y +murd + +cbtukihfeqjrnv +uchikvqtebr + +jgszxqvyfrakpl +aslgzyfxpjvkrq +sgyjaxzqvlfkpr +yprgqvkxjsflza + +blxpv +xvlqsp +lvbxp + +bwu +uwb + +kuctazm +atcuzk +tuqkczad +cupkzta +iupzckat + +virjwanfcxdsqkyzthmub +shtdubncmkayzfqwjxri + +sdrvpcqybwomzah +mvhskw +swhemlv +wmvsh +hsmwlv + +wrivxopdhgfauslbe +vnfeoxdwrmiqlyapcbsgu +dolivuprewxazsbgf +zudaxgosplbvfiwer +oxiglrthpasvfwudeb + +gcjihxvtazydernl +exdhjtgacvryu +xqjhgystbrdaepcv +dcfryegvmjaxthz + +n +n +yxna +un + +uvsezitjwl +midztxjcesgrw +yulwizjset + +cpjn +cjn +ugnj +njic +jwn + +kmzjoe +qhsvdg +ta + +dtzar +rtdz +btzrd +duzrt +nkmszydrtxv + +rpjv +oqvkyjp +vemjp +pjvm +jtvp + +jqbywgpexdrc +eihgzxtrknsl + +zukegspqxhridyf +usfwpaihyjkxzerdq +zyfriudebqxpshk + +nzsiehmplbjgfqw +egwziblfhsqmjpn +zslbnghpjfqiewm +wgniseplhzfqbjm +gaznqpwsembihlfj + +d +knijh +d +xed +lev + +cfzpjatlw +taclzpjwf +cltjfzpaw +fptzjclaw +tfcpwlzsaj + +ni +ind + +jnpydc +dynjpc +jpcynd +ncdjyp + +wuilxjabeftcro +shpkudnygvmrq + +yqzhalsjf +azutsmkq +qaszr +qmrzsxa + +wjv +wxjv +wjv +wjv + +esgpbow +epogwbs +oewpsbg +wpgqmscobe +ewsobpg + +b +b +bw + +rgz +jvrgpa +tzrgk +rtegf +rxgk + +bcotpdrwmu +dwkmpbtcur + +rdzyjbvsmuoacwkg +fhciwsnzamkugpdybrvox + +mwpgv +zvw + +wbyktilsjuemvqpdornczhx +kyfzbqitgahrvsuocjpledmn +qhytnurliebszcdvmpojk + +ohxsjvdzqabegp +oqvgxrjbtelpuw +gqevkbpjnxoi + +fcjsuviaq +asvcfjuiq +aqcfsujiv +sicfaqjvu +vaiqusfcj + +icjtklarqhsmdy +qcamftiujys +zibcntjyasgoxeqm +wvyitlamrqsujpc + +hnmxwtudcsbp +ryzdijaguqvfko + +twqousdgyknvrmx +fpijbzeh + +ixg +mxiv +xi + +w +wu +w +gw + +e +e + +nktazsgmqvp +kxtcvsaznmpg + +xm +k +m +mx + +ntfkyoarlejixbd +colnibtxeryjadfk +yagxfwbisvhurjmpkqt + +jfqhmekxduwari +xhwfrdmqjuiake +lajdxeuikmhrqfw +ihdkmeafjqwurx + +otjeuvbqshdncxa +pmlcvukgsexriyabhq +bnvxquaeodtwcshf + +fgeu +oec + +mjflpw +jlwfpim +fwmlqpj +jpfmwlk + +vpjcbfaihnusglr +rbvpcsfyihnjazguxl + +kq +k +k + +pign +pkgh +ajp +pq +pzomcb + +qbo +hstryu +fljioe + +nypszgxrdhbe +rxeyhpnsdzgb +epghbynszrxd + +azlbegicyv +iavnezslg + +ymtkef +oasrun +wvzl +uerpw +qcidxbhgj + +hxqgt +gthqx + +pocvsz +otkwzpvs +zvosp +vopcnzsl +vzmpnfos + +rz +zgr +hrvze +rsz + +uebwmzk +purbtkdm +eyumskvjib + +d +d +d +nd + +kdarcnph +kouwr +tuexkor + +hnslcrtwyudpbxgv +htsrvqelyagudwbpo +mtubsahrkvpeyqwdlgf + +r +r +r +r +r + +xptijvhfa +xpricabvtfhj +vjpaxfhti +ahtxfvjpi +vhftijpxa + +bxshqfzgyr +bzgfxsrqyh +szrqhgfxby +txbczyhfqsrg +ybfhsqzxrg + +taevdznpkf +ezadwvfnkplt +kdpnzafvte +tvfdknpeaz + +ea +a +a +a +a + +dzwyofjxnugvbipar +uwrfvygonibzadxjp + +afcm +cmaf +facm + +lcisgd +jbkcid + +y +y +djgyen +yl + +tfbvzwocks +bzfstkvjcoy +kzuvsobxficthn +kftzogvcbs +vszjkobtfygc + +heszp +uhzepx +zehp +shepz + +b +ymel +z +zhq +s + +wvhlzgcet +bkuwzeopm +nbjwfaeqmkz + +mqaufjvwl +qlfuvirnjw +yvuwfglxejzt + +gkylzr +lwdiykg + +zuloiwargvxk +evxcy + +gjrvnwbxu +bvpugixnwj +uwrmjvngbx +gcnvwbxuj +jwnuxbvg + +q +q +q +q +ewq + +zwynrv +uvxym \ No newline at end of file diff --git a/2020/Day6/main.py b/2020/Day6/main.py new file mode 100644 index 0000000..8344ce9 --- /dev/null +++ b/2020/Day6/main.py @@ -0,0 +1,25 @@ +if __name__ == '__main__': + with open("input.txt") as f: + raw = f.read().split("\n\n") + + groups = [] + for i in raw: + groups.append(i.split("\n")) + + counter = 0 + people = 0 + answer = 0 + + for group in groups: + curransw = [] + people = 0 + for answergroup in group: + people += 1 + for answer in answergroup: + curransw.append(answer) + + if curransw.count(answer) == people: + counter += 1 + + + print(counter) diff --git a/2020/Day7/input.txt b/2020/Day7/input.txt new file mode 100644 index 0000000..c20e33d --- /dev/null +++ b/2020/Day7/input.txt @@ -0,0 +1,594 @@ +vibrant salmon bags contain 1 vibrant gold bag, 2 wavy aqua bags, 1 dotted crimson bag. +dotted plum bags contain 3 wavy cyan bags. +muted salmon bags contain 2 pale purple bags, 3 dull orange bags, 2 dotted lime bags, 3 clear crimson bags. +wavy green bags contain 1 plaid crimson bag. +light salmon bags contain 3 posh lime bags, 1 plaid plum bag, 3 faded yellow bags, 4 clear fuchsia bags. +dim violet bags contain 4 drab tan bags, 4 drab violet bags, 2 faded coral bags, 4 dark white bags. +dim black bags contain 4 posh lime bags. +drab indigo bags contain 4 light aqua bags, 2 light white bags, 4 clear plum bags. +clear purple bags contain 4 drab olive bags, 2 vibrant chartreuse bags. +wavy indigo bags contain 3 clear maroon bags, 4 striped blue bags, 2 wavy gray bags, 2 dim magenta bags. +drab olive bags contain 2 shiny salmon bags, 4 mirrored white bags, 4 mirrored fuchsia bags. +plaid crimson bags contain 2 dull chartreuse bags, 4 striped maroon bags, 4 dull crimson bags, 4 plaid red bags. +pale lavender bags contain 4 dotted tan bags, 5 striped olive bags. +vibrant maroon bags contain 2 faded plum bags, 4 wavy aqua bags, 5 drab lavender bags, 4 light lavender bags. +wavy coral bags contain 5 drab purple bags. +drab salmon bags contain 4 shiny tan bags, 2 shiny white bags. +light green bags contain 5 dim turquoise bags, 4 striped crimson bags, 5 dim salmon bags, 3 clear gray bags. +dark indigo bags contain 5 shiny crimson bags. +dark blue bags contain 3 drab indigo bags, 2 shiny beige bags, 2 shiny coral bags. +shiny cyan bags contain 2 striped aqua bags, 2 drab turquoise bags, 5 light purple bags. +pale cyan bags contain 2 muted violet bags, 2 clear beige bags, 1 clear indigo bag, 5 striped turquoise bags. +muted lime bags contain 5 drab silver bags. +shiny brown bags contain 4 clear purple bags, 5 striped chartreuse bags, 5 pale lavender bags. +muted purple bags contain 4 dark purple bags, 2 dull crimson bags. +plaid turquoise bags contain 2 clear gray bags, 4 clear magenta bags, 4 dull bronze bags. +clear cyan bags contain 3 dotted plum bags, 3 shiny coral bags. +shiny violet bags contain 3 drab chartreuse bags, 1 pale aqua bag, 3 bright aqua bags. +wavy tan bags contain 5 dark magenta bags, 4 dull beige bags, 1 wavy cyan bag. +mirrored lime bags contain 2 clear plum bags, 3 dark bronze bags, 5 faded turquoise bags, 5 plaid crimson bags. +wavy purple bags contain 3 dark bronze bags, 2 bright bronze bags. +plaid plum bags contain 5 muted tan bags, 1 drab teal bag, 2 dark purple bags, 1 dotted blue bag. +dotted cyan bags contain 4 vibrant fuchsia bags, 3 muted plum bags. +striped white bags contain 3 faded salmon bags, 4 plaid cyan bags, 5 wavy gray bags. +posh black bags contain 2 dotted blue bags, 3 muted crimson bags. +dotted bronze bags contain 2 posh tan bags. +muted gray bags contain 2 posh green bags. +plaid violet bags contain 4 muted orange bags. +muted green bags contain 3 drab silver bags, 2 mirrored maroon bags, 3 dark teal bags. +dotted tan bags contain 3 pale black bags. +dim beige bags contain 4 light plum bags, 4 posh blue bags, 4 dotted purple bags. +posh magenta bags contain 2 clear purple bags, 4 posh aqua bags. +bright coral bags contain 5 light bronze bags, 2 vibrant crimson bags, 4 dark gold bags. +pale bronze bags contain 1 striped orange bag. +dim lime bags contain 3 dim green bags. +plaid green bags contain 2 faded brown bags, 3 faded bronze bags, 3 pale green bags, 5 plaid magenta bags. +vibrant cyan bags contain 5 pale black bags, 5 vibrant violet bags, 1 mirrored red bag. +dotted fuchsia bags contain 3 dull crimson bags, 2 wavy silver bags, 4 muted purple bags. +dim red bags contain 2 clear indigo bags, 5 dotted yellow bags. +faded black bags contain 4 bright fuchsia bags. +faded chartreuse bags contain 4 striped orange bags. +plaid blue bags contain 5 dim gray bags, 2 pale salmon bags, 2 muted orange bags. +plaid teal bags contain 5 bright lavender bags. +drab magenta bags contain 2 dim crimson bags, 1 bright fuchsia bag. +clear violet bags contain 3 mirrored white bags, 5 faded lime bags, 2 light olive bags, 1 dotted turquoise bag. +posh tan bags contain 3 posh orange bags, 1 vibrant purple bag, 4 posh gray bags, 2 mirrored fuchsia bags. +posh red bags contain 5 mirrored red bags. +striped lavender bags contain 5 dotted crimson bags, 1 dotted purple bag. +dull salmon bags contain 1 wavy black bag, 2 dull lime bags, 3 bright plum bags, 2 dark gray bags. +light tan bags contain 3 wavy violet bags, 1 shiny olive bag, 5 bright brown bags. +pale orange bags contain 5 vibrant orange bags, 3 wavy black bags. +mirrored green bags contain 1 dark tan bag. +plaid gray bags contain 4 muted magenta bags. +dim maroon bags contain 3 light magenta bags, 4 dull red bags. +dull cyan bags contain 1 wavy blue bag, 1 dark chartreuse bag. +mirrored blue bags contain 4 dark cyan bags, 4 muted magenta bags, 2 striped olive bags, 1 posh gold bag. +plaid purple bags contain 1 shiny orange bag, 5 plaid coral bags, 4 dim red bags, 5 faded aqua bags. +vibrant magenta bags contain 5 posh aqua bags, 5 shiny chartreuse bags, 4 dark teal bags. +bright indigo bags contain 1 dark bronze bag. +bright yellow bags contain 4 muted lime bags, 1 drab maroon bag. +clear gold bags contain 2 striped blue bags, 3 clear green bags, 4 drab indigo bags. +wavy red bags contain 5 faded fuchsia bags, 5 mirrored indigo bags. +dark coral bags contain 3 drab aqua bags, 5 bright fuchsia bags. +striped teal bags contain 1 clear red bag, 3 drab magenta bags, 4 dim green bags, 2 dark fuchsia bags. +pale salmon bags contain 1 muted gray bag, 4 dotted lavender bags, 3 dark maroon bags, 4 plaid plum bags. +dull plum bags contain 3 dim black bags, 5 shiny aqua bags, 3 pale teal bags, 4 clear purple bags. +plaid indigo bags contain 4 drab maroon bags, 2 shiny chartreuse bags, 4 shiny yellow bags, 1 pale violet bag. +shiny orange bags contain 5 bright silver bags, 2 light olive bags, 5 light beige bags. +dotted salmon bags contain 4 posh chartreuse bags, 4 light crimson bags, 5 muted yellow bags. +vibrant aqua bags contain 2 dull brown bags. +shiny bronze bags contain 1 mirrored teal bag, 2 drab tomato bags. +dark black bags contain 5 muted red bags, 5 mirrored crimson bags. +muted bronze bags contain 3 clear tomato bags, 1 vibrant purple bag. +faded beige bags contain 1 shiny blue bag, 5 plaid lime bags. +pale green bags contain 2 pale crimson bags, 4 muted cyan bags. +vibrant bronze bags contain 1 bright lavender bag. +posh salmon bags contain 1 clear green bag, 2 plaid yellow bags, 3 bright orange bags. +dull yellow bags contain 1 clear plum bag, 2 dim bronze bags. +mirrored indigo bags contain 5 dark tomato bags, 5 pale coral bags, 5 light magenta bags, 5 striped turquoise bags. +muted chartreuse bags contain 3 dark tan bags, 4 dotted teal bags. +drab bronze bags contain 3 pale lavender bags, 1 bright salmon bag, 4 plaid red bags. +dim cyan bags contain 1 bright plum bag. +drab purple bags contain 1 dim fuchsia bag, 4 mirrored turquoise bags, 5 striped blue bags. +pale violet bags contain 5 posh brown bags, 5 striped plum bags, 1 dotted indigo bag. +wavy maroon bags contain 3 shiny blue bags, 3 wavy cyan bags, 1 faded purple bag, 4 posh lime bags. +vibrant coral bags contain 3 shiny turquoise bags, 4 mirrored maroon bags. +vibrant lavender bags contain 2 drab turquoise bags, 2 clear red bags. +striped fuchsia bags contain 4 dotted tan bags, 4 posh silver bags, 4 clear maroon bags, 5 wavy fuchsia bags. +muted lavender bags contain 2 pale aqua bags, 2 bright green bags, 5 posh beige bags. +posh tomato bags contain 2 vibrant bronze bags, 3 light brown bags, 5 posh indigo bags. +dull lavender bags contain 2 wavy olive bags. +mirrored violet bags contain 5 wavy violet bags, 2 posh cyan bags, 2 dull olive bags, 3 drab yellow bags. +mirrored chartreuse bags contain 2 shiny salmon bags, 5 dark purple bags, 2 posh lime bags. +dim brown bags contain 4 clear red bags, 1 drab blue bag, 1 pale silver bag, 5 dark gray bags. +striped magenta bags contain 1 light orange bag, 4 muted beige bags. +light red bags contain 3 shiny yellow bags, 3 faded tan bags, 3 vibrant lime bags, 3 muted coral bags. +muted olive bags contain 4 drab coral bags, 5 light salmon bags, 1 vibrant violet bag. +clear silver bags contain 1 posh aqua bag, 1 drab teal bag, 4 dark orange bags. +faded orange bags contain 4 vibrant purple bags, 4 wavy cyan bags, 1 drab brown bag. +mirrored crimson bags contain 5 light aqua bags, 1 wavy olive bag, 2 vibrant lime bags. +shiny plum bags contain 2 shiny maroon bags, 3 dark red bags. +faded green bags contain 3 striped turquoise bags. +bright orange bags contain 1 dull crimson bag, 1 pale lavender bag, 5 shiny aqua bags. +dim gray bags contain 2 drab indigo bags, 5 dim turquoise bags. +mirrored plum bags contain 1 vibrant red bag, 4 dotted purple bags. +posh gold bags contain 4 bright red bags. +posh silver bags contain 3 drab coral bags, 1 faded tan bag, 1 bright silver bag, 1 shiny blue bag. +dull lime bags contain 5 muted tan bags, 4 mirrored cyan bags. +faded turquoise bags contain 2 pale teal bags, 2 bright green bags. +bright salmon bags contain 1 dim white bag, 2 clear tomato bags, 1 bright aqua bag. +dim gold bags contain 3 mirrored turquoise bags, 5 wavy tomato bags. +dull fuchsia bags contain 2 pale beige bags, 1 dotted yellow bag. +dark beige bags contain 2 pale magenta bags. +dotted maroon bags contain 2 dark tomato bags, 2 light gray bags, 3 faded teal bags, 1 clear gray bag. +muted white bags contain 3 dull turquoise bags, 5 dark bronze bags, 1 light olive bag, 3 clear bronze bags. +faded blue bags contain 1 dark chartreuse bag, 3 pale aqua bags, 5 faded crimson bags. +clear aqua bags contain 3 vibrant olive bags, 5 clear crimson bags. +faded cyan bags contain 1 vibrant blue bag, 1 light magenta bag. +shiny aqua bags contain 1 clear green bag. +bright gray bags contain 2 dim fuchsia bags, 1 striped chartreuse bag, 2 clear aqua bags, 2 dull olive bags. +bright white bags contain 2 light purple bags, 5 bright aqua bags. +bright lime bags contain 1 pale orange bag, 5 plaid magenta bags, 4 mirrored maroon bags. +dark lavender bags contain 5 mirrored bronze bags, 4 dotted aqua bags. +striped chartreuse bags contain 3 striped indigo bags, 2 faded plum bags, 4 clear gray bags. +muted magenta bags contain 3 clear red bags, 3 dull crimson bags, 1 clear aqua bag, 4 faded tomato bags. +clear magenta bags contain 2 striped cyan bags, 5 vibrant lime bags, 4 striped salmon bags. +pale yellow bags contain 3 faded fuchsia bags, 2 dotted lime bags, 5 pale gold bags, 1 plaid tomato bag. +dull teal bags contain 4 dim green bags, 1 drab maroon bag, 2 dim crimson bags. +pale brown bags contain 5 drab orange bags, 2 dotted purple bags, 3 plaid olive bags, 3 pale black bags. +posh blue bags contain 4 faded purple bags, 4 drab turquoise bags. +pale olive bags contain 5 muted silver bags, 3 mirrored plum bags, 4 vibrant lime bags, 5 striped olive bags. +plaid black bags contain 3 posh yellow bags. +striped tomato bags contain 4 faded blue bags, 2 shiny magenta bags. +wavy tomato bags contain 1 pale gold bag, 2 dim magenta bags. +faded plum bags contain 3 light violet bags, 3 posh beige bags, 3 striped aqua bags, 4 dim magenta bags. +vibrant turquoise bags contain 3 muted silver bags, 5 dotted black bags. +dull white bags contain 5 dim gray bags, 1 faded crimson bag. +faded purple bags contain 1 vibrant orange bag, 4 pale crimson bags, 5 shiny blue bags, 1 light gold bag. +clear white bags contain 1 striped orange bag, 3 pale coral bags, 5 plaid chartreuse bags. +striped maroon bags contain 2 wavy olive bags. +light tomato bags contain 2 pale crimson bags, 3 bright fuchsia bags, 2 pale salmon bags, 3 pale olive bags. +drab tomato bags contain 1 pale olive bag. +dark aqua bags contain 1 shiny magenta bag, 4 faded lime bags, 4 faded gold bags. +plaid bronze bags contain 2 pale purple bags. +dark plum bags contain 3 wavy brown bags, 1 bright salmon bag. +dark purple bags contain 4 dotted red bags. +light teal bags contain 1 vibrant indigo bag, 5 wavy olive bags, 4 clear maroon bags, 1 light silver bag. +drab fuchsia bags contain 3 faded turquoise bags, 5 dim yellow bags. +light turquoise bags contain 1 dotted blue bag, 4 mirrored tomato bags. +clear maroon bags contain 4 mirrored green bags. +posh maroon bags contain 3 dim black bags, 3 bright gold bags, 3 mirrored white bags, 1 clear lavender bag. +dotted blue bags contain 2 wavy maroon bags. +bright tan bags contain 4 faded turquoise bags, 5 drab coral bags, 5 dull red bags, 2 dim gray bags. +dark salmon bags contain 4 clear fuchsia bags, 5 mirrored red bags. +mirrored fuchsia bags contain 4 bright tomato bags, 3 vibrant orange bags. +vibrant green bags contain 1 clear lavender bag. +dim white bags contain 5 dull red bags. +light white bags contain 3 dark purple bags, 1 mirrored fuchsia bag, 1 plaid gold bag, 1 posh lime bag. +dark turquoise bags contain 3 striped green bags, 1 dull gold bag, 2 pale gray bags. +light purple bags contain 5 muted brown bags, 5 muted purple bags, 4 dull yellow bags, 5 vibrant gold bags. +posh lavender bags contain 5 posh yellow bags, 4 plaid plum bags, 1 dark fuchsia bag, 1 bright maroon bag. +posh crimson bags contain 1 vibrant gold bag, 5 clear green bags, 2 posh chartreuse bags. +wavy lime bags contain 5 mirrored beige bags. +wavy black bags contain 1 plaid orange bag, 4 shiny green bags, 3 shiny blue bags, 4 muted red bags. +muted red bags contain 4 vibrant lime bags, 2 drab black bags, 4 vibrant red bags, 5 faded beige bags. +vibrant gold bags contain 2 bright silver bags, 4 faded teal bags, 2 vibrant orange bags, 3 striped salmon bags. +shiny crimson bags contain 2 bright yellow bags. +muted turquoise bags contain 5 bright plum bags. +posh orange bags contain 4 vibrant yellow bags, 5 clear crimson bags. +wavy aqua bags contain 5 shiny green bags, 5 bright fuchsia bags, 4 muted fuchsia bags. +clear green bags contain 4 dotted plum bags, 2 vibrant olive bags, 5 pale beige bags. +pale aqua bags contain 3 dark tomato bags, 5 posh lime bags. +drab maroon bags contain 5 bright magenta bags, 2 bright plum bags, 5 clear green bags, 3 faded tomato bags. +vibrant plum bags contain 3 light crimson bags, 5 dotted silver bags, 5 mirrored red bags, 1 dotted turquoise bag. +posh yellow bags contain 5 plaid lavender bags, 5 dim tomato bags. +faded brown bags contain 1 striped orange bag, 5 wavy green bags. +drab cyan bags contain 4 faded teal bags, 3 vibrant aqua bags, 2 light chartreuse bags, 3 dark orange bags. +dark lime bags contain 4 vibrant blue bags. +faded coral bags contain 4 wavy green bags, 4 mirrored gold bags, 3 striped fuchsia bags, 1 pale fuchsia bag. +dark orange bags contain 1 dotted red bag, 2 vibrant red bags. +wavy magenta bags contain 3 dull chartreuse bags, 2 dim maroon bags, 2 clear maroon bags. +plaid coral bags contain 4 drab tan bags, 1 pale tan bag. +mirrored salmon bags contain 1 muted bronze bag, 5 muted purple bags. +dim tomato bags contain 2 drab silver bags, 4 mirrored purple bags, 1 dull olive bag, 5 dotted purple bags. +wavy gold bags contain 3 dark crimson bags, 1 dim white bag. +light fuchsia bags contain 3 mirrored green bags, 2 wavy fuchsia bags. +pale tomato bags contain 4 clear purple bags, 5 faded brown bags, 4 light coral bags. +faded yellow bags contain 5 wavy olive bags, 2 pale lavender bags, 4 bright plum bags. +light violet bags contain 1 dotted red bag, 4 dim aqua bags. +posh lime bags contain 2 pale crimson bags, 1 pale gold bag, 1 shiny blue bag, 4 muted gray bags. +mirrored silver bags contain 4 striped bronze bags, 3 faded salmon bags, 3 drab green bags, 4 striped green bags. +dark green bags contain 5 striped maroon bags, 3 dim olive bags, 4 vibrant chartreuse bags, 5 dim white bags. +mirrored olive bags contain 2 dotted red bags, 5 dim white bags. +dark teal bags contain 3 wavy olive bags, 3 pale crimson bags. +pale tan bags contain 2 dark orange bags, 5 bright plum bags, 4 pale crimson bags. +wavy plum bags contain 3 dull lime bags. +light indigo bags contain 5 dark magenta bags. +drab lime bags contain 1 bright fuchsia bag, 4 wavy brown bags. +drab tan bags contain 3 bright tomato bags, 1 muted green bag. +vibrant indigo bags contain 5 dull chartreuse bags, 5 clear aqua bags. +dark bronze bags contain 3 dull red bags, 3 mirrored maroon bags, 1 muted green bag. +shiny red bags contain 2 dark bronze bags, 4 faded magenta bags, 5 dull teal bags. +shiny black bags contain 3 vibrant olive bags, 2 plaid lime bags, 5 shiny gold bags, 2 dotted plum bags. +light gold bags contain 5 vibrant olive bags. +light plum bags contain 5 clear gray bags, 5 dotted chartreuse bags, 4 plaid red bags, 1 plaid lime bag. +bright violet bags contain 4 bright maroon bags, 5 posh red bags, 2 faded olive bags, 4 dim gray bags. +faded red bags contain 4 drab maroon bags, 4 vibrant violet bags, 1 faded purple bag, 2 dotted black bags. +muted orange bags contain 4 plaid chartreuse bags, 5 muted lavender bags, 2 faded purple bags. +clear coral bags contain 2 drab teal bags, 5 bright turquoise bags. +wavy orange bags contain 4 muted cyan bags, 3 light indigo bags, 5 bright black bags, 5 light salmon bags. +faded fuchsia bags contain 3 pale gold bags, 3 faded salmon bags, 4 pale red bags. +light brown bags contain 4 pale silver bags, 4 clear tan bags. +shiny gray bags contain 3 muted teal bags, 1 bright purple bag, 2 bright olive bags, 4 mirrored green bags. +bright brown bags contain 2 dark teal bags, 5 light plum bags, 2 plaid olive bags, 5 dark chartreuse bags. +mirrored white bags contain 1 wavy gray bag, 3 bright tomato bags, 1 muted silver bag, 4 striped olive bags. +pale magenta bags contain 1 clear gray bag, 1 muted gray bag, 1 wavy cyan bag, 4 dull brown bags. +bright magenta bags contain 2 muted tan bags, 1 pale gold bag, 2 wavy cyan bags, 4 vibrant orange bags. +clear teal bags contain 1 dark teal bag, 2 vibrant lime bags. +light orange bags contain 3 light gold bags, 4 clear plum bags, 4 dotted indigo bags. +plaid cyan bags contain 1 pale magenta bag. +wavy chartreuse bags contain 2 posh green bags, 5 dotted purple bags, 2 dark tomato bags, 3 muted gray bags. +light coral bags contain 5 clear gray bags, 2 posh purple bags, 2 mirrored violet bags. +dull violet bags contain 3 dotted blue bags, 5 mirrored tomato bags, 1 dull chartreuse bag, 2 posh beige bags. +bright tomato bags contain 3 vibrant red bags, 3 muted gray bags. +mirrored magenta bags contain 4 wavy brown bags. +muted indigo bags contain 4 wavy chartreuse bags, 3 vibrant indigo bags, 2 posh magenta bags, 1 plaid crimson bag. +bright maroon bags contain 2 dull violet bags, 2 faded tan bags, 3 striped gray bags, 5 pale magenta bags. +dark tomato bags contain no other bags. +pale fuchsia bags contain 3 drab silver bags, 4 faded purple bags, 2 mirrored cyan bags, 5 dark bronze bags. +dull black bags contain 1 dull indigo bag, 1 wavy brown bag, 5 striped gray bags. +pale white bags contain 3 light gray bags, 2 plaid lavender bags, 1 wavy maroon bag. +shiny turquoise bags contain 4 pale red bags. +drab brown bags contain 5 mirrored plum bags, 4 dotted red bags. +bright green bags contain 1 dull lime bag, 2 clear lavender bags. +wavy blue bags contain 4 dotted purple bags. +muted aqua bags contain 5 faded plum bags, 3 plaid plum bags, 4 dotted tan bags, 1 clear gray bag. +clear yellow bags contain 4 dotted indigo bags, 3 vibrant aqua bags, 4 vibrant orange bags. +mirrored gray bags contain 4 shiny crimson bags, 2 mirrored coral bags, 1 dotted tan bag, 4 posh cyan bags. +dark maroon bags contain 1 dark salmon bag, 3 muted coral bags. +posh plum bags contain 1 mirrored bronze bag, 4 plaid purple bags, 3 vibrant white bags. +bright teal bags contain 2 pale aqua bags, 1 mirrored black bag. +wavy teal bags contain 5 plaid tan bags, 3 dull black bags, 1 bright teal bag, 3 clear teal bags. +dotted magenta bags contain 1 plaid plum bag, 5 plaid salmon bags, 3 light gold bags. +faded tomato bags contain 1 dark bronze bag, 2 faded purple bags, 4 vibrant red bags, 4 pale lavender bags. +dull blue bags contain 3 dotted bronze bags, 2 shiny olive bags, 3 muted gold bags. +posh aqua bags contain 5 vibrant orange bags, 1 vibrant olive bag. +mirrored black bags contain 3 dark teal bags, 4 plaid chartreuse bags, 2 light salmon bags, 2 vibrant white bags. +wavy violet bags contain 5 vibrant indigo bags. +vibrant blue bags contain 4 shiny olive bags, 4 light olive bags, 2 muted green bags. +dotted green bags contain 3 shiny violet bags, 3 posh black bags, 3 dark lime bags. +wavy cyan bags contain 2 muted gray bags, 3 vibrant olive bags, 4 striped olive bags, 4 drab silver bags. +faded maroon bags contain 5 bright yellow bags, 2 bright tomato bags, 5 mirrored magenta bags. +dull olive bags contain 1 bright plum bag, 2 pale crimson bags. +clear lime bags contain 5 striped blue bags, 5 wavy blue bags, 3 drab tan bags, 1 shiny olive bag. +striped yellow bags contain 1 mirrored red bag. +plaid magenta bags contain 2 clear yellow bags, 1 pale coral bag, 3 muted bronze bags. +light lime bags contain 1 dim turquoise bag. +striped brown bags contain 3 mirrored brown bags, 4 clear cyan bags, 5 bright white bags, 1 muted maroon bag. +dotted indigo bags contain 3 light olive bags, 1 dull chartreuse bag. +shiny tan bags contain 2 dull lime bags, 5 shiny black bags, 5 dull teal bags. +clear olive bags contain 5 drab coral bags, 4 striped aqua bags, 4 dotted lavender bags. +plaid chartreuse bags contain 1 plaid red bag, 4 faded tomato bags. +dotted olive bags contain 2 dull yellow bags. +faded lime bags contain 5 dotted aqua bags, 4 shiny silver bags, 4 muted white bags. +vibrant silver bags contain 4 dotted teal bags, 3 posh olive bags. +striped beige bags contain 2 vibrant white bags, 3 dark gold bags, 4 posh violet bags, 4 bright chartreuse bags. +dim plum bags contain 2 striped indigo bags, 2 vibrant gold bags. +clear crimson bags contain 5 vibrant red bags. +plaid maroon bags contain 4 clear crimson bags. +drab coral bags contain 2 plaid plum bags. +dull bronze bags contain 4 pale black bags, 1 dull tan bag, 5 dull cyan bags, 4 pale lavender bags. +wavy bronze bags contain 4 posh coral bags, 2 bright silver bags. +dull aqua bags contain 3 dotted orange bags, 3 pale teal bags. +muted plum bags contain 1 light blue bag, 2 muted maroon bags, 4 dull olive bags. +vibrant tan bags contain 4 drab teal bags. +dull tomato bags contain 5 dull white bags. +muted yellow bags contain 3 dark yellow bags, 5 faded beige bags. +shiny white bags contain 4 bright silver bags. +muted crimson bags contain 1 clear maroon bag. +muted violet bags contain 3 dotted yellow bags, 1 light indigo bag, 4 mirrored black bags, 5 drab lime bags. +posh white bags contain 3 faded brown bags, 2 dull yellow bags. +wavy crimson bags contain 3 shiny black bags, 2 dotted blue bags, 4 dark maroon bags. +clear salmon bags contain 1 mirrored magenta bag, 4 bright chartreuse bags, 5 vibrant black bags, 2 vibrant chartreuse bags. +pale teal bags contain 5 mirrored white bags, 2 plaid orange bags, 4 muted lime bags. +light aqua bags contain 2 shiny salmon bags, 3 dark tomato bags, 1 mirrored purple bag. +clear beige bags contain 1 muted crimson bag. +vibrant olive bags contain 5 dark tomato bags, 1 pale gold bag, 4 muted tan bags. +plaid brown bags contain 3 mirrored lavender bags, 1 muted crimson bag, 3 muted green bags, 1 bright lavender bag. +dim magenta bags contain 4 pale fuchsia bags, 3 drab black bags, 4 plaid orange bags. +bright purple bags contain 3 muted gray bags, 3 pale coral bags. +posh indigo bags contain 2 bright beige bags, 2 dim tomato bags. +drab lavender bags contain 2 dotted chartreuse bags, 1 posh green bag, 3 light silver bags, 1 dotted black bag. +pale crimson bags contain no other bags. +posh gray bags contain 1 muted green bag. +shiny lime bags contain 3 mirrored maroon bags, 1 posh crimson bag, 4 mirrored orange bags, 2 posh olive bags. +muted beige bags contain 1 posh tan bag, 3 posh olive bags, 1 faded white bag, 2 posh green bags. +light black bags contain 3 striped green bags, 2 pale salmon bags, 3 muted crimson bags. +dark gold bags contain 5 striped maroon bags, 2 pale fuchsia bags, 3 light gold bags. +light bronze bags contain 2 clear purple bags, 4 dim crimson bags. +muted blue bags contain 1 faded gray bag, 4 muted salmon bags, 5 dull bronze bags. +vibrant orange bags contain no other bags. +dim lavender bags contain 1 vibrant indigo bag. +posh fuchsia bags contain 3 clear fuchsia bags, 2 shiny green bags, 3 plaid plum bags. +dim tan bags contain 5 pale plum bags, 3 posh gray bags, 1 clear yellow bag. +pale lime bags contain no other bags. +striped blue bags contain 5 pale black bags. +shiny tomato bags contain 1 dim fuchsia bag, 5 faded blue bags, 3 muted brown bags, 3 mirrored salmon bags. +dotted orange bags contain 4 bright tomato bags, 1 light silver bag. +muted tan bags contain no other bags. +pale black bags contain 2 dull brown bags, 4 mirrored chartreuse bags, 2 dim aqua bags. +shiny purple bags contain 3 dotted indigo bags, 5 vibrant gold bags, 2 light chartreuse bags, 4 clear magenta bags. +dull brown bags contain 2 bright beige bags, 4 vibrant orange bags, 2 bright tomato bags, 4 clear lavender bags. +plaid aqua bags contain 3 plaid indigo bags. +dark olive bags contain 1 pale plum bag, 4 dim maroon bags. +dark silver bags contain 3 shiny blue bags, 2 muted gray bags, 4 drab coral bags. +clear turquoise bags contain 5 light violet bags, 3 drab yellow bags. +wavy brown bags contain 3 shiny coral bags, 3 shiny salmon bags, 1 drab magenta bag. +dim indigo bags contain 5 bright green bags. +mirrored gold bags contain 1 plaid magenta bag, 2 plaid gold bags, 4 light turquoise bags. +drab red bags contain 3 mirrored bronze bags. +faded bronze bags contain 1 vibrant aqua bag, 2 clear tomato bags, 2 dull tan bags. +bright lavender bags contain 4 drab coral bags, 1 bright green bag. +wavy lavender bags contain 2 wavy green bags, 4 drab silver bags, 5 light turquoise bags. +wavy salmon bags contain 2 dotted gray bags, 4 bright chartreuse bags, 4 striped gray bags. +dotted yellow bags contain 4 dark salmon bags, 1 posh tan bag, 4 drab tomato bags, 4 vibrant chartreuse bags. +dull turquoise bags contain 5 drab silver bags, 1 dark orange bag. +pale gray bags contain 4 dull aqua bags, 4 faded gold bags, 2 mirrored orange bags, 2 dim magenta bags. +dark red bags contain 2 bright gray bags, 4 bright black bags. +dim fuchsia bags contain 3 bright magenta bags, 5 pale crimson bags. +vibrant lime bags contain 2 wavy maroon bags, 2 pale magenta bags, 4 pale crimson bags, 3 drab orange bags. +bright bronze bags contain 4 vibrant black bags, 3 drab fuchsia bags, 3 striped cyan bags, 3 dotted blue bags. +muted coral bags contain 3 wavy white bags, 1 plaid tan bag. +wavy white bags contain 2 drab maroon bags. +pale coral bags contain 3 dotted bronze bags, 1 dull gold bag. +drab white bags contain 3 drab silver bags, 3 bright tomato bags, 1 bright silver bag. +light olive bags contain 3 muted tan bags, 2 mirrored tomato bags. +mirrored tomato bags contain 2 dark tomato bags, 3 shiny gold bags. +light crimson bags contain 4 clear magenta bags, 2 plaid coral bags, 5 dull chartreuse bags, 5 dark teal bags. +bright cyan bags contain 1 clear chartreuse bag, 1 striped brown bag, 5 light tomato bags, 4 dark coral bags. +vibrant fuchsia bags contain 3 dull white bags, 1 dim purple bag, 5 shiny yellow bags. +drab gold bags contain 5 wavy chartreuse bags. +plaid yellow bags contain 4 faded plum bags, 1 faded indigo bag, 2 drab purple bags, 1 light purple bag. +bright black bags contain 2 clear yellow bags, 1 dotted red bag, 4 dim white bags. +pale maroon bags contain 2 vibrant tomato bags, 3 mirrored tomato bags. +wavy gray bags contain 2 wavy cyan bags, 2 dark tomato bags, 4 vibrant orange bags, 5 pale silver bags. +faded salmon bags contain 4 bright plum bags. +shiny teal bags contain 4 dark magenta bags. +dim bronze bags contain 5 striped olive bags, 5 dotted plum bags, 4 dark purple bags. +dotted lavender bags contain 4 striped indigo bags, 2 mirrored red bags, 2 bright chartreuse bags, 4 bright teal bags. +plaid beige bags contain 4 vibrant green bags, 3 striped violet bags, 5 vibrant blue bags. +dull purple bags contain 1 dark beige bag, 1 drab silver bag, 4 faded fuchsia bags, 2 vibrant olive bags. +bright olive bags contain 3 faded salmon bags, 1 wavy magenta bag, 5 dim yellow bags. +mirrored maroon bags contain 3 bright magenta bags, 5 pale lime bags, 3 striped olive bags. +clear brown bags contain 2 mirrored orange bags, 5 bright cyan bags. +drab teal bags contain 3 dull olive bags. +clear red bags contain 1 bright maroon bag. +vibrant black bags contain 4 pale fuchsia bags, 3 clear lavender bags, 2 shiny blue bags, 3 dotted blue bags. +faded white bags contain 3 wavy coral bags, 4 faded yellow bags, 5 shiny olive bags, 1 plaid orange bag. +dotted aqua bags contain 1 wavy white bag, 3 dotted blue bags, 5 pale lavender bags, 4 clear aqua bags. +pale blue bags contain 3 dim salmon bags, 3 muted cyan bags, 5 pale fuchsia bags. +dim turquoise bags contain 4 vibrant chartreuse bags, 2 dark silver bags, 3 pale gold bags. +dull magenta bags contain 3 muted salmon bags, 4 dotted gray bags, 3 light salmon bags. +dotted coral bags contain 2 mirrored tomato bags, 1 vibrant teal bag, 3 dull crimson bags. +dull beige bags contain 2 faded fuchsia bags. +shiny gold bags contain 4 bright beige bags, 3 dull crimson bags, 4 mirrored maroon bags, 3 bright tomato bags. +pale indigo bags contain 2 dotted teal bags, 3 faded teal bags, 4 wavy indigo bags. +shiny magenta bags contain 5 bright tomato bags, 5 dull lime bags, 5 mirrored bronze bags, 2 dim black bags. +muted cyan bags contain 2 dark bronze bags, 5 drab silver bags, 4 dotted chartreuse bags. +plaid orange bags contain 4 light plum bags, 5 shiny salmon bags, 5 posh beige bags. +shiny green bags contain 5 dotted tan bags, 5 mirrored olive bags, 1 dark teal bag. +dull maroon bags contain 1 striped black bag, 4 clear green bags. +drab aqua bags contain 1 striped indigo bag, 3 vibrant white bags. +bright gold bags contain 4 mirrored beige bags, 4 mirrored yellow bags. +plaid tan bags contain 5 shiny aqua bags. +striped plum bags contain 4 clear magenta bags, 2 dark gold bags. +vibrant teal bags contain 1 dim aqua bag, 4 vibrant violet bags, 3 plaid olive bags, 1 mirrored olive bag. +posh bronze bags contain 5 dark tomato bags, 5 shiny silver bags. +dim orange bags contain 4 dull salmon bags. +striped indigo bags contain 4 drab magenta bags. +vibrant yellow bags contain 4 drab olive bags, 4 wavy olive bags, 2 dark teal bags, 2 faded purple bags. +striped purple bags contain 5 pale red bags. +dim coral bags contain 1 plaid maroon bag, 2 pale magenta bags, 1 pale indigo bag, 2 dotted turquoise bags. +muted silver bags contain 4 mirrored turquoise bags. +posh cyan bags contain 3 dotted purple bags. +plaid lavender bags contain 3 muted gray bags, 1 light plum bag. +faded tan bags contain 1 mirrored cyan bag, 2 plaid crimson bags, 5 mirrored maroon bags. +clear lavender bags contain 4 pale gold bags, 1 posh lime bag, 4 pale crimson bags. +dull gray bags contain 5 shiny crimson bags, 5 wavy cyan bags, 3 posh lavender bags. +dull green bags contain 1 faded bronze bag, 3 vibrant indigo bags, 2 muted fuchsia bags, 4 dotted silver bags. +dark magenta bags contain 3 wavy white bags, 3 plaid plum bags, 4 wavy lavender bags, 3 drab magenta bags. +plaid red bags contain 1 bright turquoise bag. +dull coral bags contain 4 clear tomato bags. +posh turquoise bags contain 5 dull gold bags, 4 mirrored chartreuse bags. +drab crimson bags contain 2 dull tomato bags, 5 posh orange bags, 5 shiny violet bags. +clear tan bags contain 1 pale fuchsia bag, 4 light aqua bags, 3 shiny blue bags, 3 bright turquoise bags. +dotted brown bags contain 4 drab magenta bags, 5 plaid crimson bags, 2 posh beige bags. +light silver bags contain 3 mirrored green bags, 5 mirrored maroon bags, 5 shiny blue bags. +dotted gold bags contain 2 dim magenta bags. +drab yellow bags contain 5 pale purple bags. +faded lavender bags contain 5 muted cyan bags. +vibrant beige bags contain 4 clear turquoise bags, 2 dark fuchsia bags, 1 pale gray bag, 5 dim beige bags. +clear fuchsia bags contain 1 pale fuchsia bag, 1 wavy turquoise bag, 5 faded gray bags. +shiny chartreuse bags contain 4 vibrant green bags, 1 dotted teal bag. +dim purple bags contain 1 bright turquoise bag. +clear indigo bags contain 4 light white bags, 3 vibrant orange bags. +wavy turquoise bags contain 5 bright magenta bags. +vibrant chartreuse bags contain 4 mirrored chartreuse bags, 2 muted tan bags, 2 plaid lime bags, 3 striped olive bags. +dark chartreuse bags contain 5 shiny blue bags. +clear plum bags contain 3 pale lime bags. +dotted tomato bags contain 5 bright red bags, 2 bright olive bags, 5 drab silver bags, 4 clear magenta bags. +mirrored beige bags contain 4 light violet bags, 5 mirrored salmon bags, 4 dim yellow bags, 5 bright yellow bags. +posh teal bags contain 2 plaid turquoise bags, 3 pale salmon bags, 1 striped plum bag. +dull chartreuse bags contain 5 pale lavender bags, 1 bright turquoise bag, 3 pale beige bags. +mirrored lavender bags contain 4 vibrant tomato bags, 2 plaid tan bags, 5 bright magenta bags. +dark gray bags contain 5 wavy turquoise bags, 4 wavy gray bags, 4 dark bronze bags, 4 pale aqua bags. +dark white bags contain 4 clear maroon bags, 2 vibrant olive bags, 1 dull lime bag, 1 faded lime bag. +dull indigo bags contain 4 clear fuchsia bags, 3 dotted tan bags, 1 plaid cyan bag. +striped tan bags contain 3 pale brown bags. +dull gold bags contain 2 dark yellow bags, 3 dull olive bags. +light lavender bags contain 2 plaid red bags, 5 dotted purple bags, 1 bright beige bag, 3 pale beige bags. +faded teal bags contain 4 mirrored olive bags. +plaid salmon bags contain 1 dark bronze bag, 5 pale yellow bags, 1 striped cyan bag, 2 muted cyan bags. +dotted purple bags contain 1 bright turquoise bag, 1 posh green bag. +dull silver bags contain 3 striped salmon bags, 4 posh violet bags, 4 striped orange bags. +drab chartreuse bags contain 4 pale lavender bags. +striped coral bags contain 5 bright gray bags, 4 dark teal bags, 5 dotted purple bags. +wavy olive bags contain no other bags. +plaid olive bags contain 1 pale black bag, 3 clear plum bags. +drab black bags contain 3 striped olive bags, 2 mirrored chartreuse bags, 5 pale silver bags. +striped lime bags contain 3 dark chartreuse bags, 5 pale silver bags, 2 plaid crimson bags, 4 clear fuchsia bags. +drab beige bags contain 4 dim black bags, 4 striped black bags, 4 dull crimson bags, 5 dark gray bags. +muted tomato bags contain 3 light bronze bags, 3 pale salmon bags, 2 vibrant chartreuse bags. +bright fuchsia bags contain 5 drab orange bags, 3 pale black bags, 3 mirrored white bags, 5 faded tomato bags. +vibrant gray bags contain 4 posh lime bags, 2 dark purple bags, 4 clear aqua bags. +shiny yellow bags contain 5 bright beige bags, 2 vibrant red bags, 5 dim yellow bags, 2 vibrant yellow bags. +posh coral bags contain 5 drab indigo bags. +muted fuchsia bags contain 5 shiny silver bags, 2 dotted salmon bags, 1 muted tan bag. +muted brown bags contain 4 clear maroon bags, 5 dim purple bags, 4 wavy maroon bags, 2 muted red bags. +posh chartreuse bags contain 5 muted tan bags, 3 drab teal bags. +vibrant brown bags contain 1 wavy bronze bag, 5 bright red bags, 4 muted fuchsia bags, 4 clear fuchsia bags. +posh purple bags contain 2 drab turquoise bags, 5 striped blue bags, 1 muted cyan bag. +plaid lime bags contain 3 muted gray bags, 5 vibrant red bags, 1 wavy gray bag, 1 pale silver bag. +posh violet bags contain 2 faded crimson bags, 1 shiny olive bag, 3 bright magenta bags, 1 drab silver bag. +striped gold bags contain 5 faded salmon bags, 2 drab bronze bags, 2 dark plum bags. +striped gray bags contain 2 mirrored crimson bags, 5 faded beige bags, 1 dull red bag. +dim blue bags contain 2 dark coral bags, 3 dim yellow bags, 1 dull salmon bag. +bright silver bags contain 2 mirrored tomato bags, 3 bright plum bags, 4 pale lavender bags, 1 clear tomato bag. +striped red bags contain 4 light yellow bags, 5 mirrored white bags, 5 plaid gold bags. +shiny maroon bags contain 3 wavy cyan bags, 1 mirrored tomato bag, 1 mirrored coral bag. +mirrored brown bags contain 2 mirrored olive bags, 3 mirrored green bags, 1 dim tomato bag. +striped olive bags contain no other bags. +striped violet bags contain 5 bright tomato bags. +mirrored aqua bags contain 4 dark gray bags, 5 shiny blue bags, 2 pale silver bags. +plaid white bags contain 3 dim maroon bags, 2 dim tan bags. +drab orange bags contain 5 striped olive bags. +dark brown bags contain 2 mirrored bronze bags, 5 clear maroon bags, 2 dull lime bags. +dotted silver bags contain 1 dark gold bag, 1 drab black bag, 3 pale aqua bags. +pale plum bags contain 5 striped maroon bags, 5 dotted purple bags, 4 shiny magenta bags. +faded indigo bags contain 1 posh cyan bag, 5 bright green bags. +mirrored teal bags contain 3 muted indigo bags, 4 clear fuchsia bags, 4 vibrant teal bags, 5 drab violet bags. +shiny lavender bags contain 5 striped beige bags, 2 dull magenta bags, 4 clear tan bags. +pale beige bags contain 5 mirrored maroon bags. +striped bronze bags contain 1 pale orange bag, 5 shiny cyan bags, 5 plaid purple bags, 1 vibrant chartreuse bag. +faded gold bags contain 3 pale brown bags, 2 dull violet bags, 2 clear maroon bags, 4 dull lime bags. +clear tomato bags contain 4 vibrant orange bags, 3 bright tomato bags, 3 wavy chartreuse bags, 5 wavy olive bags. +pale red bags contain 5 wavy blue bags, 5 dark purple bags, 1 bright tomato bag, 4 dark tan bags. +vibrant red bags contain 5 wavy gray bags, 5 dark tomato bags. +dim salmon bags contain 2 faded crimson bags. +shiny blue bags contain 4 muted tan bags, 2 vibrant orange bags. +vibrant white bags contain 3 mirrored cyan bags. +dark violet bags contain 5 vibrant blue bags, 3 wavy tomato bags. +pale gold bags contain no other bags. +dim silver bags contain 4 drab tan bags, 4 pale silver bags, 5 clear bronze bags, 4 drab maroon bags. +drab blue bags contain 5 vibrant indigo bags, 3 muted turquoise bags. +drab plum bags contain 2 dim turquoise bags, 2 drab violet bags, 1 light gray bag, 3 clear tan bags. +bright plum bags contain 3 wavy olive bags. +dark fuchsia bags contain 4 dotted indigo bags, 3 dark brown bags, 1 clear white bag. +bright turquoise bags contain 1 posh lime bag, 2 wavy olive bags, 1 pale crimson bag. +dotted turquoise bags contain 3 faded plum bags, 1 bright tomato bag. +shiny indigo bags contain 1 wavy chartreuse bag. +dark yellow bags contain 2 light gold bags. +posh olive bags contain 2 shiny indigo bags. +light chartreuse bags contain 5 drab turquoise bags, 2 faded purple bags, 3 faded gray bags. +vibrant tomato bags contain 3 light olive bags, 4 shiny purple bags. +posh brown bags contain 4 shiny green bags, 1 pale purple bag. +bright chartreuse bags contain 3 light gold bags. +dotted lime bags contain 5 wavy cyan bags. +drab violet bags contain 4 dark beige bags, 1 plaid gold bag, 3 faded beige bags. +drab green bags contain 4 dotted bronze bags, 5 clear silver bags, 4 faded salmon bags. +wavy beige bags contain 2 clear cyan bags, 2 dim tomato bags. +wavy yellow bags contain 4 pale green bags, 3 mirrored green bags, 5 faded brown bags, 1 clear orange bag. +plaid tomato bags contain 3 dull yellow bags, 2 faded blue bags, 1 dull teal bag. +dull red bags contain 4 posh green bags, 1 shiny salmon bag, 2 bright tomato bags, 4 vibrant red bags. +striped salmon bags contain 4 dim bronze bags, 4 light gold bags, 3 posh beige bags. +dim crimson bags contain 1 dull crimson bag, 4 drab silver bags. +plaid silver bags contain 3 dull black bags, 5 shiny silver bags, 4 dark beige bags, 2 clear aqua bags. +clear bronze bags contain 1 drab coral bag, 2 vibrant red bags. +dotted gray bags contain 1 plaid plum bag, 2 dotted purple bags, 5 striped violet bags, 3 bright tomato bags. +striped silver bags contain 2 plaid coral bags, 5 bright orange bags, 1 pale brown bag. +shiny beige bags contain 4 dim turquoise bags. +posh green bags contain no other bags. +plaid gold bags contain 3 pale fuchsia bags, 5 dull lime bags, 5 wavy chartreuse bags, 5 dim tomato bags. +dim teal bags contain 5 pale beige bags, 2 faded blue bags, 5 dotted tan bags, 5 vibrant tomato bags. +bright red bags contain 4 drab lavender bags, 1 dark purple bag, 2 wavy violet bags. +dotted teal bags contain 5 dull crimson bags. +faded gray bags contain 4 mirrored red bags. +pale purple bags contain 3 faded gray bags, 1 clear gold bag, 4 clear cyan bags. +striped crimson bags contain 4 dim aqua bags, 3 pale magenta bags, 1 drab white bag, 1 vibrant purple bag. +mirrored purple bags contain 3 muted gray bags. +muted maroon bags contain 3 plaid crimson bags, 4 posh aqua bags. +muted gold bags contain 3 pale fuchsia bags, 2 dotted teal bags, 3 dotted chartreuse bags, 4 vibrant lime bags. +wavy silver bags contain 2 plaid beige bags, 3 dull aqua bags, 2 pale lavender bags. +dim aqua bags contain 5 bright beige bags. +dark tan bags contain 4 pale gold bags. +light yellow bags contain 4 dotted gray bags, 5 pale teal bags. +bright blue bags contain 3 shiny coral bags, 4 striped salmon bags. +striped cyan bags contain 5 light turquoise bags. +light gray bags contain 4 vibrant teal bags, 1 shiny turquoise bag, 1 wavy olive bag, 5 dim white bags. +light cyan bags contain 3 dark gray bags, 5 clear lavender bags, 4 dark beige bags. +light blue bags contain 5 dim black bags, 4 drab tomato bags, 2 dim turquoise bags. +dull crimson bags contain 3 pale silver bags, 2 faded beige bags. +dotted beige bags contain 2 dotted aqua bags. +shiny olive bags contain 4 bright plum bags, 4 clear plum bags, 2 wavy green bags, 5 faded tomato bags. +striped turquoise bags contain 1 drab black bag. +pale chartreuse bags contain 5 dotted brown bags. +mirrored turquoise bags contain 4 shiny gold bags, 3 dark chartreuse bags. +posh beige bags contain 3 dotted tan bags. +drab gray bags contain 3 vibrant aqua bags. +shiny silver bags contain 4 plaid gold bags, 5 shiny green bags. +bright crimson bags contain 5 faded yellow bags, 4 bright plum bags, 4 mirrored gold bags. +dim yellow bags contain 2 plaid lime bags, 5 bright salmon bags, 4 mirrored bronze bags. +dark crimson bags contain 4 dull blue bags, 2 light olive bags, 4 mirrored green bags. +faded aqua bags contain 1 dotted chartreuse bag, 1 muted orange bag. +pale turquoise bags contain 4 dull silver bags. +clear orange bags contain 1 pale gray bag, 5 striped bronze bags, 5 dim aqua bags. +mirrored red bags contain 1 muted purple bag. +drab silver bags contain no other bags. +faded silver bags contain 5 mirrored turquoise bags, 4 striped purple bags. +wavy fuchsia bags contain 2 faded purple bags, 1 wavy cyan bag, 2 muted cyan bags. +clear black bags contain 4 drab turquoise bags, 1 plaid lime bag. +dim olive bags contain 5 bright chartreuse bags, 3 striped silver bags. +mirrored tan bags contain 2 striped indigo bags, 3 wavy gray bags, 3 clear tan bags. +mirrored yellow bags contain 2 plaid plum bags, 3 striped salmon bags, 4 dim maroon bags. +shiny salmon bags contain 5 dotted plum bags, 5 pale crimson bags. +dotted crimson bags contain 3 dull yellow bags. +shiny fuchsia bags contain 5 plaid lime bags. +drab turquoise bags contain 2 dull crimson bags. +mirrored cyan bags contain 3 posh green bags, 5 striped olive bags, 5 vibrant red bags. +faded crimson bags contain 3 muted silver bags, 4 shiny olive bags. +light magenta bags contain 3 posh crimson bags, 5 pale purple bags. +faded violet bags contain 3 vibrant lime bags, 1 dim magenta bag, 1 dull lime bag. +dotted black bags contain 2 light gold bags, 2 dim bronze bags, 4 wavy turquoise bags. +bright beige bags contain 4 vibrant orange bags, 4 dark chartreuse bags, 1 muted gray bag, 2 bright tomato bags. +striped green bags contain 3 pale beige bags, 1 pale brown bag, 2 posh brown bags, 5 striped olive bags. +dotted red bags contain 4 vibrant orange bags, 2 pale gold bags. +plaid fuchsia bags contain 5 pale teal bags, 5 pale fuchsia bags, 4 faded gray bags. +light beige bags contain 1 muted red bag, 5 dotted purple bags, 3 striped salmon bags. +dim chartreuse bags contain 5 muted maroon bags, 4 wavy maroon bags. +clear chartreuse bags contain 3 striped lavender bags, 2 clear blue bags. +pale silver bags contain 2 dark teal bags. +faded olive bags contain 4 dotted turquoise bags, 4 drab indigo bags, 5 drab violet bags, 3 shiny blue bags. +clear blue bags contain 1 muted black bag. +dull tan bags contain 5 clear crimson bags, 3 dim tomato bags. +dark cyan bags contain 4 wavy magenta bags, 5 vibrant olive bags, 2 posh gray bags, 5 dull magenta bags. +dotted white bags contain 1 bright magenta bag, 3 pale red bags. +muted teal bags contain 5 posh fuchsia bags, 4 drab turquoise bags, 4 posh red bags. +mirrored coral bags contain 1 faded purple bag, 2 bright magenta bags, 5 dark yellow bags, 3 light plum bags. +dull orange bags contain 4 dotted blue bags, 5 clear gray bags, 3 vibrant red bags. +bright aqua bags contain 4 muted lime bags, 2 wavy plum bags, 1 shiny olive bag. +light maroon bags contain 1 shiny gold bag, 4 light beige bags, 1 drab black bag. +dim green bags contain 4 dull brown bags. +striped black bags contain 4 dotted crimson bags. +mirrored bronze bags contain 4 mirrored chartreuse bags, 3 dull lime bags, 3 wavy turquoise bags. +striped aqua bags contain 4 dark gray bags, 5 faded beige bags, 2 dull lime bags. +shiny coral bags contain 5 mirrored white bags, 5 shiny blue bags. +striped orange bags contain 4 pale silver bags, 4 pale olive bags, 4 shiny olive bags, 2 bright chartreuse bags. +vibrant crimson bags contain 5 shiny olive bags, 5 striped violet bags, 2 posh beige bags. +dotted chartreuse bags contain 5 bright turquoise bags, 5 bright magenta bags. +vibrant purple bags contain 4 posh violet bags. +vibrant violet bags contain 5 posh aqua bags, 4 mirrored white bags, 4 dotted tan bags, 4 mirrored purple bags. +dotted violet bags contain 3 bright brown bags, 3 pale yellow bags, 4 light gray bags, 5 dark green bags. +muted black bags contain 2 light violet bags, 5 muted bronze bags. +mirrored orange bags contain 1 plaid magenta bag, 5 muted red bags, 3 pale lime bags. +faded magenta bags contain 3 striped cyan bags, 4 muted silver bags. +clear gray bags contain 4 muted gray bags, 2 wavy turquoise bags, 3 dotted plum bags. \ No newline at end of file diff --git a/2020/Day7/main.py b/2020/Day7/main.py new file mode 100644 index 0000000..c0614f1 --- /dev/null +++ b/2020/Day7/main.py @@ -0,0 +1,46 @@ +def getParent(color): + for i in raw: + primcolor, others = i.split(" contain ") + + others = others.split(", ") + for j in range(0, len(others)): + others[j] = others[j].replace(others[j][:2], "") + if color in others: + if primcolor not in containGold: + containGold.append(primcolor) + getParent(primcolor) + + +def getChilds(color): + result = 0 + for i in raw: + primcolor, others = i.split(" contain ") + + if primcolor == color: + others = others.split(", ") + for j in range(0, len(others)): + times = others[j][:2] + if times == "no": + result = 1 + else: + others[j] = others[j].replace(times, "") + result += int(times) * getChilds(others[j]) + break + return result + + +if __name__ == '__main__': + containGold = [] + GoldContains = 0 + with open("input.txt") as f: + raw = f.read().split("\n") + + for i in range(0, len(raw)): + raw[i] = raw[i].replace(" bags", "").replace(" bag", "").replace(".", "") + + getParent("shiny gold") + + print("Aufgabe 1:", len(containGold)) + + GoldContains = getChilds("shiny gold") + print("Aufgabe 2:", GoldContains+1) diff --git a/2020/Day8/input.txt b/2020/Day8/input.txt new file mode 100644 index 0000000..fdf7e9d --- /dev/null +++ b/2020/Day8/input.txt @@ -0,0 +1,605 @@ +acc +14 +acc +11 +nop +422 +acc +14 +jmp +443 +acc +21 +nop +524 +acc -2 +jmp +279 +jmp +1 +acc +28 +acc +11 +jmp +576 +acc +32 +acc -12 +acc -8 +jmp +291 +nop +542 +acc +41 +jmp +320 +acc +40 +jmp +96 +jmp +85 +acc +38 +acc +8 +jmp +333 +acc +44 +nop +231 +acc +40 +jmp +323 +acc +18 +jmp +251 +acc -1 +jmp +385 +acc -9 +acc +48 +acc +20 +acc +34 +jmp +150 +nop +203 +acc +4 +acc +32 +acc +44 +jmp +168 +acc +26 +acc +46 +acc +40 +jmp -30 +jmp +182 +acc +18 +jmp +404 +nop +142 +jmp +84 +acc +30 +acc +10 +jmp +1 +acc +40 +jmp +370 +jmp +381 +jmp +239 +acc -2 +acc +47 +acc -4 +jmp +295 +jmp -38 +acc +40 +acc +44 +acc +4 +acc +4 +jmp +156 +acc +31 +acc +20 +acc +0 +acc -12 +jmp -48 +acc +32 +acc +38 +jmp +1 +acc -6 +jmp +375 +acc +33 +acc +27 +acc +28 +jmp +107 +acc +1 +acc +6 +nop +136 +jmp +85 +acc +31 +acc +49 +acc +46 +jmp +167 +acc +5 +acc -5 +jmp +148 +acc +22 +acc +44 +acc -8 +acc -2 +jmp -60 +nop +354 +jmp +59 +acc +48 +nop +473 +acc -7 +acc +4 +jmp +105 +jmp +456 +acc +16 +acc +33 +acc +24 +jmp -4 +acc +36 +acc +10 +nop +441 +jmp +268 +jmp +388 +acc +0 +acc +27 +acc -1 +jmp -60 +nop +90 +jmp -90 +acc +48 +acc +30 +jmp +284 +acc +4 +acc +6 +acc +1 +acc -10 +jmp +95 +acc +35 +jmp +235 +acc +31 +acc -19 +jmp -96 +jmp +326 +acc -7 +acc +0 +acc -1 +jmp +53 +acc +15 +acc -14 +jmp +450 +nop +8 +acc -2 +acc -1 +acc +17 +jmp -25 +nop +444 +jmp +65 +jmp -86 +acc +44 +acc +16 +acc +32 +acc -11 +jmp +32 +acc +14 +acc +28 +jmp +123 +jmp +127 +jmp -44 +acc +42 +acc +24 +acc -3 +acc +4 +jmp +219 +acc +28 +acc +30 +acc -14 +acc -11 +jmp +67 +acc +5 +acc +43 +acc +23 +nop +73 +jmp +176 +acc +28 +acc +8 +acc +42 +acc +44 +jmp +278 +acc +9 +acc +46 +acc +0 +acc +30 +jmp +72 +jmp +317 +jmp +352 +jmp +273 +jmp +137 +nop +364 +jmp +249 +nop +79 +jmp +1 +jmp -147 +acc -10 +acc -1 +acc +12 +acc +27 +jmp +147 +acc -5 +acc +7 +jmp +63 +acc +33 +acc +32 +nop +81 +jmp -185 +acc +44 +jmp +215 +jmp +187 +acc +14 +acc +38 +jmp -113 +jmp +267 +acc -9 +acc +21 +acc -5 +jmp +143 +nop -57 +nop +281 +jmp -170 +jmp +267 +nop -131 +jmp -83 +acc -6 +jmp -95 +acc -9 +acc -8 +jmp +184 +acc +32 +acc -16 +jmp +171 +acc +5 +acc +22 +acc -7 +acc +20 +jmp +45 +acc +48 +jmp +239 +acc -4 +jmp +75 +acc -18 +jmp -178 +nop +349 +acc -12 +nop +313 +jmp -57 +acc +7 +acc +6 +jmp -241 +acc +19 +jmp +320 +acc +13 +jmp -61 +acc +0 +nop +337 +jmp +66 +acc +27 +acc -11 +acc -7 +jmp +315 +acc +23 +acc +26 +acc -5 +jmp +132 +acc +45 +acc +21 +acc -12 +jmp +158 +acc +19 +jmp +176 +acc +43 +jmp +124 +nop +227 +nop -236 +acc +11 +jmp +1 +jmp -67 +acc +21 +jmp +161 +jmp +86 +acc +26 +acc +7 +jmp +246 +acc +0 +jmp +215 +jmp +1 +acc +16 +jmp -257 +acc +2 +jmp +281 +nop -10 +acc +46 +jmp +124 +acc +13 +acc +24 +jmp +204 +jmp +1 +acc +23 +jmp +225 +nop -243 +jmp +167 +jmp +1 +jmp -142 +acc -15 +jmp -113 +acc +27 +acc -18 +acc +12 +jmp -259 +nop +74 +acc +35 +acc +42 +acc -4 +jmp -166 +nop +87 +nop +86 +acc +18 +acc -2 +jmp +212 +acc -8 +jmp -313 +acc +36 +acc -11 +jmp -233 +jmp +237 +nop +67 +acc +16 +nop -57 +jmp -92 +acc +48 +acc +2 +acc +21 +jmp +33 +acc -15 +jmp +145 +acc +26 +jmp -254 +acc +30 +acc +4 +acc -1 +acc -14 +jmp -64 +acc +32 +acc +8 +jmp -131 +acc -13 +jmp +138 +acc +5 +acc +4 +jmp -4 +acc +37 +nop -278 +acc +28 +acc +17 +jmp -215 +jmp -104 +nop -241 +jmp -43 +jmp -2 +acc +5 +acc -1 +jmp +151 +jmp +1 +acc +21 +jmp +19 +acc +40 +jmp +91 +acc +50 +nop +202 +acc -12 +jmp -333 +nop -66 +acc +42 +acc +7 +jmp +1 +jmp +47 +acc +32 +acc +29 +acc +42 +nop -8 +jmp +52 +jmp -299 +jmp +40 +acc +36 +acc -5 +acc +39 +jmp -116 +acc +19 +acc +30 +acc +39 +acc -1 +jmp -276 +jmp -245 +acc +6 +jmp -185 +acc +50 +acc +14 +acc -7 +jmp -325 +acc +33 +jmp -279 +nop +173 +acc +15 +acc -17 +jmp -33 +acc +20 +jmp -101 +acc -17 +jmp -335 +nop -8 +jmp +22 +acc +0 +acc +4 +jmp -133 +nop -81 +jmp +64 +jmp -306 +acc -19 +acc +31 +acc +47 +acc +26 +jmp +55 +jmp -402 +acc +13 +jmp -375 +acc +6 +acc -1 +acc -6 +acc +49 +jmp -28 +acc -7 +jmp -203 +jmp -395 +acc +5 +acc +38 +acc +10 +jmp +130 +jmp +161 +jmp -382 +acc +45 +jmp +113 +acc +38 +acc +48 +acc +46 +jmp +126 +acc -1 +acc -10 +acc +4 +acc +2 +jmp -425 +acc +0 +jmp -80 +acc +4 +jmp -202 +acc +25 +acc +8 +jmp -398 +jmp -307 +acc +3 +jmp +17 +acc +13 +acc +33 +acc +7 +jmp -381 +acc +5 +acc +12 +jmp -308 +jmp +1 +acc +3 +acc -14 +acc +46 +jmp -415 +acc +31 +acc +7 +acc +28 +jmp -419 +jmp -175 +jmp +1 +jmp -141 +acc +20 +nop -35 +jmp -36 +acc -6 +jmp +108 +nop +1 +jmp +8 +jmp -49 +jmp -389 +acc +24 +nop -482 +acc +41 +acc +25 +jmp -167 +nop -26 +jmp -198 +nop -199 +acc +23 +acc -19 +jmp -202 +jmp +58 +acc +3 +jmp -237 +acc +44 +acc +42 +acc +22 +acc +5 +jmp -307 +acc +45 +nop -418 +acc +41 +nop -88 +jmp +63 +acc +12 +nop -56 +acc -19 +jmp +55 +acc -13 +acc -7 +jmp -213 +acc +42 +jmp -88 +acc +20 +jmp -115 +acc +6 +jmp -57 +acc +25 +acc +49 +jmp -43 +jmp -322 +jmp -456 +acc +7 +acc +40 +acc +35 +jmp -518 +nop -461 +acc +43 +acc +33 +jmp +7 +acc +27 +jmp +5 +acc -15 +acc -19 +acc -2 +jmp -238 +acc +49 +acc +48 +acc -16 +jmp +34 +acc -6 +acc +49 +acc -4 +acc +4 +jmp +1 +acc +35 +nop -264 +jmp -234 +jmp -365 +jmp -436 +acc +20 +acc +36 +jmp -426 +acc +39 +acc +20 +jmp -343 +nop -443 +jmp -325 +jmp -127 +nop -560 +acc +10 +jmp -511 +jmp -455 +acc -16 +acc +18 +jmp -61 +acc +26 +jmp -285 +jmp +1 +nop -397 +acc +12 +nop -67 +jmp -371 +acc +27 +acc +13 +jmp -395 +acc +44 +jmp -565 +acc +1 +jmp -21 +nop -428 +acc -4 +jmp -265 +acc +48 +acc +10 +acc +46 +jmp -202 +acc -4 +acc -10 +jmp -152 +acc +17 +acc -10 +acc +22 +acc +10 +jmp +1 \ No newline at end of file diff --git a/2020/Day8/main.py b/2020/Day8/main.py new file mode 100644 index 0000000..da2e46f --- /dev/null +++ b/2020/Day8/main.py @@ -0,0 +1,57 @@ +import copy as cp + + +def Part1(): + idx = 0 + checkedIdx = [] + acc = 0 + while True: + operation, num = raw[idx].split() + if idx not in checkedIdx: + checkedIdx.append(idx) + else: + return acc + + if operation == "jmp": + idx += int(num) + elif operation == "nop": + idx += 1 + elif operation == "acc": + acc += int(num) + idx += 1 + + +def Part2(): + for i in range(len(raw)): + newSequence = cp.deepcopy(raw) + if newSequence[i].split()[0] == "jmp": + newSequence[i] = newSequence[i].replace("jmp", "nop") + elif newSequence[i].split()[0] == "nop": + newSequence[i] = newSequence[i].replace("nop", "jmp") + + idx = 0 + checkedIdx = [] + acc = 0 + while True: + operation, num = newSequence[idx].split() + if idx not in checkedIdx: + checkedIdx.append(idx) + else: + break + + if idx == len(newSequence)-1: + return acc + + if operation == "jmp": + idx += int(num) + elif operation == "nop": + idx += 1 + elif operation == "acc": + acc += int(num) + idx += 1 + + +if __name__ == '__main__': + with open("input.txt") as f: + raw = f.read().splitlines() + print(Part2()) diff --git a/2020/Day9/input.txt b/2020/Day9/input.txt new file mode 100644 index 0000000..8b0c2b1 --- /dev/null +++ b/2020/Day9/input.txt @@ -0,0 +1,1000 @@ +29 +44 +11 +5 +42 +8 +17 +23 +18 +16 +50 +47 +21 +3 +25 +28 +36 +34 +48 +30 +32 +40 +22 +19 +41 +13 +56 +14 +11 +20 +39 +43 +17 +64 +57 +66 +31 +16 +106 +27 +79 +25 +36 +24 +46 +38 +28 +33 +92 +29 +30 +34 +89 +35 +53 +83 +42 +40 +137 +41 +50 +43 +68 +49 +69 +52 +79 +60 +54 +62 +165 +57 +87 +102 +95 +110 +114 +75 +76 +239 +81 +94 +176 +84 +163 +92 +119 +173 +143 +167 +106 +111 +116 +197 +132 +133 +194 +151 +156 +157 +159 +160 +313 +165 +175 +249 +178 +240 +176 +269 +198 +217 +286 +310 +227 +424 +289 +273 +434 +265 +393 +332 +415 +337 +444 +530 +325 +340 +341 +351 +354 +451 +374 +403 +492 +649 +922 +500 +537 +516 +538 +554 +590 +639 +597 +825 +867 +662 +665 +666 +841 +676 +1113 +715 +705 +957 +777 +1242 +1134 +1016 +1037 +1038 +1328 +1054 +1155 +1092 +1144 +1187 +1236 +1312 +1327 +1799 +1623 +1331 +1342 +1381 +2518 +1420 +1482 +1662 +2049 +1814 +2419 +2146 +2404 +3382 +2342 +2209 +2247 +3141 +2236 +3296 +2563 +2567 +2654 +4727 +2673 +2712 +2863 +2723 +2801 +4050 +3469 +3144 +6270 +5287 +3960 +4456 +4355 +4445 +4483 +4551 +5236 +7099 +5099 +5217 +9278 +6142 +8568 +5327 +5385 +5396 +8540 +5524 +5867 +5945 +8996 +9196 +7104 +8315 +12316 +8405 +9681 +8800 +8928 +9034 +11341 +10316 +12203 +10909 +10544 +10712 +10723 +10781 +10851 +10920 +11263 +14979 +11391 +11812 +18609 +18445 +15419 +17827 +17205 +17333 +17439 +17962 +17834 +19244 +19350 +20860 +21028 +31447 +29956 +35796 +21504 +30270 +22732 +23203 +22183 +35273 +47289 +26810 +27231 +32858 +40566 +53718 +41976 +34538 +37206 +35401 +38694 +53888 +47838 +40854 +41888 +53159 +54041 +78108 +82830 +43687 +44915 +57741 +58604 +48993 +59668 +60089 +61348 +86576 +83531 +69939 +71744 +73232 +72607 +74095 +98362 +91853 +82742 +127430 +84541 +85575 +93908 +103519 +88602 +92680 +101428 +106263 +106734 +107597 +108661 +121016 +135443 +134580 +175178 +141683 +171344 +144351 +145839 +181104 +158636 +193172 +250489 +167283 +173143 +170116 +174177 +245779 +313122 +200277 +194108 +207691 +311799 +214331 +216258 +295193 +255596 +356014 +278931 +286034 +287522 +374974 +290190 +304475 +325919 +328752 +340426 +361391 +341460 +343259 +462037 +374454 +401799 +394385 +407968 +408439 +422022 +430589 +501853 +506448 +534527 +628982 +700893 +564965 +683685 +695961 +594665 +1223647 +776253 +836491 +669178 +681886 +772049 +1351064 +717713 +824974 +768839 +989050 +802353 +816407 +830461 +852611 +932442 +1036380 +1571192 +1248650 +1295558 +1379646 +1159630 +1263843 +1276551 +1312378 +1386891 +1399599 +2560242 +2097911 +1450725 +1540888 +1520066 +1542687 +1593813 +1585246 +2763103 +2435979 +1646868 +1683072 +1785053 +1968822 +2821433 +2436181 +2408280 +2423473 +2539276 +2472008 +2995450 +2711977 +2929578 +3691724 +2850324 +2970791 +2991613 +5257614 +3060954 +3276885 +4444137 +3179059 +3232114 +3468125 +6229190 +5183985 +5655587 +3753875 +4908189 +6007401 +4831753 +4880288 +9920914 +5011284 +5322332 +5562301 +10563776 +5779902 +5821115 +5841937 +14752667 +6932934 +9843037 +6240013 +6745010 +8585628 +8937860 +9076207 +7222000 +8634163 +9316176 +9739942 +10442589 +10470490 +9891572 +9712041 +12774871 +10333616 +10573585 +16824506 +11342203 +14427565 +16682602 +12061128 +13063937 +15330638 +12985023 +13462013 +13967010 +15379173 +17664589 +15856163 +16538176 +16934041 +25747735 +20465157 +19451983 +21773169 +19603613 +20045657 +20285626 +20907201 +38597675 +21915788 +25046151 +23403331 +25125065 +25523141 +26028138 +28364196 +42331206 +26447036 +27429023 +35424830 +39649270 +32394339 +36141789 +33472217 +36386024 +47816179 +42855314 +58057577 +39889239 +51970177 +82504584 +41192827 +48336224 +59500355 +47040853 +48926472 +48528396 +54392334 +53876059 +79241338 +76275263 +134332840 +76617657 +62853853 +65866556 +73587166 +68780363 +83182642 +93163004 +111933636 +87705418 +81082066 +86930092 +91859416 +88233680 +122513638 +135274533 +162423980 +207920006 +111382249 +102802531 +131711038 +108268393 +116729912 +246266476 +142367529 +185367491 +131634216 +134646919 +370343986 +149862429 +195965535 +168012158 +204963592 +144381670 +258130822 +169315746 +175163772 +180093096 +284742070 +279394407 +211070924 +214184780 +219532443 +224998305 +234436747 +239902609 +434604499 +248364128 +519178817 +519297016 +281496645 +266281135 +279028589 +294244099 +344479518 +312393828 +380127364 +563770659 +363914113 +519643290 +388848189 +399625539 +453969190 +425255704 +430603367 +433717223 +908491479 +444530748 +459435052 +678967495 +683092288 +591422417 +733327707 +1252970997 +712745812 +1472262138 +545309724 +573272688 +701242017 +708393631 +1499913896 +833342762 +752762302 +844156287 +788473728 +1556902099 +853594729 +855859071 +893152275 +864320590 +1752647766 +1004744776 +903965800 +1032707740 +1118582412 +1501219540 +1424765179 +1745453552 +1326034990 +1246551741 +1253703355 +1274514705 +1454004319 +1534584779 +1461155933 +1541236030 +1596918589 +1644332799 +1632630015 +2445201830 +1709453800 +1717915319 +2995240349 +2871230178 +2151290152 +1908710576 +1936673540 +2178480505 +2707707674 +2365134153 +2500255096 +2600549695 +2521066446 +4672356598 +2528218060 +2714859288 +4405814957 +4424313088 +4304626263 +4074587953 +4244882494 +5100804791 +3896395824 +3342083815 +3427369119 +3618164376 +3845384116 +7692752329 +4060000728 +4087191081 +4115154045 +4886200599 +4543614658 +5079993441 +4865389249 +6424613884 +8568752422 +5049284506 +8269697204 +5243077348 +6142228407 +13669557213 +7501957072 +6769452934 +6960248191 +8360036539 +18749550654 +7272753235 +11779943410 +7045533495 +7463548492 +8388998774 +16081751103 +24441787642 +8202345126 +8658768703 +9409003907 +20625365761 +12911681341 +10292361854 +12012530282 +14652081255 +19811785620 +11385305755 +12203325539 +13644185479 +14509081987 +18658058990 +14318286730 +14005781686 +14736301727 +15247878621 +21114026467 +15665893618 +33100556345 +15852547266 +16591343900 +27962472209 +16861113829 +22304892136 +18067772610 +19701365761 +23588631294 +28159559962 +25391087441 +23397836037 +36779920085 +25029491234 +25894387742 +26939627266 +27649967165 +28324068416 +28742083413 +29054588457 +44511080994 +37552770757 +50628960552 +46391841026 +32713661095 +32443891166 +45020673791 +45717739775 +40258949866 +34928886439 +58326722476 +37769138371 +43099201798 +48427327271 +48788923478 +53353559650 +49292223779 +77481915728 +50923878976 +61037729511 +54589594431 +56392050578 +57066151829 +71841285211 +70213029537 +70266431852 +84160979397 +65157552261 +67372777605 +67642547534 +72698024810 +75187836305 +104277438626 +115392874305 +105141915976 +87061362150 +86196465642 +91526529069 +97216250749 +103881818210 +100216102755 +150179940538 +111655746260 +105513473407 +204769534969 +126658482430 +113458202407 +122223704090 +142107717063 +156409495179 +137855577071 +132530329866 +179298293794 +158899306674 +154703909684 +147885861115 +190473904268 +197040002476 +206919403374 +173257827792 +177722994711 +183412716391 +235681906497 +217340020617 +350980822503 +217169219667 +247621190470 +328824965927 +227737177497 +301007023737 +240116684837 +361135711102 +380151520336 +292559486755 +287234239550 +328329481339 +280416190981 +327184154909 +302589770799 +395063015328 +321143688907 +356670544183 +475798591334 +390332119765 +390427047459 +394892214378 +573744836156 +434509240284 +444906397164 +504403459217 +530326948296 +581423214718 +620888968094 +716206704235 +520532875818 +527350924387 +755652929191 +567650430531 +682126453928 +1151215916390 +1057221806052 +675479206309 +1043390859144 +659260314982 +1095001354918 +677814233090 +1065811326074 +835238516929 +1208141181386 +1077018668306 +829401454662 +879415637448 +938912699501 +1551445221164 +1752497874615 +1047883800205 +1088183306349 +1141421843912 +1635068566639 +1179793190800 +1341386768910 +1488661769644 +1226910745513 +1747443621331 +1334739521291 +1337074548072 +2482808612822 +1494498831911 +1743625559164 +1507215687752 +1513052750019 +1923421823278 +2015931367807 +1708817092110 +1768314154163 +1818328336949 +1927299437653 +2273652220792 +2136067106554 +3650999934446 +2189305644117 +2429570075259 +2476161365203 +2976455335549 +2568297514423 +2561650266804 +3695613591816 +4991220342063 +2671814069363 +2847792271310 +2831573379983 +3001714519663 +3007551581930 +3216032779862 +5808028715532 +5233464336167 +3850721260931 +3477131246273 +3586642491112 +4091980557741 +4775091708963 +4063366544207 +4325372750671 +4565637181813 +5147975434566 +4618875719376 +9473348185237 +5323953636513 +5129947781227 +5416089785733 +5679365651293 +8314489311192 +5839124961913 +5503387449346 +7977740052537 +5833287899646 +6693164026135 +8625106680839 +6802675270974 +9766851153942 +7063773737385 +7327852507204 +7540497790480 +7650009035319 +15642341818396 +9942829355889 +12688473225046 +14868350297684 +10034965505109 +9748823500603 +10122263168722 +10453901417740 +12017117662648 +11182753100639 +11512653550939 +11342512411259 +11336675348992 +12526451925781 +12897061637031 +17726563553140 +18877173139472 +13495839297109 +13866449008359 +14130527778178 +14977861542523 +17362818012313 +15190506825799 +23809278364248 +17398832535922 +32917070378939 +19691652856492 +45605543603985 +21790576766732 +24409715187970 +19871086669325 +20576164586462 +23353793011640 +22519428449631 +31207762018317 +32218104782273 +22679187760251 +26763510645390 +33473226223493 +41080356564780 +28473700839632 +27362288305468 +27626367075287 +27996976786537 +63599785014411 +42390515118956 +60215081568810 +32589339361721 +37090485392414 +37269919205247 +39562739525817 +42366741353194 +40447251255787 +50264277606364 +61099593298780 +58981615427663 +54125798950858 +45873221461271 +61063040201353 +49442698405641 +61946927063125 +50041476065719 +54988655380755 +104431353786396 +64632207510715 +105079458766502 +55359265092005 +55623343861824 +67559716312354 +69859258566968 +72152078887538 +89889949661428 +69679824754135 +144878605042183 +95315919866912 +80009990781604 +82813992608981 +152162069669142 +101496565323095 +104854836888934 +95914697526990 +99484174471360 +100861876842026 \ No newline at end of file diff --git a/2020/Day9/main.py b/2020/Day9/main.py new file mode 100644 index 0000000..aeb282a --- /dev/null +++ b/2020/Day9/main.py @@ -0,0 +1,36 @@ +def Part1(): + for i in range(len(raw)): + isSum = False + if i >= 25: + last = [] + for roUnUdL in range(1, 26): + last.append(int(raw[i - roUnUdL])) + + for j in last: + for k in last: + if j + k == int(raw[i]): + isSum = True + + if not isSum: + return int(raw[i]) + + +if __name__ == '__main__': + raw = [] + with open("input.txt") as f: + for i in f.read().splitlines(): + raw.append(int(i)) + + invalid = Part1() + beg = 0 + end = 0 + while end <= len(raw): + nums = raw[beg:end] + sumNums = sum(nums) + if sumNums == invalid: + print(max(nums) + min(nums)) + exit() + elif sumNums > invalid: + beg += 1 + elif sumNums < invalid: + end += 1 diff --git a/2021/Day1/Day1.py b/2021/Day1/Day1.py new file mode 100644 index 0000000..cd42457 --- /dev/null +++ b/2021/Day1/Day1.py @@ -0,0 +1,26 @@ +if __name__ == '__main__': + with open('input.txt', 'r') as f: + input_data = f.readlines() + + input_data = [int(x) for x in input_data] + + # Part 1 + sol = 0 + for i in range(len(input_data)): + if i>0 and input_data[i] > input_data[i-1]: + sol+=1 + + print(sol) + + # Part 2 + windows = [] + sol = 0 + for i in range(len(input_data)): + if i < len(input_data)-2: + windows.append(sum(input_data[i:i+3])) + + for i in range(len(windows)): + if i>0 and windows[i] > windows[i-1]: + sol+=1 + + print(sol) \ No newline at end of file diff --git a/2021/Day1/input.txt b/2021/Day1/input.txt new file mode 100644 index 0000000..62dc8f5 --- /dev/null +++ b/2021/Day1/input.txt @@ -0,0 +1,2000 @@ +183 +185 +186 +182 +185 +191 +204 +203 +205 +220 +215 +208 +216 +217 +218 +219 +210 +226 +227 +231 +245 +243 +255 +257 +250 +255 +286 +287 +286 +293 +294 +296 +299 +316 +322 +330 +332 +337 +340 +341 +339 +348 +349 +350 +351 +354 +357 +359 +360 +361 +363 +364 +365 +372 +373 +371 +374 +375 +379 +383 +384 +383 +388 +390 +395 +397 +410 +412 +411 +414 +411 +432 +426 +429 +437 +438 +462 +463 +464 +477 +480 +497 +516 +524 +536 +547 +550 +555 +557 +556 +565 +566 +567 +574 +575 +583 +585 +594 +596 +617 +621 +616 +613 +616 +618 +614 +615 +618 +619 +621 +616 +644 +649 +650 +655 +658 +657 +658 +661 +668 +647 +651 +657 +654 +656 +657 +658 +666 +676 +686 +692 +701 +706 +705 +706 +697 +701 +670 +663 +667 +668 +676 +677 +676 +692 +714 +715 +734 +768 +785 +824 +829 +845 +844 +847 +860 +865 +880 +893 +895 +899 +900 +902 +905 +906 +907 +906 +902 +912 +927 +928 +945 +952 +953 +961 +969 +970 +974 +975 +976 +980 +989 +990 +993 +1006 +1008 +1009 +1010 +1012 +1013 +1014 +1017 +1024 +1038 +1058 +1059 +1065 +1066 +1070 +1083 +1085 +1086 +1094 +1097 +1102 +1121 +1122 +1137 +1138 +1145 +1148 +1159 +1170 +1171 +1172 +1179 +1175 +1179 +1178 +1190 +1196 +1215 +1220 +1209 +1213 +1214 +1209 +1211 +1251 +1255 +1269 +1272 +1273 +1284 +1286 +1312 +1314 +1317 +1321 +1341 +1357 +1365 +1366 +1369 +1379 +1359 +1332 +1342 +1362 +1365 +1375 +1378 +1379 +1381 +1387 +1397 +1401 +1400 +1401 +1429 +1453 +1454 +1455 +1461 +1466 +1467 +1463 +1475 +1489 +1488 +1496 +1506 +1515 +1538 +1545 +1538 +1544 +1553 +1555 +1558 +1567 +1573 +1577 +1582 +1583 +1585 +1586 +1585 +1586 +1601 +1613 +1612 +1630 +1632 +1631 +1638 +1642 +1655 +1656 +1613 +1615 +1620 +1611 +1609 +1615 +1617 +1621 +1624 +1634 +1639 +1644 +1655 +1678 +1681 +1683 +1695 +1698 +1708 +1709 +1712 +1713 +1717 +1743 +1744 +1747 +1781 +1782 +1799 +1803 +1804 +1806 +1808 +1825 +1830 +1831 +1833 +1848 +1849 +1851 +1853 +1858 +1857 +1865 +1867 +1886 +1888 +1892 +1902 +1923 +1925 +1930 +1931 +1910 +1916 +1922 +1924 +1925 +1930 +1918 +1925 +1926 +1929 +1934 +1932 +1926 +1932 +1931 +1950 +1952 +1953 +1964 +1965 +1967 +1977 +1979 +1983 +1993 +1994 +1996 +2005 +2020 +2032 +2033 +2039 +2040 +2041 +2045 +2058 +2059 +2061 +2063 +2086 +2089 +2097 +2095 +2101 +2102 +2105 +2106 +2100 +2113 +2158 +2160 +2162 +2164 +2165 +2172 +2174 +2176 +2183 +2184 +2190 +2189 +2212 +2225 +2233 +2192 +2194 +2215 +2222 +2223 +2233 +2241 +2243 +2235 +2246 +2287 +2292 +2297 +2298 +2299 +2300 +2306 +2308 +2318 +2322 +2333 +2332 +2312 +2309 +2313 +2297 +2306 +2323 +2336 +2339 +2322 +2323 +2327 +2332 +2351 +2361 +2363 +2364 +2365 +2371 +2395 +2393 +2394 +2423 +2435 +2438 +2443 +2444 +2450 +2449 +2453 +2456 +2457 +2456 +2462 +2463 +2477 +2478 +2484 +2485 +2498 +2499 +2497 +2498 +2499 +2501 +2502 +2505 +2518 +2521 +2522 +2520 +2521 +2523 +2529 +2530 +2528 +2544 +2545 +2546 +2547 +2590 +2612 +2620 +2631 +2634 +2633 +2634 +2635 +2661 +2663 +2667 +2670 +2676 +2678 +2654 +2664 +2665 +2671 +2681 +2684 +2711 +2725 +2726 +2728 +2729 +2734 +2735 +2740 +2759 +2758 +2762 +2763 +2765 +2768 +2749 +2750 +2752 +2758 +2728 +2732 +2749 +2748 +2763 +2766 +2767 +2769 +2764 +2765 +2768 +2769 +2772 +2758 +2777 +2788 +2811 +2815 +2820 +2824 +2832 +2839 +2841 +2839 +2840 +2869 +2872 +2847 +2857 +2858 +2860 +2865 +2855 +2851 +2866 +2870 +2871 +2872 +2878 +2894 +2899 +2900 +2907 +2913 +2905 +2916 +2917 +2916 +2913 +2919 +2933 +2935 +2940 +2945 +2953 +2965 +2976 +2986 +2990 +3013 +3017 +3004 +2997 +2998 +2999 +3000 +2995 +2996 +2997 +2998 +3006 +3008 +3019 +3022 +3024 +3025 +3026 +3027 +3028 +3031 +3033 +3038 +3042 +3079 +3080 +3087 +3117 +3119 +3120 +3121 +3122 +3123 +3130 +3135 +3130 +3132 +3134 +3153 +3167 +3168 +3173 +3178 +3180 +3189 +3190 +3209 +3242 +3246 +3259 +3265 +3269 +3275 +3279 +3285 +3301 +3318 +3315 +3324 +3328 +3330 +3352 +3354 +3351 +3358 +3392 +3393 +3416 +3417 +3421 +3420 +3441 +3458 +3476 +3481 +3491 +3510 +3512 +3515 +3550 +3551 +3555 +3557 +3586 +3604 +3609 +3616 +3623 +3626 +3606 +3627 +3636 +3637 +3640 +3626 +3635 +3644 +3661 +3665 +3667 +3665 +3671 +3674 +3684 +3688 +3689 +3693 +3720 +3728 +3731 +3730 +3733 +3737 +3751 +3753 +3754 +3755 +3760 +3762 +3765 +3769 +3770 +3769 +3774 +3753 +3755 +3758 +3787 +3801 +3800 +3826 +3840 +3843 +3857 +3858 +3859 +3862 +3901 +3911 +3913 +3915 +3916 +3914 +3896 +3924 +3925 +3927 +3929 +3931 +3935 +3936 +3944 +3945 +3943 +3946 +3948 +3949 +3966 +3967 +3956 +3964 +3971 +3981 +3988 +3989 +3992 +4000 +4007 +4009 +4010 +4018 +4019 +4020 +4021 +4022 +4037 +4025 +4026 +4024 +4025 +4026 +4025 +4028 +4021 +4010 +4038 +4039 +4041 +4042 +4030 +4027 +4000 +4001 +4012 +4013 +4021 +4022 +4023 +4036 +4037 +4051 +4047 +4054 +4057 +4064 +4056 +4040 +4042 +4045 +4060 +4061 +4065 +4066 +4058 +4061 +4058 +4060 +4061 +4065 +4066 +4060 +4062 +4054 +4055 +4056 +4078 +4083 +4084 +4098 +4101 +4102 +4079 +4089 +4106 +4111 +4112 +4147 +4157 +4158 +4165 +4174 +4178 +4183 +4184 +4196 +4197 +4202 +4200 +4202 +4209 +4221 +4225 +4233 +4239 +4240 +4234 +4236 +4249 +4250 +4252 +4253 +4254 +4253 +4254 +4267 +4272 +4281 +4256 +4255 +4256 +4258 +4264 +4265 +4264 +4266 +4270 +4271 +4273 +4284 +4292 +4293 +4292 +4293 +4294 +4295 +4303 +4304 +4309 +4310 +4311 +4313 +4314 +4317 +4322 +4324 +4328 +4322 +4345 +4347 +4354 +4348 +4349 +4352 +4368 +4378 +4385 +4391 +4407 +4416 +4417 +4436 +4439 +4438 +4427 +4436 +4437 +4451 +4452 +4456 +4462 +4464 +4465 +4466 +4475 +4486 +4498 +4499 +4501 +4502 +4511 +4521 +4524 +4525 +4528 +4531 +4535 +4540 +4542 +4544 +4543 +4544 +4558 +4580 +4581 +4582 +4583 +4585 +4596 +4597 +4590 +4597 +4598 +4631 +4649 +4650 +4661 +4662 +4666 +4657 +4661 +4668 +4661 +4663 +4664 +4687 +4697 +4710 +4735 +4742 +4764 +4765 +4774 +4763 +4786 +4787 +4805 +4806 +4808 +4809 +4810 +4838 +4844 +4845 +4877 +4881 +4898 +4899 +4912 +4914 +4915 +4931 +4932 +4946 +4952 +4951 +4952 +4958 +4964 +4972 +4967 +4968 +4966 +4973 +4974 +4979 +4980 +4990 +5008 +5012 +5013 +5019 +5011 +5012 +5013 +5014 +5016 +5032 +5035 +5034 +5035 +5041 +5061 +5062 +5064 +5076 +5094 +5076 +5078 +5080 +5083 +5095 +5094 +5097 +5096 +5106 +5108 +5111 +5115 +5125 +5129 +5136 +5137 +5142 +5156 +5158 +5168 +5170 +5175 +5178 +5191 +5189 +5190 +5198 +5200 +5207 +5206 +5207 +5196 +5226 +5227 +5228 +5235 +5261 +5262 +5266 +5271 +5272 +5273 +5287 +5288 +5294 +5316 +5324 +5325 +5322 +5331 +5329 +5330 +5331 +5335 +5350 +5366 +5372 +5373 +5375 +5377 +5391 +5392 +5393 +5395 +5398 +5407 +5420 +5416 +5420 +5413 +5414 +5420 +5423 +5435 +5439 +5446 +5453 +5478 +5502 +5505 +5507 +5522 +5525 +5527 +5528 +5530 +5543 +5546 +5549 +5553 +5557 +5559 +5560 +5561 +5578 +5560 +5556 +5565 +5566 +5577 +5584 +5586 +5591 +5595 +5596 +5604 +5571 +5578 +5580 +5582 +5583 +5588 +5591 +5590 +5596 +5601 +5604 +5602 +5596 +5628 +5644 +5645 +5647 +5648 +5649 +5655 +5662 +5664 +5672 +5680 +5691 +5702 +5703 +5709 +5712 +5729 +5732 +5747 +5746 +5755 +5777 +5768 +5746 +5747 +5751 +5746 +5751 +5774 +5775 +5782 +5785 +5791 +5798 +5805 +5807 +5808 +5827 +5847 +5856 +5828 +5820 +5807 +5811 +5825 +5826 +5828 +5827 +5851 +5852 +5856 +5855 +5856 +5859 +5857 +5858 +5863 +5879 +5881 +5887 +5907 +5913 +5914 +5919 +5940 +5951 +5964 +5989 +5991 +5993 +5979 +5989 +5990 +6004 +6005 +6004 +6006 +6008 +6009 +6006 +6005 +6006 +5977 +5978 +5979 +5983 +5984 +5987 +5988 +5966 +5965 +5970 +5961 +5968 +5969 +5982 +5997 +6006 +6007 +6021 +6025 +6028 +6030 +6033 +6034 +6035 +6039 +6040 +6053 +6062 +6094 +6097 +6099 +6104 +6109 +6125 +6126 +6137 +6133 +6151 +6174 +6173 +6175 +6180 +6181 +6182 +6184 +6185 +6189 +6190 +6189 +6191 +6192 +6224 +6228 +6229 +6237 +6231 +6236 +6239 +6250 +6264 +6265 +6253 +6262 +6263 +6268 +6269 +6274 +6275 +6276 +6278 +6321 +6322 +6343 +6332 +6348 +6352 +6359 +6368 +6371 +6372 +6390 +6391 +6393 +6398 +6412 +6423 +6424 +6438 +6441 +6445 +6447 +6458 +6473 +6485 +6489 +6517 +6519 +6529 +6531 +6532 +6533 +6543 +6547 +6548 +6547 +6549 +6551 +6553 +6554 +6565 +6566 +6576 +6578 +6584 +6614 +6617 +6620 +6622 +6623 +6625 +6638 +6643 +6660 +6662 +6664 +6637 +6635 +6633 +6638 +6652 +6649 +6666 +6680 +6662 +6681 +6683 +6694 +6695 +6699 +6705 +6707 +6714 +6722 +6728 +6729 +6736 +6746 +6750 +6761 +6763 +6754 +6757 +6759 +6763 +6762 +6763 +6764 +6766 +6790 +6808 +6813 +6815 +6816 +6818 +6819 +6820 +6828 +6826 +6829 +6832 +6854 +6857 +6865 +6861 +6865 +6889 +6890 +6904 +6903 +6905 +6906 +6934 +6935 +6944 +6949 +6951 +6962 +6963 +6972 +6977 +6974 +6973 +6975 +7010 +7009 +7011 +7041 +7044 +7057 +7077 +7094 +7090 +7098 +7096 +7088 +7098 +7115 +7118 +7124 +7146 +7165 +7168 +7176 +7190 +7213 +7201 +7202 +7217 +7222 +7243 +7244 +7248 +7250 +7259 +7255 +7253 +7254 +7260 +7271 +7281 +7293 +7311 +7317 +7323 +7324 +7337 +7346 +7349 +7372 +7367 +7374 +7379 +7389 +7381 +7388 +7389 +7396 +7413 +7415 +7417 +7418 +7428 +7430 +7433 +7434 +7423 +7426 +7427 +7419 +7420 +7421 +7422 +7428 +7429 +7434 +7442 +7445 +7414 +7417 +7419 +7421 +7422 +7425 +7428 +7429 +7435 +7444 +7456 +7459 +7462 +7460 +7475 +7482 +7494 +7493 +7497 +7498 +7513 +7514 +7522 +7524 +7525 +7529 +7531 +7537 +7519 +7521 +7528 +7541 +7542 +7543 +7545 +7546 +7547 +7548 +7550 +7560 +7561 +7563 +7533 +7537 +7539 +7542 +7554 +7556 +7560 +7562 +7566 +7594 +7615 +7626 +7631 +7626 +7627 +7626 +7628 +7636 +7641 +7642 +7643 +7654 +7671 +7675 +7674 +7680 +7681 +7682 +7687 +7693 +7687 +7689 +7694 +7697 +7709 +7730 +7727 +7729 +7733 +7734 +7740 +7750 +7752 +7743 +7750 +7760 +7791 +7801 +7802 +7804 +7806 +7807 +7835 +7834 +7835 +7838 +7841 +7842 +7836 +7837 +7845 +7851 +7863 +7864 +7893 +7894 +7904 +7908 +7909 +7910 +7911 +7910 +7912 +7914 +7918 +7919 +7921 +7936 +7948 +7950 +7952 +7956 +7967 +7973 +7979 +7978 +7979 +7978 +7981 +7982 +7985 +7988 +7989 +7997 +7999 +8007 +8006 +8007 +8016 +8017 +8041 +8020 +8031 +8032 +8033 +8032 +8038 +8039 +8040 +8054 +8055 +8056 +8063 +8062 +8063 +8064 +8055 +8060 +8061 +8068 +8077 +8070 +8074 +8078 +8091 +8105 +8104 +8105 +8104 +8102 +8103 +8112 +8115 +8149 +8147 +8150 +8151 +8170 +8171 +8174 +8175 +8182 +8214 +8189 +8204 +8206 +8213 +8218 +8192 +8182 +8179 +8178 +8181 +8183 +8202 +8209 +8210 +8213 +8217 +8234 +8235 +8239 +8240 +8242 +8223 +8218 +8233 +8236 +8247 +8249 +8252 +8253 +8259 +8276 +8299 +8303 +8309 +8310 +8315 +8321 +8319 +8321 +8323 +8324 +8325 +8335 +8333 +8335 +8334 +8335 +8336 +8352 +8360 +8367 +8370 +8371 +8374 +8386 +8388 +8399 +8402 +8403 +8404 +8405 +8409 +8446 +8449 +8469 +8470 +8471 +8469 +8460 +8463 +8485 +8482 +8470 +8472 +8455 +8454 +8447 +8448 +8450 +8462 +8463 +8476 +8507 +8510 +8518 +8527 +8539 +8550 +8561 +8559 +8562 +8577 +8581 +8607 +8620 +8628 +8629 +8627 +8636 +8644 +8637 +8655 +8656 +8692 +8719 +8720 +8721 +8738 +8741 +8742 +8744 +8747 +8737 +8735 +8736 +8743 +8749 +8758 +8761 +8763 +8794 +8793 +8804 +8807 +8808 +8806 +8831 +8841 +8832 +8835 +8843 +8825 +8826 +8840 +8844 +8845 +8855 +8858 +8879 +8882 +8893 +8895 +8900 +8906 +8917 +8921 +8922 +8931 +8932 +8934 +8937 +8939 +8955 +8949 +8950 +8952 +8953 +8963 +8964 +8989 +8993 +8998 +9002 +8999 +9001 +9002 +9016 +9024 +9029 +9032 +9031 +9039 +9049 +9030 +9033 +9035 +9036 +9044 +9051 +9052 +9057 +9067 +9092 +9101 +9123 +9130 +9124 +9133 +9143 +9149 +9172 +9173 +9178 +9193 +9184 +9189 +9169 +9186 +9187 +9189 +9195 +9197 +9198 +9196 +9218 +9219 +9235 +9267 +9271 +9273 +9278 +9289 +9290 +9307 +9319 +9324 +9328 +9342 +9343 +9344 +9348 +9360 +9366 +9373 +9397 +9392 +9393 +9409 +9411 +9409 +9421 +9430 +9451 +9452 +9453 +9456 +9457 +9466 +9467 +9470 +9496 +9500 +9515 +9518 +9514 +9534 +9541 +9542 +9545 +9551 +9583 +9581 +9573 +9588 +9601 +9591 +9592 +9593 +9600 +9599 +9605 +9610 +9612 +9614 +9627 +9629 +9630 +9636 +9637 +9638 +9639 +9640 +9643 +9635 +9637 +9645 +9649 +9650 +9647 +9648 +9652 +9653 +9663 +9656 +9661 +9687 +9688 +9689 +9690 +9694 +9695 +9702 +9703 +9705 +9711 +9714 +9718 +9742 +9768 +9747 +9757 +9758 +9768 +9771 +9768 +9772 +9779 +9780 +9785 +9804 +9805 +9803 +9801 +9802 +9810 +9816 +9820 +9810 +9815 +9816 +9823 +9824 +9830 +9831 +9841 +9860 +9875 \ No newline at end of file diff --git a/2021/Day10/Day10.py b/2021/Day10/Day10.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day10/input.txt b/2021/Day10/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day11/Day11.py b/2021/Day11/Day11.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day11/input.txt b/2021/Day11/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day12/Day12.py b/2021/Day12/Day12.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day12/input.txt b/2021/Day12/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day13/Day13.py b/2021/Day13/Day13.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day13/input.txt b/2021/Day13/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day14/Day14.py b/2021/Day14/Day14.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day14/input.txt b/2021/Day14/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day15/Day15.py b/2021/Day15/Day15.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day15/input.txt b/2021/Day15/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day16/Day16.py b/2021/Day16/Day16.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day16/input.txt b/2021/Day16/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day17/Day17.py b/2021/Day17/Day17.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day17/input.txt b/2021/Day17/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day18/Day18.py b/2021/Day18/Day18.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day18/input.txt b/2021/Day18/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day19/Day19.py b/2021/Day19/Day19.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day19/input.txt b/2021/Day19/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day2/Day2.py b/2021/Day2/Day2.py new file mode 100644 index 0000000..03a97fc --- /dev/null +++ b/2021/Day2/Day2.py @@ -0,0 +1,51 @@ +def part1(): + answer = 0 + horizontal = 0 + depth = 0 + + with open("input.txt", "r") as f: + input = f.readlines() + + for line in input: + line = line.strip() + line = line.split(" ") + val = int(line[1]) + + if line[0] == "forward": + horizontal += val + if line[0] == "up": + depth -= val + if line[0] == "down": + depth += val + answer = horizontal*depth + return answer + + +def part2(): + answer = 0 + horizontal = 0 + aim = 0 + depth = 0 + + with open("input.txt", "r") as f: + input = f.readlines() + + for line in input: + line = line.strip() + line = line.split(" ") + val = int(line[1]) + + if line[0] == "forward": + horizontal += val + depth += val*aim + if line[0] == "up": + aim -= val + if line[0] == "down": + aim += val + answer = horizontal*depth + return answer + + +if __name__ == '__main__': + print(part1()) + print(part2()) diff --git a/2021/Day2/input.txt b/2021/Day2/input.txt new file mode 100644 index 0000000..4ef8385 --- /dev/null +++ b/2021/Day2/input.txt @@ -0,0 +1,1000 @@ +forward 2 +forward 5 +forward 5 +down 4 +forward 8 +down 1 +forward 2 +forward 2 +down 9 +down 2 +forward 6 +forward 3 +down 9 +down 2 +forward 4 +up 2 +forward 7 +up 6 +forward 8 +forward 4 +up 5 +forward 3 +down 9 +forward 5 +forward 8 +forward 6 +forward 6 +forward 8 +forward 8 +forward 5 +down 2 +forward 8 +down 4 +down 6 +down 6 +forward 7 +forward 6 +up 3 +up 5 +down 5 +down 3 +up 2 +down 7 +down 2 +forward 1 +forward 6 +up 1 +down 7 +forward 8 +down 7 +down 6 +forward 5 +up 6 +forward 9 +down 9 +up 3 +down 6 +down 1 +forward 6 +up 1 +down 1 +up 3 +up 7 +forward 1 +down 5 +forward 7 +forward 3 +down 9 +up 8 +forward 1 +down 4 +up 1 +forward 9 +forward 7 +down 2 +forward 8 +down 2 +down 5 +down 2 +up 1 +down 5 +forward 4 +forward 8 +forward 3 +forward 3 +forward 1 +down 1 +forward 1 +down 7 +up 7 +down 3 +down 1 +down 7 +down 4 +forward 7 +forward 5 +down 9 +down 5 +forward 3 +up 7 +down 2 +up 1 +forward 1 +forward 2 +down 7 +down 3 +forward 7 +up 4 +forward 3 +up 8 +down 9 +down 4 +forward 5 +forward 6 +down 3 +down 5 +down 4 +down 9 +down 8 +forward 6 +down 3 +down 1 +down 9 +down 6 +forward 9 +forward 2 +up 5 +forward 5 +forward 4 +down 9 +up 7 +up 2 +forward 1 +forward 8 +forward 6 +up 8 +down 9 +down 2 +forward 7 +down 6 +forward 7 +up 9 +up 7 +down 8 +up 1 +forward 2 +forward 9 +down 9 +forward 6 +down 2 +down 1 +up 3 +forward 4 +down 3 +down 4 +down 9 +up 8 +up 8 +forward 3 +up 7 +forward 9 +forward 7 +up 2 +up 8 +forward 2 +down 6 +forward 3 +forward 1 +down 7 +down 2 +forward 9 +forward 9 +down 3 +forward 2 +forward 8 +down 6 +forward 6 +forward 5 +forward 1 +forward 6 +down 8 +down 7 +up 9 +down 6 +up 7 +down 2 +up 8 +up 8 +down 3 +down 7 +up 2 +up 2 +down 6 +down 6 +forward 2 +down 6 +forward 8 +forward 9 +down 3 +forward 6 +down 9 +forward 1 +up 6 +down 3 +up 5 +forward 9 +forward 7 +forward 9 +forward 5 +up 6 +down 3 +down 3 +down 3 +forward 1 +up 5 +forward 3 +forward 2 +down 1 +forward 7 +down 1 +forward 6 +forward 5 +forward 9 +up 6 +forward 1 +up 8 +down 7 +forward 6 +forward 3 +forward 1 +up 6 +forward 4 +up 6 +down 7 +forward 8 +forward 4 +forward 6 +forward 5 +up 6 +down 7 +up 9 +down 7 +forward 3 +down 7 +forward 6 +down 6 +down 6 +forward 8 +up 8 +forward 8 +forward 2 +down 8 +forward 4 +forward 9 +forward 7 +down 4 +down 7 +forward 4 +forward 3 +forward 2 +forward 2 +forward 5 +down 6 +forward 1 +forward 6 +up 8 +up 3 +up 9 +forward 3 +up 8 +forward 3 +up 8 +down 9 +up 7 +forward 9 +forward 1 +down 7 +forward 9 +down 6 +forward 4 +down 3 +up 9 +forward 5 +down 4 +up 6 +down 1 +up 9 +forward 2 +up 2 +down 1 +forward 7 +down 6 +down 4 +down 7 +down 4 +down 8 +up 9 +down 6 +up 3 +down 7 +forward 3 +forward 1 +down 1 +forward 2 +forward 6 +down 6 +forward 5 +down 8 +down 8 +down 6 +down 9 +forward 6 +forward 7 +up 8 +forward 5 +up 8 +down 6 +up 3 +forward 9 +up 9 +forward 2 +up 6 +forward 2 +down 8 +forward 3 +down 5 +down 8 +up 6 +down 3 +down 7 +down 4 +forward 5 +forward 8 +down 8 +forward 6 +down 8 +up 1 +forward 5 +down 3 +down 2 +up 1 +forward 3 +forward 7 +forward 6 +forward 9 +up 8 +down 2 +down 1 +down 7 +forward 4 +forward 2 +down 9 +down 3 +down 5 +up 6 +down 2 +forward 8 +up 1 +up 5 +down 6 +down 7 +forward 3 +down 4 +up 6 +down 9 +up 6 +down 2 +down 2 +down 6 +down 3 +forward 9 +down 6 +forward 5 +forward 6 +forward 4 +down 6 +forward 3 +down 9 +up 8 +forward 2 +up 3 +forward 1 +up 8 +forward 1 +down 6 +down 3 +forward 5 +forward 4 +down 9 +up 3 +down 6 +forward 4 +down 8 +down 3 +down 7 +forward 1 +forward 2 +forward 8 +down 2 +down 6 +up 9 +forward 2 +forward 4 +forward 8 +down 3 +forward 9 +down 7 +up 8 +forward 1 +down 6 +down 3 +forward 5 +forward 5 +forward 2 +down 2 +down 2 +down 2 +up 4 +forward 2 +forward 5 +forward 1 +forward 5 +down 3 +forward 8 +up 1 +forward 9 +up 5 +forward 2 +down 4 +forward 8 +forward 9 +up 6 +up 1 +down 7 +down 3 +forward 9 +down 3 +down 3 +forward 3 +forward 6 +up 4 +forward 2 +down 9 +forward 5 +forward 3 +forward 5 +down 6 +up 6 +down 7 +forward 2 +down 4 +forward 6 +forward 5 +forward 8 +down 4 +up 3 +up 4 +down 9 +forward 9 +down 7 +down 1 +down 9 +down 6 +down 8 +forward 7 +down 3 +up 3 +up 5 +forward 5 +up 6 +down 6 +forward 9 +down 7 +forward 6 +up 1 +forward 7 +forward 8 +down 9 +down 1 +forward 4 +up 2 +down 3 +up 3 +down 6 +forward 6 +down 7 +down 2 +forward 8 +forward 2 +forward 3 +forward 5 +up 8 +up 6 +down 1 +up 7 +down 1 +down 8 +forward 5 +up 7 +down 1 +forward 8 +down 6 +down 2 +up 7 +down 1 +forward 1 +up 8 +forward 5 +down 7 +down 8 +forward 4 +down 6 +down 2 +forward 4 +forward 7 +down 5 +down 1 +down 8 +down 3 +up 8 +down 6 +down 1 +down 1 +forward 4 +down 8 +up 5 +forward 3 +forward 3 +forward 5 +forward 8 +up 7 +forward 5 +down 8 +forward 9 +up 9 +forward 1 +down 2 +up 9 +down 7 +up 1 +up 3 +forward 9 +forward 8 +forward 3 +forward 8 +down 8 +down 5 +down 7 +up 7 +forward 9 +up 8 +down 9 +down 9 +down 1 +up 4 +up 4 +up 3 +forward 3 +down 7 +down 3 +forward 5 +up 9 +down 3 +up 2 +forward 1 +forward 4 +up 9 +forward 6 +down 6 +down 6 +forward 2 +forward 2 +down 4 +forward 9 +up 6 +down 8 +down 8 +down 9 +up 4 +down 9 +down 3 +down 7 +forward 4 +up 4 +up 5 +down 2 +up 2 +forward 1 +up 8 +forward 2 +down 6 +forward 9 +down 9 +forward 9 +up 8 +down 5 +up 3 +up 9 +down 8 +forward 6 +forward 2 +forward 7 +down 9 +down 8 +up 9 +down 5 +up 5 +down 1 +forward 3 +down 2 +down 5 +down 4 +down 1 +down 5 +down 5 +down 5 +forward 8 +down 2 +down 3 +down 4 +down 2 +up 8 +up 1 +down 5 +forward 8 +down 6 +forward 9 +down 6 +down 6 +down 5 +forward 5 +forward 3 +forward 7 +down 6 +forward 4 +down 8 +up 9 +up 6 +forward 5 +down 4 +forward 8 +forward 1 +forward 8 +up 5 +up 5 +forward 6 +down 3 +down 7 +up 7 +down 5 +forward 1 +forward 3 +up 3 +down 3 +down 3 +down 5 +forward 9 +down 2 +up 5 +up 2 +forward 1 +down 1 +forward 5 +down 8 +forward 8 +forward 9 +forward 3 +forward 2 +forward 4 +down 5 +up 1 +down 5 +up 1 +up 4 +forward 2 +forward 4 +down 6 +up 2 +up 4 +forward 4 +down 7 +forward 2 +up 1 +forward 4 +up 4 +forward 9 +down 1 +down 4 +up 1 +forward 2 +forward 3 +down 6 +forward 9 +forward 3 +down 2 +forward 9 +up 4 +forward 5 +forward 2 +down 2 +forward 5 +down 5 +down 3 +down 7 +down 7 +up 3 +down 7 +forward 9 +forward 7 +up 4 +forward 7 +up 8 +down 8 +forward 5 +down 2 +down 9 +up 8 +forward 4 +forward 4 +forward 2 +up 4 +down 5 +forward 3 +forward 6 +forward 5 +forward 3 +forward 7 +up 9 +forward 1 +forward 2 +up 7 +down 4 +forward 8 +down 2 +forward 1 +down 1 +down 9 +up 2 +down 2 +forward 8 +forward 5 +up 9 +forward 5 +down 2 +forward 2 +down 7 +forward 5 +down 1 +forward 9 +forward 8 +forward 8 +forward 9 +forward 8 +down 9 +forward 8 +down 1 +down 2 +down 9 +up 2 +forward 8 +forward 8 +down 9 +forward 8 +up 8 +forward 2 +down 5 +up 3 +forward 2 +up 3 +down 6 +forward 5 +up 7 +forward 2 +forward 7 +forward 7 +down 8 +forward 3 +up 5 +down 8 +down 3 +down 8 +up 6 +down 6 +up 4 +forward 7 +up 6 +up 1 +down 5 +up 8 +forward 8 +forward 9 +down 8 +forward 6 +down 8 +down 9 +down 8 +forward 9 +up 1 +down 1 +down 8 +down 5 +down 2 +up 7 +forward 4 +down 4 +forward 6 +down 1 +forward 5 +forward 3 +forward 9 +up 8 +down 4 +down 6 +down 4 +down 1 +up 9 +forward 9 +down 9 +forward 7 +down 2 +down 8 +forward 2 +forward 5 +down 6 +down 1 +down 1 +up 3 +forward 9 +up 7 +down 1 +down 6 +forward 6 +up 2 +down 4 +down 7 +forward 3 +down 9 +down 1 +forward 7 +forward 2 +forward 6 +down 4 +forward 7 +forward 8 +forward 3 +forward 7 +up 8 +forward 5 +up 8 +down 8 +forward 3 +forward 8 +forward 7 +forward 3 +down 4 +forward 9 +forward 4 +up 6 +forward 4 +forward 6 +up 4 +forward 6 +forward 2 +down 3 +down 3 +down 4 +down 1 +down 9 +up 1 +up 9 +down 7 +up 9 +forward 5 +down 2 +up 7 +forward 9 +up 1 +down 5 +up 8 +forward 9 +down 1 +up 3 +forward 3 +forward 9 +up 7 +forward 3 +down 7 +forward 3 +forward 5 +forward 4 +up 3 +forward 3 +down 8 +forward 7 +up 5 +forward 9 +down 6 +up 6 +up 1 +forward 8 +down 9 +forward 9 +forward 9 +down 5 +down 7 +forward 7 +down 5 +down 3 +forward 4 +up 6 +forward 6 +forward 2 +down 8 +down 6 +forward 1 +forward 1 +down 6 +forward 1 +down 6 +down 2 +forward 1 +forward 6 +up 4 +up 7 +up 3 +down 6 +forward 1 +forward 9 +forward 4 +down 4 +forward 3 +down 8 +down 6 +down 6 +forward 2 +forward 8 +forward 6 +down 4 +up 2 +down 1 +up 4 +down 8 +forward 9 +down 4 +down 8 +up 8 +forward 2 +up 9 +down 9 +forward 2 +down 8 +forward 3 +down 1 +up 9 +forward 6 +down 9 +forward 2 +down 2 +up 5 +down 4 +down 5 +down 7 +forward 4 +down 4 +forward 6 +forward 2 +down 8 +up 3 +up 9 +forward 3 +forward 6 +down 6 +down 2 +down 5 +down 4 +forward 1 +up 2 +down 3 +forward 6 +forward 5 +down 4 +down 3 +forward 2 +forward 4 +down 9 +down 3 +down 4 +up 6 +forward 8 +up 2 +up 8 +up 4 +forward 7 +forward 5 +forward 9 +down 6 +forward 7 +forward 9 +up 3 +forward 6 \ No newline at end of file diff --git a/2021/Day20/Day20.py b/2021/Day20/Day20.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day20/input.txt b/2021/Day20/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day21/Day21.py b/2021/Day21/Day21.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day21/input.txt b/2021/Day21/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day22/Day22.py b/2021/Day22/Day22.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day22/input.txt b/2021/Day22/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day23/Day23.py b/2021/Day23/Day23.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day23/input.txt b/2021/Day23/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day24/Day24.py b/2021/Day24/Day24.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day24/input.txt b/2021/Day24/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day25/Day25.py b/2021/Day25/Day25.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day25/input.txt b/2021/Day25/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day3/Day3.py b/2021/Day3/Day3.py new file mode 100644 index 0000000..cf3f8d6 --- /dev/null +++ b/2021/Day3/Day3.py @@ -0,0 +1,100 @@ +import copy + + +def part1(): + with open('input.txt', 'r') as f: + lines = f.readlines() + + onesNeeded = len(lines) / 2 + gamma = "" + eps = "" + + onesInBinaries = countOnesInBinaries(lines) + + for i in range(len(onesInBinaries)): + if onesInBinaries[i] >= onesNeeded: + gamma += "1" + eps += "0" + else: + gamma += "0" + eps += "1" + + return int(gamma, 2) * int(eps, 2) + + +def part2(): + with open('input.txt', 'r') as f: + lines = f.readlines() + + co2 = copy.deepcopy(lines) + + onesInBinaries = countOnesInBinaries(lines) + currpops = [] + + for i in range(len(lines[0].strip())): + for j in range(len(lines)): + onesNeeded = len(lines) / 2 + line = lines[j].strip() + if onesInBinaries[i] >= onesNeeded: + if line[i] == "0": + currpops.append(j) + # lines.pop(j) + else: + if line[i] == "1": + # lines.pop(j) + currpops.append(j) + + if not len(currpops) is len(lines): + currpops.reverse() + for j in currpops: + lines.pop(j) + currpops = [] + else: + lines = lines[-1] + + if len(lines) == 1: + break + + for i in range(len(co2[0].strip())): + for j in range(len(lines)): + onesNeeded = len(lines) / 2 + line = co2[j].strip() + if onesInBinaries[i] >= onesNeeded: + if line[i] == "1": + currpops.append(j) + # co2.pop(j) + else: + if line[i] == "0": + # co2.pop(j) + currpops.append(j) + + if not len(currpops) is len(co2): + currpops.reverse() + for j in currpops: + co2.pop(j) + currpops = [] + else: + co2 = co2[-1] + + if len(co2) == 1: + break + + return int(co2[0].strip(), 2) * int(lines[0].strip(), 2) + + +def countOnesInBinaries(lines): + onesInBinaries = [0 for _ in range(len(lines[0]) - 1)] + + for line in lines: + line = line.strip() + for i in range(len(line)): + num = int(line[i]) + if num == 1: + onesInBinaries[i] += 1 + + return onesInBinaries + + +if __name__ == '__main__': + print(part1()) + print(part2()) diff --git a/2021/Day3/input.txt b/2021/Day3/input.txt new file mode 100644 index 0000000..138300b --- /dev/null +++ b/2021/Day3/input.txt @@ -0,0 +1,1000 @@ +110001010110 +011101111101 +111011110101 +011110101000 +100100011001 +011001001110 +101011000101 +110000111111 +110110101000 +010101101000 +001101001101 +111000001011 +111000011010 +001111001000 +100110001111 +111100110100 +100000010101 +001110100000 +100111110110 +100110000110 +111100101101 +100101010100 +011100010011 +111010110000 +110100011110 +111010101100 +111001001101 +110001110100 +100110111011 +101111111011 +011100111000 +010011110010 +111001011011 +110100111000 +111000011001 +010100000000 +100000101111 +010100110010 +110001101000 +000101101001 +001111101010 +100100000001 +101000111011 +101110001111 +000100011000 +100110101110 +111011101010 +010110001101 +110100001111 +011110101100 +101000011100 +111101111101 +110101010100 +101100111111 +111110110101 +011011110111 +101101000111 +111101000011 +001011110110 +110011110111 +000011101111 +100001101010 +111011101101 +010110111000 +110101111100 +110010101000 +001011001010 +000110101001 +000001000011 +111100001010 +100110111010 +111011111000 +011111101111 +000010100111 +111011011111 +011101110010 +000000100111 +100111000100 +000010010111 +101111101011 +011111000101 +011100100101 +011000111101 +011110001010 +100110101011 +011011010011 +011100000101 +011110000100 +000110110010 +001101101110 +110011000001 +110100111110 +110011000101 +000101011110 +001010000000 +000011000010 +110010111110 +011111110110 +100000110000 +011101111000 +100011100101 +101000000101 +001111010011 +010110110011 +000100100100 +001010001001 +010011100100 +110101110011 +001001000001 +101110110010 +001001000110 +010010100000 +000111101011 +010010001000 +011111000111 +010011010001 +110101101101 +000110010101 +111011110100 +010000110101 +110110101111 +010110111101 +100000010000 +001010011111 +111001001111 +011110110111 +101011000111 +010100011110 +111100100011 +110100110110 +001000011000 +011011111101 +111111110010 +000011110010 +110101111101 +001011111101 +000010011000 +001111101101 +100010010101 +111101110001 +011010110101 +011000000110 +111110100011 +000010111001 +101001111100 +001011011010 +100110111110 +000111001010 +001011101110 +100010110110 +001100110000 +000110001010 +100010001000 +111110011110 +110011111000 +100011101110 +001110100101 +010110110000 +101110101010 +110111010111 +110011000100 +100110101100 +101110100110 +010101011101 +100111100010 +010110110010 +000111100001 +101001101001 +011101110101 +011111100111 +000101010011 +110111100010 +011110000000 +011101110110 +110100110100 +111110111001 +000100000011 +011110111011 +011010100111 +111100110111 +100010011101 +011001001111 +001010101100 +010110111010 +111000110010 +011011100111 +101111000010 +110011011100 +110110011110 +000101011100 +100100110000 +110000100011 +011001101001 +110000100010 +001000000011 +010110001100 +111111000001 +101111011100 +100100100101 +101010100110 +011110000001 +010100110110 +010111011000 +011110100010 +101000110010 +110001011011 +111110011111 +111100100110 +111110101000 +010001111101 +111000101111 +111001010110 +101000001111 +000100101001 +011101011001 +111101111100 +010001100100 +010111011100 +100101010110 +001010110010 +010010111110 +101110011100 +111100101010 +001001111111 +011101010000 +111011111101 +011000001110 +111100110010 +001001111101 +011100001110 +001001001000 +110011101111 +010001011110 +001100100100 +011100110000 +111100001110 +111110110000 +000011000011 +011000000011 +110010111111 +011110001011 +101110100010 +100100111000 +111101011010 +000111110101 +010100001001 +110010101101 +001101011111 +000101100101 +110011101100 +110111111111 +111000011000 +010000100100 +110101101011 +101010101001 +100111001101 +111011000001 +101101111010 +111001111001 +001001110100 +000111110000 +010111010110 +100011010111 +111011011101 +100010100001 +000111001110 +111100010001 +101001101101 +111101100111 +100110100010 +000010100101 +010010110111 +101100000101 +111011010110 +101101101101 +001110110111 +110011011111 +011111111001 +100100001100 +101010011101 +100000110110 +110101010000 +110110110111 +101001110110 +100001000101 +110100001001 +000111000100 +101000101001 +111111001100 +101011000100 +111000010100 +100111000110 +111011010100 +101101011101 +010000101101 +000110110110 +001110000101 +001010001000 +100111101111 +001011101001 +001100111101 +110111011111 +111010011010 +001110101111 +101000001110 +101001110001 +110111010010 +011111100101 +110001001001 +010010111010 +000001001010 +011000001100 +100000111011 +111000010101 +001110011001 +010001001100 +001100010101 +001011011000 +001101100100 +011001111111 +010010001011 +100010011111 +100011000100 +000110011110 +010010000000 +110110011001 +111000111010 +111010000111 +111011110110 +101101100111 +111100101001 +110001101110 +111101100001 +011111110111 +110110101001 +000111010101 +101011111111 +100110001000 +101000100000 +110101110010 +010100011011 +000000100101 +000000011110 +101011110000 +101001100001 +111010101101 +000011011100 +000000100010 +001011100000 +001110111111 +110100111001 +010110110111 +010111111010 +110100011010 +000101011111 +001000011100 +010011001011 +111011001100 +101111001101 +100010000001 +011000001010 +101010000011 +110110010100 +101001011101 +100001010001 +110011010101 +000001100000 +100101000101 +110110100110 +110001111010 +111011101011 +010010111101 +000110100101 +011110101110 +000101110001 +111111101100 +011100110010 +100011111010 +010011111101 +101000010101 +011000101000 +011111001111 +111001111010 +100000000100 +010000101001 +110000001000 +100100001101 +011001111010 +110111110111 +000011100111 +001100110001 +000111010001 +101110011110 +110010000010 +101100001101 +001000001100 +101110011001 +111000000110 +000111111100 +001110001110 +100011110100 +001011101100 +011010010010 +101000011111 +110001011010 +011001000000 +010011110001 +100001111011 +011011001111 +110100010011 +010111010001 +010101011011 +100000001100 +100111101010 +100010100000 +110000110001 +010000010101 +010101000010 +010100101100 +110101000001 +100010010110 +110011101011 +010101011001 +010001000011 +000011111110 +111110011101 +011010010000 +011011111100 +110010110011 +001101111011 +000011111101 +110000010110 +111011011011 +111110000000 +101100111010 +100110011111 +110111011001 +110110010010 +010010011110 +010110010101 +101110000000 +011001110110 +100110100011 +111101111010 +110101010011 +111110100010 +100110001100 +010010100010 +101010100001 +000000000101 +111001011100 +100100111110 +000000011010 +110011111101 +010100000011 +100001111111 +110001011001 +111111100011 +111101110000 +100011001101 +110001010100 +100110000111 +111110110110 +001011000011 +111111000000 +101011101101 +110001111011 +011111001000 +000001011101 +001101000011 +001000010000 +000011001110 +011001101000 +110101100101 +001111110111 +111110111101 +000011000111 +001010011100 +110010010011 +110001110111 +111010010011 +100010001110 +110000101000 +011001011000 +011100100000 +001000011001 +101011110011 +001010011110 +110100000101 +010011011110 +011001100001 +011110011010 +100110000000 +010110010100 +000100111110 +110101110101 +000110111100 +010000000111 +111101010100 +111011011100 +000010000011 +001100100001 +110010110001 +010010000010 +001000010110 +011001000001 +010100101110 +011100010100 +100000011010 +010111100000 +010111011001 +011100101001 +101110101011 +110010011001 +111110001110 +011100011100 +110000101010 +000010100010 +100101101110 +100010111010 +110101100001 +101111000100 +101000111001 +011111101101 +111100111110 +011001001000 +110100110010 +000011010101 +111010111011 +010010011000 +100101000100 +111010100100 +000111001101 +010001011000 +111101101100 +111110001111 +110100011011 +111100010101 +111001111100 +011100111011 +011011101111 +011001000011 +011100111101 +010100100010 +110101010110 +101100001000 +001100101001 +000001001111 +000110010100 +111101101010 +100111000111 +001011000111 +001011111011 +110101011100 +110000110101 +010001000110 +011100101111 +101110010001 +001011001000 +100100110010 +000011111000 +010010010000 +001011100010 +000000110011 +000101011010 +101111110000 +100001010100 +101110110110 +001100000101 +110111001101 +010001010011 +101011001111 +111111111110 +110011010011 +011101000101 +100001101000 +011001101100 +011100010000 +001111111000 +010110011111 +111101110100 +100011011101 +100010110011 +110111011000 +100110010101 +001001000000 +101000100110 +011010011010 +000000000110 +010011001010 +110000110010 +100001011010 +101111001001 +100010101001 +110111111100 +000010111110 +000110101111 +011101001011 +101110011010 +111101010101 +001101100110 +111100001101 +000011100000 +100111010110 +110100100111 +100011100110 +100001011110 +001110110011 +101011010011 +001100001000 +111011001110 +110011100000 +101000011001 +011100100001 +000110001011 +001001001001 +000011011101 +000010111010 +011001100111 +101001011011 +010001101101 +101110001011 +000001011110 +011100110001 +110011111011 +001101010011 +000101000110 +110101000000 +110000101111 +000110110111 +110100101100 +111011110000 +011110011101 +001101000001 +011010001010 +101000111010 +111101111000 +000010000000 +000010001010 +110000100110 +110010100111 +110000001100 +100010000100 +110010100101 +111011101001 +100011110000 +010110110110 +111100011011 +110001101111 +110010101111 +001001001010 +100100000011 +110100100011 +101010110001 +001001011111 +101101110110 +001111010101 +110000010011 +010110001110 +011011011100 +000000110100 +100101110001 +011011001100 +100101000001 +100101101101 +101010001110 +110101100110 +111010111101 +111001000101 +010101111100 +000110000000 +001010111010 +110110000001 +100000101110 +111011110010 +000111000101 +011001110010 +000100101010 +101001010010 +010001100001 +000101100000 +111000101110 +000100010010 +110110000011 +010101001010 +110101101110 +101111101000 +110011100101 +111110110011 +000100010011 +110110010001 +111100000010 +011011111011 +101101101001 +101011011001 +011011011111 +101100110001 +011011100010 +011101010101 +011101110100 +010000101011 +010110011011 +111001101001 +010010010010 +010111000010 +100001101100 +000000101110 +000000110101 +111001000100 +110111001110 +111100111001 +110101010010 +111100011000 +100110100100 +000100000000 +110111101011 +001011110111 +010101101011 +101110001100 +111111101010 +111100010110 +101000110011 +110100010000 +010010001100 +011101111100 +000011110001 +011010101010 +110001101010 +101001000011 +100010000110 +110100111101 +000011110110 +001010100110 +010111010101 +101011100111 +000101001000 +110010001000 +001100000100 +010000111100 +111011111111 +100101001010 +110011100111 +100011100000 +101010011111 +010111100101 +110110110101 +010111010000 +110011001110 +101100111101 +000001100001 +111010100001 +010000010110 +001001000101 +101011110001 +000101101110 +011110000010 +110011110100 +100001000001 +100000011110 +001101100101 +101111101101 +110010010100 +010111101110 +010101110111 +101010101000 +000100000010 +111000001010 +101100001100 +101010000001 +101001101011 +110110000000 +101100101101 +101010110011 +011000001001 +101010111010 +000001001100 +101001000010 +110000001111 +110101001101 +110011111111 +010110101111 +001101110110 +111010001010 +001010100010 +000101101011 +001100010111 +101111100111 +010100000101 +110111110000 +000110111011 +110000011000 +100101010000 +101010111100 +100101000111 +001110100111 +001000111011 +011010010100 +111110010010 +010101010000 +101100010110 +000011001100 +010010101011 +011011000100 +011100111100 +111010111010 +101111010000 +101011010000 +001010100111 +010100111100 +011001000010 +011110110100 +111000001001 +110010110010 +101011111001 +110001111001 +101001000100 +010100100011 +000110110101 +001000100010 +100110110010 +000100010001 +010100010010 +001011000000 +110101011000 +001001101011 +000111101110 +000100110000 +010000010100 +001011011011 +100000001110 +111010110100 +111001101011 +101110110011 +111010111111 +010101010100 +001110111110 +111010110110 +001101001011 +010111101011 +000110100011 +100001010000 +011111001010 +011001001001 +101100001001 +001100111011 +001001110111 +101110110000 +010011010100 +001100001111 +001111100001 +010100010011 +001001000010 +100101001100 +001010001101 +011011001001 +101110110001 +010001110100 +101101011001 +010001111001 +011101001000 +010011100011 +001000111010 +111110100101 +110000010001 +110100000000 +101011101110 +011101001111 +111110001101 +101100010000 +010100010101 +000010001000 +111111010110 +000100010100 +110100010101 +110010000110 +001111010111 +000100101100 +001111100111 +011110001101 +000111001111 +000001000110 +101100100000 +110100010100 +001011010000 +101011100110 +010000101010 +101001000101 +011000010110 +010111110100 +110010001001 +001111010000 +010010100111 +011001010001 +100010100010 +011111010101 +011100000010 +110101110000 +001010110100 +101110111110 +000010110100 +101100000100 +111010110111 +001001101010 +111010010110 +011011001010 +100001010111 +110010011101 +010110100001 +110000111101 +011001110111 +111110001010 +000101101010 +010011101101 +110111010001 +111011011010 +001111111010 +100111001111 +010111111111 +010000010000 +001111110011 +100110100000 +000100101111 +001000010010 +110001010001 +001011100111 +101111111111 +100101101001 +000010011001 +011011001101 +010110100000 +101001101100 +010010001111 +110111001001 +101011001000 +001001010010 +011011001000 +001110010110 +011011101011 +100111111101 +110001001111 +001110101001 +101101111011 +101011011101 +100100011111 +100001001111 +101000001010 +000010011010 +010110010010 +100101110100 +010100010100 +110111001111 +100000101001 +010110101100 +011101010011 +000111000011 +000000101010 +101001110010 +010101001000 +111100000001 +100101000010 +010011011010 +011111110011 +011111010011 +110001000101 +100010101011 +111010011101 +010110010110 +110011101000 +101001000000 +000000011100 +010011100000 +101010111000 +000101110101 +100111111110 +010100100110 +110110110100 +110001001011 +100010111101 +111111111101 +111111110101 +000110100110 +001100110011 +000011100101 +111000110011 +111010100010 +101010011001 +001110011010 +010100000100 +010010000011 +101000000001 +000011110000 +010011011100 +111000110001 +010111101111 +101100010010 +101110111111 +111101100101 +001100101011 +100110111100 +011100011010 \ No newline at end of file diff --git a/2021/Day4/Board.py b/2021/Day4/Board.py new file mode 100644 index 0000000..4aa487e --- /dev/null +++ b/2021/Day4/Board.py @@ -0,0 +1,51 @@ +import copy + + +class BingoBoard: + values = [[], + [], + [], + [], + []] + solved : bool + + def __init__(self, values: list[str]): + self.solved = False + self.values = copy.deepcopy(self.values) + for i in range(5): + self.values[i] = [int(x) for x in values[i].split()] + + def enterValue(self, value: int): + for row in self.values: + for i in range(len(row)): + if row[i] == value: + row[i] = 'X' + return + + def checkWin(self): + for row in self.values: + valid = "" + for col in row: + valid += str(col) + if valid == 'XXXXX': + self.solved = True + return True + + for col in range(5): + valid = "" + for row in self.values: + valid += str(row[col]) + if valid == 'XXXXX': + self.solved = True + return True + + return False + + def sum(self): + sum = 0 + for row in self.values: + for num in row: + if num != 'X': + sum += int(num) + + return sum \ No newline at end of file diff --git a/2021/Day4/Day4.py b/2021/Day4/Day4.py new file mode 100644 index 0000000..642ae37 --- /dev/null +++ b/2021/Day4/Day4.py @@ -0,0 +1,42 @@ +import copy + +from Board import BingoBoard + +if __name__ == '__main__': + boards = [] + with open("input.txt", "r") as f: + toPop = [] + inp = f.readlines() + nums = [int(x) for x in inp[0].split(",")] + inp.pop(0) + for i in range(len(inp)): + inp[i] = inp[i].strip() + if inp[i] == "": + toPop.append(i) + + toPop.reverse() + for i in toPop: + inp.pop(i) + + for board in range(len(inp) // 5): + boards.append(BingoBoard(inp[board * 5:board * 5 + 5])) + + # part1 + # for num in nums: + # for board in boards: + # board.enterValue(num) + # if board.checkWin(): + # print(board.sum() * num) + # exit() + + # part2 + won = 0 + for num in nums: + for board in boards: + if not board.solved: + board.enterValue(num) + if board.checkWin(): + won += 1 + if won == len(boards): + print(board.sum()*num) + exit() diff --git a/2021/Day4/input.txt b/2021/Day4/input.txt new file mode 100644 index 0000000..a1c7b1e --- /dev/null +++ b/2021/Day4/input.txt @@ -0,0 +1,601 @@ +1,76,38,96,62,41,27,33,4,2,94,15,89,25,66,14,30,0,71,21,48,44,87,73,60,50,77,45,29,18,5,99,65,16,93,95,37,3,52,32,46,80,98,63,92,24,35,55,12,81,51,17,70,78,61,91,54,8,72,40,74,68,75,67,39,64,10,53,9,31,6,7,47,42,90,20,19,36,22,43,58,28,79,86,57,49,83,84,97,11,85,26,69,23,59,82,88,34,56,13 + +85 23 65 78 93 +27 53 10 12 26 + 5 34 83 25 6 +56 40 73 29 54 +33 68 41 32 82 + + 8 31 14 70 91 +53 49 86 13 21 +66 28 76 78 93 +39 63 80 43 23 +56 25 60 67 72 + +67 78 36 64 14 +46 16 80 23 94 +22 47 51 65 57 +33 76 21 92 97 +31 95 54 27 20 + + 1 77 86 43 30 +28 88 7 5 60 +66 24 3 57 33 +38 23 59 84 44 +74 47 17 29 85 + +21 50 86 2 70 +85 19 22 93 25 +99 38 74 30 65 +81 0 47 78 63 +34 11 51 88 64 + +45 15 29 81 30 +75 21 88 91 49 +39 20 4 17 78 +10 12 38 11 7 +98 6 65 69 86 + +36 20 31 44 69 +30 65 55 88 64 +74 85 82 61 5 +57 17 90 43 54 +58 83 52 23 7 + +42 16 82 86 76 +60 26 27 59 55 + 7 53 22 78 5 +18 61 10 15 17 +28 46 14 87 77 + +21 43 15 47 61 +24 76 28 3 27 +19 62 69 82 93 +49 29 97 74 41 +92 36 37 99 40 + +31 4 3 62 51 +24 57 78 67 53 +13 5 76 38 55 +79 9 75 98 71 +65 1 39 18 47 + +59 4 38 95 99 +85 68 69 93 43 +83 57 48 42 15 +47 50 80 79 90 +56 87 78 64 25 + +21 37 14 67 95 +88 39 26 38 49 +89 83 54 77 96 +48 86 94 19 20 +43 41 8 74 58 + + 1 36 12 90 91 +63 21 98 82 66 +39 86 7 52 77 +80 81 44 33 58 +78 30 11 51 28 + +81 74 7 33 96 +75 60 87 47 91 +39 73 30 50 13 + 4 41 9 43 77 +34 82 72 48 12 + +93 63 74 25 57 +29 76 9 45 70 +98 77 71 16 41 +47 54 18 14 55 +31 89 67 87 83 + + 8 72 45 93 68 +74 26 69 94 65 +28 9 20 47 41 +46 54 21 56 22 +84 62 18 15 48 + +20 51 81 40 69 +71 10 13 93 75 +44 86 0 95 37 +99 39 76 80 66 +14 64 49 62 27 + +75 7 51 86 79 +43 30 61 39 16 +85 63 90 28 96 +88 78 72 31 73 +98 87 23 19 58 + +20 95 47 97 12 +92 25 68 87 91 +37 10 78 23 63 +74 93 58 39 5 +76 51 48 72 16 + +37 18 32 34 85 +22 31 98 42 19 +29 72 48 76 25 +47 1 21 7 53 +79 82 86 52 78 + +20 16 47 78 92 +88 15 71 67 2 + 5 52 90 70 9 +22 49 28 82 27 + 6 19 61 73 48 + +71 26 7 11 79 +52 30 47 1 31 +17 75 94 91 28 +81 98 23 55 21 +77 15 39 24 16 + + 5 75 44 88 65 +89 45 23 69 19 +41 61 67 52 54 +47 38 57 12 98 +62 70 26 87 53 + +50 4 65 77 25 + 6 21 5 27 92 +39 63 97 75 79 +60 34 87 26 74 +99 24 44 85 2 + +13 64 38 78 21 +74 17 83 57 94 +25 39 69 53 4 +54 33 81 50 76 +42 75 19 77 26 + +63 31 70 19 39 +38 87 15 90 75 +61 98 6 29 86 +78 62 32 11 60 +55 97 13 73 82 + +51 63 68 84 36 +12 33 37 31 8 +18 41 34 74 23 +72 39 85 48 60 +24 19 29 88 0 + +46 51 17 23 13 +20 93 97 99 81 +57 47 33 84 44 +28 96 2 43 56 +68 36 62 15 5 + +81 99 5 30 10 +38 62 57 8 37 + 7 86 98 3 54 +46 82 96 15 72 +83 1 75 25 50 + +47 57 11 61 27 +53 10 31 91 98 +76 85 55 38 23 + 6 81 67 71 70 +35 29 17 50 56 + +24 65 15 1 89 +45 60 97 23 14 +84 56 58 5 54 + 3 72 51 46 79 +67 70 78 34 77 + +38 11 54 23 2 +33 14 10 96 63 +43 5 36 20 30 +70 53 66 71 9 +91 90 21 7 88 + +94 44 4 86 26 +39 70 54 50 30 +55 40 12 72 71 +68 7 66 47 91 +31 24 13 1 96 + +79 14 40 87 68 +16 32 53 46 98 +38 95 21 89 69 +62 60 19 81 33 +70 52 28 83 0 + +62 42 38 48 64 +61 79 78 97 98 +89 7 3 29 68 +92 76 14 67 1 +41 99 72 47 60 + + 5 75 18 42 33 +72 61 36 31 29 +19 58 1 34 94 +54 84 92 99 38 +76 68 79 53 37 + +14 91 37 5 98 +68 29 34 76 43 +75 0 67 33 69 +81 47 58 30 93 +88 92 42 77 54 + +64 24 28 54 53 +72 68 3 73 4 +83 6 59 66 94 +87 80 55 20 16 +13 82 74 31 70 + +63 92 71 0 83 +98 40 50 55 2 +88 5 85 30 23 +10 75 81 58 68 +51 31 14 89 1 + +67 93 94 54 53 +38 71 34 40 24 +31 63 30 99 75 + 4 57 86 19 70 +60 49 87 68 74 + +56 94 79 53 7 +24 12 19 6 99 +82 51 41 46 43 +17 49 52 78 55 +75 48 61 70 87 + +14 55 32 21 31 +88 83 23 44 4 + 1 77 45 90 85 +46 81 51 27 62 +60 24 29 18 0 + +95 92 91 27 26 +22 43 45 64 62 +83 23 25 85 94 +84 53 72 28 20 +75 60 52 18 73 + +95 41 7 21 32 +58 65 16 56 97 +68 25 91 83 24 +66 89 15 55 6 + 2 30 84 10 90 + +58 86 44 19 74 +57 89 17 6 83 +77 35 60 32 13 +97 63 62 28 76 +55 31 11 0 52 + +33 39 59 42 45 +61 50 92 9 79 +15 0 28 5 72 +91 24 21 29 87 +86 76 43 31 93 + +63 11 86 45 85 +96 74 66 93 32 +95 30 99 23 18 +69 97 48 15 1 +42 87 47 83 80 + +93 5 40 64 2 +44 51 15 54 83 +69 77 90 58 11 + 0 48 43 30 55 +25 72 38 73 52 + +89 58 71 68 15 +23 65 9 36 74 +21 29 42 79 98 +55 47 33 39 28 +16 75 91 69 57 + +13 79 12 71 2 +60 94 99 43 82 +84 89 29 91 87 +74 80 25 32 21 +70 14 68 92 11 + +78 1 16 51 87 +58 94 59 15 43 +79 41 50 47 39 +53 37 9 28 72 +34 63 89 35 18 + +31 67 70 42 43 +60 2 89 49 22 +56 17 81 24 74 +20 65 1 96 51 +68 7 0 38 25 + +59 14 29 53 19 + 9 2 11 33 44 +81 6 10 47 58 +20 34 62 55 40 +71 38 69 45 78 + +59 36 70 42 21 + 3 16 49 79 98 +74 25 8 84 19 +61 80 47 65 64 +91 62 52 9 40 + + 1 85 63 7 2 + 0 20 61 26 77 +99 37 74 42 76 +25 94 19 78 60 +79 72 95 22 11 + +51 21 79 76 32 +55 23 69 19 61 +71 54 94 47 92 + 5 64 6 68 16 +91 81 9 99 30 + +61 69 82 86 68 +66 81 28 38 36 +26 29 31 11 8 +72 51 12 95 63 +18 30 88 17 32 + +34 8 14 42 67 +66 79 65 20 52 +37 87 74 24 3 +59 54 21 32 89 +31 4 62 76 30 + +11 93 8 92 55 +38 72 99 3 83 +12 75 0 41 46 +17 25 5 39 48 +14 18 86 29 84 + + 6 20 41 51 48 + 5 67 30 24 47 + 3 8 92 22 39 + 4 56 36 31 75 + 2 45 85 81 96 + +47 43 72 22 3 +19 87 53 12 60 +29 40 56 68 18 +66 97 70 33 39 +85 37 0 90 98 + +61 35 81 84 94 +11 1 58 45 77 + 6 99 67 36 43 + 5 7 0 87 80 +44 78 39 70 20 + +58 34 49 29 75 +17 15 28 23 84 +59 25 92 48 0 +20 81 47 3 71 +68 60 5 22 87 + +90 32 41 39 6 +36 78 67 24 50 +55 72 52 75 44 +87 15 92 31 58 +83 89 68 19 43 + +99 44 53 68 25 +71 67 16 19 36 +35 58 14 86 48 +88 18 61 24 23 +87 9 91 37 15 + +37 5 63 68 28 +41 50 76 99 64 +34 92 78 94 71 +11 96 97 42 58 +33 45 0 93 48 + +33 68 9 12 81 +60 98 28 8 99 +14 17 6 82 15 +57 69 43 38 29 +47 84 76 22 18 + +79 70 92 38 47 +12 82 98 46 0 +76 15 53 59 97 +18 52 49 29 96 +44 64 68 89 24 + +95 14 17 27 42 +55 43 57 29 25 +34 73 86 50 16 +69 37 75 63 39 +78 79 3 4 30 + +27 31 15 92 46 +36 23 72 40 50 +51 99 55 89 21 +12 70 84 63 85 +78 88 77 75 0 + +15 67 40 39 28 + 9 79 22 52 75 +96 65 86 98 14 +97 87 44 84 68 +36 26 89 43 27 + +79 59 48 27 36 +85 92 93 76 24 + 2 25 7 42 90 +23 29 74 35 86 +58 60 31 75 57 + +10 43 83 75 8 +88 12 38 30 9 +60 67 59 76 6 +55 45 74 34 25 +97 49 65 96 69 + +59 86 15 3 19 +89 4 74 61 23 +52 98 8 79 39 +95 17 22 14 51 +50 18 94 30 84 + +19 63 58 72 67 +35 93 29 91 0 +39 26 43 84 21 +70 42 2 53 12 +59 99 8 1 86 + +23 86 34 22 65 +71 10 16 50 91 +66 89 49 81 43 +40 7 26 75 61 +62 59 2 46 95 + +24 21 0 49 25 +92 42 48 12 7 +81 93 59 68 3 +14 23 63 39 29 +35 43 6 44 89 + +67 74 95 34 10 +39 90 59 44 51 +17 16 97 24 62 +20 54 76 63 88 +87 66 14 78 82 + +96 86 67 59 79 +66 3 30 77 71 + 2 91 99 82 31 +48 65 75 98 53 +63 54 64 76 1 + +85 96 40 98 24 +16 20 10 23 17 +79 59 53 42 65 +67 2 5 80 75 +62 38 19 74 73 + +43 10 79 92 8 +52 36 4 5 67 +56 29 33 24 97 +85 17 53 75 65 +62 64 1 21 83 + +93 92 79 17 12 +40 88 6 82 34 +90 96 53 25 43 +14 62 54 10 39 +49 68 41 16 44 + +67 99 24 58 76 +43 53 59 54 51 +47 6 61 8 2 +80 68 90 14 4 +29 46 94 89 50 + +14 45 19 33 43 + 6 55 4 31 80 +51 2 69 68 61 +71 70 79 91 93 +66 18 54 13 87 + + 8 45 61 54 30 +85 16 19 82 37 +56 39 11 47 4 +74 70 10 60 91 +21 63 95 53 72 + +71 21 63 86 27 +53 52 40 23 81 + 2 47 92 68 15 +46 45 31 8 1 +34 80 37 11 69 + +96 0 15 90 66 +65 43 92 83 18 + 3 47 19 8 32 +71 26 42 34 28 +62 99 55 5 12 + +37 99 30 21 3 +63 18 68 47 27 +57 0 65 85 20 + 7 58 40 92 43 +15 19 5 4 53 + +46 16 45 95 68 + 6 44 31 47 73 +84 82 71 75 94 +26 25 17 32 49 +18 96 13 58 9 + +71 36 13 68 10 +84 7 60 79 41 + 1 83 43 81 97 +90 53 80 19 38 +48 25 32 42 29 + +37 68 86 44 78 +87 67 77 70 60 +45 34 27 15 47 +12 21 13 55 26 +81 41 63 40 74 + +24 50 93 94 57 +99 4 56 5 28 +42 31 22 6 76 +90 89 16 49 59 + 9 7 43 71 54 + +69 75 94 38 46 +52 64 50 72 42 +76 63 13 60 10 +99 80 43 33 17 +25 31 4 89 22 + +88 57 22 66 34 +85 16 87 95 59 +73 2 46 5 29 +25 69 53 6 14 +96 77 19 91 43 + +46 99 52 47 76 +89 53 24 13 59 +45 5 1 30 19 +68 25 22 10 73 +42 27 31 0 94 + +42 44 98 89 87 +65 10 80 56 41 + 3 35 95 48 43 +85 97 83 12 94 +50 38 93 47 17 + +16 73 18 81 89 + 6 48 54 93 19 +35 52 88 49 31 +43 79 83 14 28 +50 62 98 26 22 + +38 47 7 20 35 +45 76 63 96 24 +98 53 2 87 80 +83 86 92 48 1 +73 60 26 94 6 + +80 50 29 53 92 +66 90 79 98 46 +40 21 58 38 60 +35 13 72 28 6 +48 76 51 96 12 + +79 80 24 37 51 +86 70 1 22 71 +52 69 10 83 13 +12 40 3 0 30 +46 50 48 76 5 \ No newline at end of file diff --git a/2021/Day5/Day5.py b/2021/Day5/Day5.py new file mode 100644 index 0000000..7abe6d9 --- /dev/null +++ b/2021/Day5/Day5.py @@ -0,0 +1,66 @@ +from Line import Line + + +def getHighestIndixes(lines: [Line]): + currMaxX = 0 + currMaxY = 0 + for line in lines: + currMaxX = max(currMaxX, max(line.start.x, line.end.x) + 1) + currMaxY = max(currMaxX, max(line.start.y, line.end.y) + 1) + return currMaxX, currMaxY + + +def part1(lines: [Line], arraySize: []): + area = [] + for x in range(arraySize[0]): + area.append([]) + area[x] = [] + for y in range(arraySize[1]): + area[x].append(0) + + for line in lines: + if line.axis == "X": + for y in range(min(line.start.y, line.end.y), max(line.start.y, line.end.y) + 1): + area[line.start.x][y] += 1 + elif line.axis == "Y": + for x in range(min(line.start.x, line.end.x), max(line.start.x, line.end.x) + 1): + area[x][line.start.y] += 1 + elif line.axis == "DIAG": + if line.start.x > line.end.x: + y = line.end.y + else: + y = line.start.y + + if y < max(line.start.y, line.end.y): + op = 1 + else: + op = -1 + + for x in range(min(line.start.x, line.end.x), max(line.start.x, line.end.x) + 1): + + area[x][y] += 1 + + y += op + + danger = 0 + + for row in area: + for val in row: + if val > 1: + danger += 1 + return danger + + +if __name__ == '__main__': + lines = [] + with open("input.txt", "r") as f: + raw = [x.strip() for x in f.readlines()] + + for i in raw: + inp = i.replace(" -> ", ", ") + vals = [int(x) for x in inp.split(",")] + lines.append(Line(vals[0], vals[1], vals[2], vals[3])) + if lines[-1].axis == "INVALID": + lines.pop(-1) + + print(part1(lines, getHighestIndixes(lines))) diff --git a/2021/Day5/Line.py b/2021/Day5/Line.py new file mode 100644 index 0000000..7dc9a83 --- /dev/null +++ b/2021/Day5/Line.py @@ -0,0 +1,26 @@ +class Point: + x: int + y: int + + def __init__(self, x, y): + self.x = x + self.y = y + + +class Line: + start: Point + end: Point + axis: str + + def __init__(self, x1, y1, x2, y2): + self.start = Point(x1, y1) + self.end = Point(x2, y2) + + if x1 == x2: + self.axis = "X" + elif y1 == y2: + self.axis = "Y" + elif abs(x1 - x2) == abs(y1 - y2): + self.axis = "DIAG" + else: + self.axis = "INVALID" diff --git a/2021/Day5/input.txt b/2021/Day5/input.txt new file mode 100644 index 0000000..da0c5dd --- /dev/null +++ b/2021/Day5/input.txt @@ -0,0 +1,500 @@ +284,294 -> 733,743 +625,347 -> 653,375 +561,848 -> 561,181 +836,102 -> 836,339 +946,941 -> 22,17 +18,954 -> 956,16 +370,142 -> 370,700 +990,966 -> 677,966 +366,603 -> 366,465 +728,942 -> 57,271 +615,493 -> 847,493 +584,281 -> 301,281 +125,356 -> 301,180 +941,569 -> 555,183 +151,116 -> 509,116 +41,18 -> 841,818 +627,670 -> 627,630 +965,472 -> 965,100 +93,404 -> 330,641 +475,963 -> 475,514 +389,389 -> 389,326 +842,565 -> 842,576 +454,700 -> 650,700 +73,810 -> 73,319 +450,212 -> 450,284 +316,392 -> 316,697 +915,592 -> 578,592 +622,485 -> 434,485 +109,853 -> 952,10 +305,73 -> 305,222 +27,489 -> 157,489 +191,979 -> 867,979 +527,329 -> 527,292 +301,645 -> 301,162 +639,730 -> 176,730 +46,964 -> 46,458 +727,422 -> 435,714 +28,552 -> 404,552 +33,108 -> 33,21 +227,249 -> 327,249 +414,903 -> 784,903 +69,422 -> 888,422 +422,924 -> 103,605 +793,353 -> 450,10 +714,682 -> 714,972 +201,745 -> 410,745 +408,713 -> 408,847 +174,842 -> 818,198 +863,353 -> 775,353 +199,780 -> 670,780 +877,947 -> 340,410 +163,202 -> 163,91 +955,919 -> 955,585 +836,271 -> 533,271 +258,366 -> 728,836 +582,749 -> 582,12 +80,40 -> 80,704 +287,213 -> 287,635 +390,546 -> 390,194 +837,511 -> 538,810 +473,281 -> 902,281 +851,865 -> 731,745 +918,59 -> 445,532 +796,215 -> 796,248 +875,111 -> 604,111 +660,805 -> 538,805 +507,850 -> 145,850 +585,861 -> 585,52 +426,74 -> 700,348 +206,405 -> 529,405 +418,333 -> 418,17 +368,457 -> 33,792 +186,81 -> 957,852 +505,283 -> 113,283 +20,878 -> 462,878 +750,237 -> 69,918 +15,280 -> 358,623 +798,981 -> 500,683 +965,970 -> 22,970 +950,970 -> 148,970 +660,392 -> 660,884 +862,405 -> 862,527 +801,283 -> 801,361 +71,837 -> 136,837 +651,438 -> 945,144 +524,607 -> 614,517 +348,955 -> 138,955 +957,164 -> 404,717 +531,581 -> 454,504 +710,185 -> 710,271 +822,86 -> 822,966 +745,233 -> 490,488 +350,823 -> 663,823 +824,67 -> 447,444 +846,667 -> 796,617 +666,24 -> 666,906 +640,39 -> 640,145 +654,481 -> 985,481 +581,894 -> 416,729 +443,11 -> 697,11 +318,627 -> 799,146 +113,78 -> 891,856 +181,149 -> 179,151 +451,74 -> 451,262 +458,726 -> 314,726 +218,662 -> 533,662 +965,108 -> 527,108 +782,481 -> 896,367 +557,927 -> 557,938 +506,242 -> 941,677 +948,778 -> 948,629 +567,816 -> 567,956 +323,773 -> 323,364 +864,980 -> 864,12 +611,699 -> 611,886 +613,392 -> 901,104 +528,905 -> 156,905 +632,206 -> 798,40 +338,237 -> 919,818 +256,889 -> 11,644 +835,52 -> 55,832 +464,144 -> 322,144 +254,747 -> 254,509 +866,892 -> 866,916 +827,946 -> 30,149 +899,84 -> 177,806 +134,634 -> 357,634 +781,492 -> 244,492 +817,762 -> 817,976 +818,749 -> 818,860 +262,480 -> 263,480 +409,576 -> 409,698 +242,151 -> 981,890 +149,519 -> 149,557 +42,990 -> 42,930 +687,974 -> 50,337 +758,382 -> 465,382 +760,861 -> 760,934 +17,835 -> 17,915 +645,923 -> 645,648 +702,116 -> 72,746 +153,162 -> 955,964 +185,101 -> 918,834 +554,179 -> 554,353 +879,673 -> 879,949 +368,13 -> 368,512 +582,105 -> 591,114 +146,291 -> 600,745 +609,538 -> 930,538 +320,604 -> 320,146 +566,698 -> 443,575 +167,708 -> 844,31 +712,630 -> 712,421 +912,930 -> 64,82 +980,931 -> 87,38 +23,893 -> 888,28 +640,435 -> 676,435 +701,516 -> 190,516 +684,145 -> 62,767 +127,471 -> 91,435 +685,197 -> 78,197 +103,493 -> 103,522 +309,986 -> 309,850 +938,270 -> 938,300 +295,72 -> 354,72 +948,889 -> 948,455 +254,733 -> 254,175 +95,329 -> 942,329 +19,672 -> 19,445 +206,807 -> 206,934 +886,961 -> 886,690 +117,386 -> 117,292 +199,59 -> 668,528 +299,263 -> 299,878 +28,295 -> 638,905 +10,140 -> 276,406 +279,526 -> 921,526 +485,128 -> 856,499 +418,398 -> 186,398 +296,577 -> 296,521 +514,261 -> 10,765 +691,673 -> 776,758 +131,430 -> 152,430 +858,85 -> 62,85 +394,846 -> 270,970 +827,913 -> 827,376 +634,669 -> 910,669 +12,53 -> 945,986 +782,467 -> 782,421 +159,832 -> 109,832 +793,807 -> 79,93 +120,584 -> 356,584 +645,16 -> 645,355 +526,685 -> 217,376 +296,305 -> 296,929 +954,144 -> 954,839 +748,88 -> 103,733 +523,804 -> 473,754 +524,316 -> 524,756 +696,183 -> 912,183 +288,564 -> 55,797 +568,103 -> 568,348 +468,626 -> 682,412 +163,163 -> 961,961 +762,824 -> 27,89 +623,625 -> 32,34 +865,343 -> 490,718 +259,458 -> 259,33 +944,660 -> 944,176 +781,804 -> 826,759 +15,702 -> 15,553 +403,310 -> 918,825 +438,734 -> 835,734 +825,13 -> 825,245 +129,611 -> 370,611 +49,939 -> 172,939 +687,906 -> 687,532 +629,482 -> 273,126 +727,218 -> 424,218 +447,451 -> 233,451 +142,779 -> 813,779 +527,27 -> 527,804 +482,55 -> 482,200 +39,264 -> 806,264 +884,636 -> 458,636 +467,121 -> 199,389 +856,925 -> 856,666 +666,359 -> 378,359 +11,946 -> 705,946 +491,281 -> 940,730 +86,112 -> 918,944 +974,807 -> 974,707 +445,67 -> 914,536 +953,394 -> 953,822 +468,398 -> 157,87 +231,620 -> 231,646 +979,869 -> 979,911 +450,330 -> 450,79 +675,659 -> 617,659 +66,181 -> 66,723 +181,406 -> 181,192 +908,334 -> 908,526 +254,891 -> 282,891 +777,791 -> 127,141 +469,58 -> 694,58 +954,957 -> 566,569 +957,957 -> 123,123 +741,359 -> 741,986 +763,526 -> 763,101 +857,427 -> 600,170 +527,756 -> 490,719 +625,249 -> 397,249 +798,702 -> 712,702 +868,75 -> 868,853 +332,296 -> 332,629 +211,829 -> 100,940 +12,139 -> 12,218 +655,978 -> 655,242 +99,852 -> 855,96 +486,267 -> 486,855 +474,90 -> 474,244 +948,491 -> 186,491 +896,59 -> 278,677 +295,732 -> 629,732 +860,936 -> 860,556 +143,790 -> 143,26 +371,847 -> 395,847 +739,301 -> 739,44 +384,716 -> 748,716 +848,423 -> 848,923 +855,23 -> 218,660 +381,805 -> 381,438 +451,610 -> 91,610 +906,957 -> 191,957 +118,675 -> 169,675 +836,818 -> 95,818 +368,945 -> 825,488 +165,299 -> 899,299 +392,327 -> 926,861 +663,16 -> 131,548 +630,302 -> 888,302 +206,869 -> 206,331 +979,413 -> 979,204 +894,860 -> 62,28 +444,897 -> 962,379 +550,158 -> 550,885 +845,736 -> 811,736 +846,857 -> 12,857 +981,730 -> 981,154 +694,835 -> 88,835 +21,101 -> 21,385 +19,960 -> 964,15 +283,721 -> 450,721 +59,136 -> 758,835 +287,313 -> 719,313 +471,252 -> 849,630 +682,189 -> 168,189 +10,921 -> 774,157 +884,598 -> 884,540 +207,615 -> 207,443 +627,408 -> 67,408 +285,36 -> 285,792 +116,585 -> 254,585 +183,86 -> 183,702 +220,138 -> 868,138 +833,68 -> 286,615 +367,534 -> 766,534 +907,514 -> 621,228 +133,593 -> 133,581 +164,727 -> 768,123 +566,227 -> 566,555 +983,988 -> 105,110 +620,177 -> 620,821 +612,413 -> 612,176 +168,889 -> 168,210 +871,487 -> 559,175 +399,870 -> 761,870 +236,976 -> 582,630 +699,216 -> 699,887 +153,745 -> 790,745 +444,749 -> 444,257 +808,165 -> 939,165 +546,525 -> 95,976 +583,179 -> 373,389 +235,816 -> 840,816 +744,89 -> 832,89 +425,317 -> 465,357 +267,235 -> 114,82 +887,59 -> 572,374 +808,237 -> 808,626 +431,352 -> 400,383 +815,376 -> 815,905 +249,218 -> 989,958 +120,435 -> 357,198 +807,551 -> 490,234 +910,524 -> 910,725 +802,304 -> 447,659 +789,228 -> 678,339 +229,322 -> 52,322 +658,393 -> 506,393 +378,438 -> 378,569 +163,981 -> 473,671 +537,984 -> 935,586 +58,945 -> 966,37 +132,696 -> 565,263 +136,813 -> 136,284 +606,656 -> 298,348 +533,572 -> 673,712 +872,912 -> 301,341 +16,287 -> 16,613 +571,541 -> 980,950 +117,495 -> 35,495 +85,79 -> 682,676 +425,431 -> 117,739 +982,984 -> 10,12 +28,75 -> 431,478 +259,529 -> 259,436 +762,267 -> 170,859 +323,135 -> 929,741 +81,238 -> 561,718 +128,213 -> 876,961 +649,466 -> 649,540 +715,863 -> 119,863 +830,624 -> 794,660 +123,968 -> 977,114 +489,466 -> 489,811 +27,10 -> 980,963 +255,732 -> 255,484 +574,829 -> 431,829 +548,743 -> 22,217 +903,297 -> 903,763 +684,774 -> 64,154 +260,823 -> 683,823 +422,211 -> 422,826 +10,196 -> 988,196 +108,802 -> 15,802 +104,70 -> 104,452 +885,59 -> 885,36 +68,854 -> 68,774 +731,935 -> 731,718 +657,986 -> 617,986 +732,292 -> 732,32 +841,56 -> 841,83 +74,108 -> 862,896 +654,895 -> 323,895 +374,952 -> 374,217 +90,723 -> 750,63 +246,89 -> 911,754 +453,301 -> 755,301 +983,988 -> 23,28 +81,705 -> 133,757 +752,743 -> 752,397 +53,243 -> 449,639 +451,811 -> 451,187 +26,672 -> 26,699 +254,861 -> 943,861 +643,740 -> 643,966 +486,655 -> 149,318 +375,146 -> 375,973 +76,293 -> 103,293 +246,398 -> 246,248 +324,392 -> 595,121 +130,577 -> 131,577 +380,623 -> 549,454 +224,181 -> 985,942 +310,223 -> 310,594 +23,982 -> 23,738 +19,858 -> 832,858 +726,531 -> 726,578 +730,433 -> 196,433 +606,599 -> 242,599 +444,832 -> 444,238 +198,870 -> 47,870 +944,473 -> 795,473 +737,386 -> 178,945 +328,902 -> 328,644 +422,851 -> 567,851 +674,781 -> 215,781 +920,757 -> 302,757 +225,932 -> 640,517 +359,337 -> 791,337 +935,430 -> 935,262 +772,850 -> 280,358 +175,829 -> 175,451 +938,204 -> 234,908 +253,749 -> 308,749 +704,458 -> 468,458 +222,95 -> 743,616 +968,840 -> 123,840 +491,619 -> 491,889 +979,580 -> 979,459 +901,193 -> 171,923 +246,155 -> 246,680 +711,755 -> 247,755 +671,734 -> 475,734 +803,783 -> 129,109 +145,890 -> 920,115 +463,521 -> 463,700 +782,99 -> 782,311 +547,467 -> 630,467 +14,88 -> 795,869 +653,899 -> 653,90 +488,874 -> 488,570 +93,879 -> 645,327 +320,658 -> 40,938 +611,246 -> 611,22 +258,935 -> 258,829 +931,436 -> 931,263 +252,460 -> 252,461 +490,382 -> 965,382 +242,89 -> 242,617 +271,111 -> 595,435 +462,706 -> 242,486 +557,328 -> 747,328 +486,99 -> 486,333 +156,40 -> 488,372 +323,482 -> 138,297 +595,539 -> 812,756 +923,861 -> 377,315 +934,952 -> 256,274 +314,777 -> 314,12 +508,47 -> 508,144 +888,807 -> 701,807 +745,774 -> 878,907 +740,716 -> 740,215 +62,43 -> 62,12 +571,196 -> 454,196 +568,107 -> 408,107 +549,676 -> 404,676 +595,573 -> 595,970 +148,168 -> 193,123 +763,71 -> 759,71 +797,64 -> 307,64 +959,984 -> 32,57 +457,562 -> 634,562 +127,521 -> 601,47 +112,296 -> 112,120 +148,755 -> 451,755 +636,494 -> 870,494 +910,242 -> 945,277 +912,911 -> 912,892 +759,815 -> 759,314 +391,285 -> 391,959 +455,460 -> 182,460 +112,78 -> 112,385 +842,179 -> 842,592 +236,424 -> 421,424 +508,907 -> 30,907 +637,219 -> 34,822 +503,375 -> 503,205 +570,533 -> 626,533 +658,11 -> 658,94 +179,286 -> 326,433 +918,214 -> 200,932 +339,887 -> 81,887 +794,91 -> 50,835 +225,356 -> 225,261 +80,160 -> 80,335 +148,64 -> 847,763 +595,393 -> 941,393 \ No newline at end of file diff --git a/2021/Day6/Day6.py b/2021/Day6/Day6.py new file mode 100644 index 0000000..970fc81 --- /dev/null +++ b/2021/Day6/Day6.py @@ -0,0 +1,27 @@ +def calc(fish: {}, days): + for i in range(256): + toAdd = fish["0"] + for key in "012345678": + if key != "8": + fish[key] = fish[str(int(key) + 1)] + + fish["6"] = int(fish["6"]) + toAdd + fish["8"] = toAdd + + sum = 0 + for key in fish: + sum += fish[key] + + return sum + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + raw = f.read().strip().split(",") + + fish = {"0": 0, "1": raw.count("1"), "2": raw.count("2"), "3": raw.count("3"), "4": raw.count("4"), + "5": raw.count("5"), + "6": raw.count("6"), "7": 0, "8": 0 + } + + print(calc(fish, 256)) diff --git a/2021/Day6/input.txt b/2021/Day6/input.txt new file mode 100644 index 0000000..ac47d3e --- /dev/null +++ b/2021/Day6/input.txt @@ -0,0 +1 @@ +5,3,2,2,1,1,4,1,5,5,1,3,1,5,1,2,1,4,1,2,1,2,1,4,2,4,1,5,1,3,5,4,3,3,1,4,1,3,4,4,1,5,4,3,3,2,5,1,1,3,1,4,3,2,2,3,1,3,1,3,1,5,3,5,1,3,1,4,2,1,4,1,5,5,5,2,4,2,1,4,1,3,5,5,1,4,1,1,4,2,2,1,3,1,1,1,1,3,4,1,4,1,1,1,4,4,4,1,3,1,3,4,1,4,1,2,2,2,5,4,1,3,1,2,1,4,1,4,5,2,4,5,4,1,2,1,4,2,2,2,1,3,5,2,5,1,1,4,5,4,3,2,4,1,5,2,2,5,1,4,1,5,1,3,5,1,2,1,1,1,5,4,4,5,1,1,1,4,1,3,3,5,5,1,5,2,1,1,3,1,1,3,2,3,4,4,1,5,5,3,2,1,1,1,4,3,1,3,3,1,1,2,2,1,2,2,2,1,1,5,1,2,2,5,2,4,1,1,2,4,1,2,3,4,1,2,1,2,4,2,1,1,5,3,1,4,4,4,1,5,2,3,4,4,1,5,1,2,2,4,1,1,2,1,1,1,1,5,1,3,3,1,1,1,1,4,1,2,2,5,1,2,1,3,4,1,3,4,3,3,1,1,5,5,5,2,4,3,1,4 \ No newline at end of file diff --git a/2021/Day7/Day7.py b/2021/Day7/Day7.py new file mode 100644 index 0000000..ba447be --- /dev/null +++ b/2021/Day7/Day7.py @@ -0,0 +1,24 @@ +import sys + + +def calcFuelCost(steps: int): + total = 0 + for cost in range(1, steps + 1): + total += cost + + return total + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + crabs = [int(x) for x in f.read().strip().split(",")] + + minFuel = sys.maxsize + for i in crabs: + totalfuelcost = 0 + for x in crabs: + totalfuelcost += calcFuelCost(abs(x - i)) + + minFuel = min(totalfuelcost, minFuel) + + print(minFuel) diff --git a/2021/Day7/input.txt b/2021/Day7/input.txt new file mode 100644 index 0000000..e4f87eb --- /dev/null +++ b/2021/Day7/input.txt @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,1247,39,529,198,497,33,1618,2,28,653,764,312,163,62,263,4,243,1277,8,432,324,564,44,56,745,0,534,558,1026,313,482,410,411,63,461,261,561,62,428,42,1806,251,1186,553,241,795,127,1004,94,183,382,194,890,1025,1153,1064,155,278,203,666,1098,678,228,12,530,226,680,476,74,122,136,64,515,630,137,187,146,249,77,879,1174,257,9,353,1496,239,131,21,330,922,110,5,804,2,1195,756,195,399,1306,1495,1088,687,102,901,222,3,717,853,1242,573,406,645,1211,193,319,35,302,677,704,42,69,228,247,420,401,1006,124,662,355,746,483,211,1484,146,104,314,154,170,932,215,1600,1250,20,134,1038,724,728,157,261,1373,1113,449,339,415,1165,172,956,466,327,1342,27,1031,1233,547,636,100,440,510,154,28,949,222,867,11,297,218,814,169,358,1088,1071,630,1360,1106,249,13,312,7,56,1667,948,69,767,279,1032,82,139,636,592,684,294,952,83,252,158,450,1250,78,548,1052,1,1231,888,253,533,637,694,955,448,1351,1569,1060,65,269,450,102,962,408,259,61,20,437,14,1676,16,533,90,1727,623,286,48,395,169,271,140,652,139,1497,356,98,60,362,964,880,934,544,140,322,428,80,215,192,300,431,126,46,109,780,209,776,203,443,60,889,21,882,22,127,476,694,174,226,1041,364,282,541,429,755,770,931,967,1346,1240,647,150,199,137,181,1177,571,150,1104,56,517,286,1204,346,619,1269,307,425,228,254,328,570,956,1567,810,356,196,77,31,429,1178,6,502,310,443,1221,119,571,583,18,256,460,694,650,799,200,121,119,125,894,1263,610,892,635,93,320,252,371,1416,150,664,154,344,381,610,819,591,536,1312,1521,148,1232,70,50,328,226,752,1685,729,449,31,963,402,62,1365,928,619,538,950,202,19,271,292,59,55,345,189,302,29,217,486,1576,62,1364,122,1667,388,62,182,1278,13,459,729,821,293,78,5,111,135,868,94,196,14,342,185,271,1055,350,363,235,137,142,31,30,466,922,436,1174,81,114,244,770,54,288,579,4,1287,36,321,849,751,1081,342,359,829,1147,1092,125,269,1652,493,22,456,193,49,70,288,4,954,1718,84,154,24,171,220,1033,66,289,395,1732,1553,616,411,899,1398,402,219,621,343,293,422,494,80,732,1210,449,72,236,307,541,10,620,1361,605,351,1304,475,215,989,153,8,1229,113,216,3,170,998,308,964,1755,223,1694,1937,60,41,1120,491,1270,766,501,326,236,632,163,880,963,1213,1030,444,229,425,239,834,59,66,580,488,303,475,457,1182,150,1273,53,22,53,224,536,945,824,56,694,187,586,555,1464,188,538,286,120,260,38,70,13,678,916,542,235,1138,34,259,12,280,178,45,213,1,580,268,114,1076,536,185,825,374,282,186,3,356,393,385,597,53,187,288,10,194,447,949,521,84,124,16,221,153,800,969,241,40,76,565,7,238,252,13,276,461,30,1034,129,204,657,793,630,1068,97,537,226,155,363,531,458,123,442,1155,371,196,1764,1049,73,258,853,2,653,923,189,472,1119,582,974,948,447,161,1737,765,93,369,48,293,762,58,2,1282,242,67,1310,129,468,425,116,471,768,291,878,1138,569,427,725,515,67,526,766,213,1307,288,1589,1304,3,287,1050,14,7,428,1684,479,355,72,1233,21,1449,284,11,27,315,274,181,215,486,247,946,59,158,432,231,178,1722,13,189,439,13,72,211,239,841,175,893,234,328,154,134,13,653,31,40,303,110,172,113,515,69,1009,1413,450,172,168,92,385,1555,216,1487,72,173,339,496,779,1696,153,49,342,1225,141,873,402,777,269,767,361,108,536,1432,343,23,380,716,1609,958,1512,743,246,315,220,1634,16,405,61,1150,350,620,1,13,749,9,738,1391,334,148,1142,220,662,1612,878,65,164,235,95,499,929,399,1675,886,86,452,238,487,354,103,7,372,428,971,419,41,56,613,126,819,354,170,1025,1183,2,1201,813,339,272,400,13,221,1021,182,192,1239,52,508,266,42,504,1281,779,1629,46,65,541,1004,115,384,922,89,372,56,211,419,420,149,316,670,1271,253,845,260,25,624,402,54,270,1366,831,170,47,11,235,106,757,854,1343,548,32,29,283,200,11,443,12,372,239,165,440,1099,104,686,335,656,1182,994,1126,14,503,508,766,634,744,660,102,56,449,227,96,357,23,83,653,519,144,9,59,892,253,984,777,178,629,82 \ No newline at end of file diff --git a/2021/Day8/Day8.py b/2021/Day8/Day8.py new file mode 100644 index 0000000..92ebbb2 --- /dev/null +++ b/2021/Day8/Day8.py @@ -0,0 +1,21 @@ +if __name__ == '__main__': + with open("input.txt", "r") as f: + data = [x.split("|")[1].strip().split() for x in f.readlines()] + + for d in range(len(data)): + for entry in range(len(data[d])): + data[d][entry] = "".join(sorted(data[d][entry])) + + one = "cf" + four = "bcdf" + seven = "acf" + eight = "abcdefg" + + entries = 0 + + for d in data: + for entry in d: + if len(entry) == len(one) or len(entry) == len(four) or len(seven) == len(entry) or len(eight) == len(entry): + entries += 1 + + print(entries) diff --git a/2021/Day8/Day8_2_Reddit.py b/2021/Day8/Day8_2_Reddit.py new file mode 100644 index 0000000..ef69833 --- /dev/null +++ b/2021/Day8/Day8_2_Reddit.py @@ -0,0 +1,143 @@ +def AOC_8_a(): + with open("src/input8.txt") as file: + lines = file.read().splitlines() + lines = [x.split(" | ")[1].split(' ') for x in lines] + total = 0 + for line in lines: + for item in line: + if len(item) == 2 or len(item) == 3 or len(item) == 4 or len(item) == 7: + total += 1 + print(total) + + +def AOC_8_b(): + with open("input.txt") as file: + lines = file.read().splitlines() + lines = [x.split(" | ") for x in lines] + total = 0 + for (lefthand, righthand) in lines: + lefts = lefthand.split(' ') + digits = fill_dict(lefts) + digits["2"] = find_two(digits["1"], digits["len5"] + digits["len6"]) + digits["9"] = find_nine(digits["4"], digits["len6"]) + + digits["len6"].remove(digits["9"]) + + digits["5"] = find_five(digits["2"], digits["len5"]) + + digits["len5"].remove(digits["2"]) + digits["len5"].remove(digits["5"]) + + digits["3"] = find_three(digits["len5"]) + digits["6"] = find_six(digits["5"], digits["len6"]) + + digits["len6"].remove(digits["6"]) + + digits["0"] = find_zero(digits["len6"]) + + del digits["len5"] + del digits["len6"] + + number = "" + for item in righthand.split(' '): + item = "".join(sorted(item)) + for key, value in digits.items(): + if (value == item): + number += key + print(number) + total += int(number) + print(total) + + +def pd(dict): + for (key, value) in dict.items(): + print(key, ": ", value) + + +# 0 is the last number to find, and is just the last remaining not used string +def find_zero(candidates): + return candidates[0] + + +# 2 is the only digit that shares a unique single segment with 1 (5 and 6 also share +# a single segment with 1, but they're thus not unique) among unknown digits. We need both len5 and len6 +# to check for this uniqueness. +def find_two(segment, candidates): + az = {x: shares_only_one_segment(x, segment) for x in candidates if shares_only_one_segment(x, segment) is not None} + return least_frequent(az) + + +# 3 will be the only len5 segment not assigned at this point +def find_three(candidates): + return candidates[0] + + +# 5 is the only digit that shares three segments with 2 +def find_five(segment, candidates): + for can in candidates: + if (shares_x_segments(segment, can, 3)): + return can + + +# 6 is the only digit that shares five segments with 5 +def find_six(segment, candidates): + for can in candidates: + if (shares_x_segments(segment, can, 5)): + return can + + +# 9 is the only digit that shares four segments with 4 +def find_nine(segment, candidates): + for can in candidates: + if (shares_x_segments(segment, can, 4)): + return can + + +def least_frequent(dict): + list = [value for (key, value) in dict.items()] + lowest_value = min(set(list), key=list.count) + + for key, value in dict.items(): + if (lowest_value == value): + return key + + +def shares_only_one_segment(segment, candidate): + total = 0 + for a in segment: + for b in candidate: + if (a == b): + total += 1 + shared = a + return shared if total == 1 else None + + +def shares_x_segments(segment, candidate, x): + total = 0 + for seg in segment: + for can in candidate: + if (seg == can): + total += 1 + return total == x + + +def fill_dict(lefts): + digits = {"len5": [], "len6": []} + for num in lefts: + num = "".join(sorted(num)) + if (len(num) == 2): + digits["1"] = num + if (len(num) == 4): + digits["4"] = num + if (len(num) == 3): + digits["7"] = num + if (len(num) == 7): + digits["8"] = num + if (len(num) == 5): + digits["len5"].append(num) + if (len(num) == 6): + digits["len6"].append(num) + return digits + +if __name__ == '__main__': + AOC_8_b() \ No newline at end of file diff --git a/2021/Day8/input.txt b/2021/Day8/input.txt new file mode 100644 index 0000000..fdd5187 --- /dev/null +++ b/2021/Day8/input.txt @@ -0,0 +1,200 @@ +dbc gfecab afcdg dfebcag bd dgbe bcaeg dcefab ecgadb agcbd | acdgb gbcda gdecfba bacge +bacdegf aefbdc ebf fdbcag edbfa gdaeb acfdb cdegbf face fe | ebf ecdabf fcbad afcdbg +cabgde gd becgfd dgfe cebgf gfdeacb fdbac bcgaef bgdfc gdc | cbfad dg dgef ecfbdg +adecgf egfdc cgeadb adbfce dafg bcfeg dge dg fadec dcbegaf | dg dcegf cdgafe gbacfed +badeg gdbfcea acgef fgdc bgcaef cd ebcfda gadce edcgaf edc | dce efcga dbgea dc +bgfec dbfgec ebgafc afegcdb fca af cgdabf aegf badce cfabe | caf ebacf bafgec cbfeag +begacd bd cfadbeg fbecg begfd bgd cdfeag gbaedf fdba agefd | cbgfe fdab efbdg bd +bg gfdebc beg gabd fcbae fgaeb afegd gafdce dacbfge efgbda | gdba dfgae dgba gb +cfd edcfbg abfcg gfdcb gbcefda dgcbe defg df acebfd caedbg | agedcbf dgbfaec gbfecd cdf +bdcag acgebfd eac ae bade abcdgf bdacge bcgea aedgcf efcbg | cfdagb degacb eac edab +ga ebcadgf gdaf bga fgecb dfabcg adcfb gadecb fecdab gbacf | fgda gdaf agb gfda +gbcdaf fabdceg gbe ebfgad bfdga eg cefabg fdge adegb cedba | ge fcaedbg ebg aecbdfg +ab bdeag gbdefc cgafdb fgedb agb befa bagfdec ecgda agfedb | ab aefb abg ab +fgceab fcgdb fdcebg cbf gafbd cegfd bced cb cadfge cbdgafe | ecbagf cbfdeg cb bc +fgb eafdgcb cefg ebdgac fcbged fbade fg gbfed gbecd fcabdg | fg eadfcgb fgcbda gedcb +ecgfda faebc cb fadeb adecbg edfgabc bfgc cab gecaf ecbfag | fcgb bca gbcf cgbf +gfaed cg cgab abdcf fabcgd gcfda fgc fdgacbe cbdaef fcebdg | fgc cfdageb cbfgad degfa +fbacd gedfac fadegbc gbf degb ecgdf gb bdecfg gcdbf efbcag | cgedfb gb bcdfa cfdagbe +dceg deacbg acfbeg egdafbc ebfda dc bcd cgabe gbdafc dbace | cged fabegc febad ebgcfa +gbdcae cfgade dc dgbface fdage cbgfa adc gdafc dcfe gbdaef | fedc adgcf fcde dgacbfe +afdgbe cgfabe dcgeab aef feacb fbgcade bgace cgef bcafd fe | ebacf abfdegc dbfac facgeb +fbeg dgfecba cfgabd eafcb gb edacg gecfab aebcdf ebcag gcb | cfadeb gecda bg gb +bfcaeg gd fbagc fgad fgcaedb fdgbac cdaeb dgfecb cagdb bdg | cbfgda dg afcedgb egfacb +gd dcafgb dacfbe edbgacf gfbdc fbceg dbg dfag bdfca begdac | aecfdb eagdcfb fdcbgea fgdbc +gf dfgc ebfgac bfdace gabfd adgfbc acbfd ecfagbd bgf aedgb | dfgc fdcg gfb gbf +gbdae ebadf dbcfag acfdb dfec feacdbg geafcb dcbafe fe fae | efa bdcfa eaf debacgf +deafgc fbgedca gfd dcga dcgbef aecfg dg agfebc adgfe dfabe | dgf badgcef fgace cabefgd +badcg bagdce bdafgce efgbc df cbgfda cfdbg edgfac fgd adbf | dfcbg df cgbdae bdfgc +dgabe beagc gbd gfcbdae gd bdegfa bgfedc fbcdae bafde fagd | bcdfge bgd bcage dfga +adgf adgfce aecfg cdega dbgaecf abcgfe egd egcdfb dg deabc | cdgae dafg dfag afdg +fbadec afcbg begac be ebcgda dceag edgb efdcga ebdacgf cbe | adfcebg ecafbd debgac edcafg +cbd dcga cagbf dcafb cd cdebfg dgafcb baefd cbfaeg cfdgeab | fcdab geacbf gfbdce dgcafb +becd abfdc cgbaf efcda bd ebdcaf gdfaceb bdf bdgeaf cedfga | ebdc fbd bdf fbgdae +gefacd adcg fedbc cdgfe egd dg dbfega cgbfeda aecfg bcefga | defbcga efcga afgced gdecf +gfacbd fbcgde cefba efdcga bfgcead egcdf gfb gcfbe bg edgb | gb fdegc gfb fgb +ag agfdcb egfad fag adefb fdgec bdfgcae acfegd gebfdc aecg | fga ag egafd fcgebd +cadgbf cd gefbac cdfba fbead cedagb gdcf adc gacbf fgebcda | gcbafd bdcaf gfcd abdfe +fgebda fd afceb fcdeb fcad cgbed gabfcde dcabfe def befagc | eacfb efd efagcb def +beaf gfcaebd fdeag dae acdgeb gcdfa dgabef gbedf ea dcbgef | ae aed ae ade +gb dgeca gecab gcdfaeb ceafb bgc fagb adfceb baegcf gebfdc | fgba bg fecgab bg +daf gbfda afcedg geadfb fbcdg fgaebc ad dbagefc dbae aebgf | aebd eadcbgf dfa beda +dcbaef cabfd efgcba cbdgfa aedfg abecfdg ace cbde dfcae ce | cbefag ebcd cdabgf cbfda +bcgefa bgfcead cd fcbadg bdcga dac gbaed gafdce cfbd bcagf | cbfag acd cfbd bdfc +dgfcb aebgd gadefc bgfdec cbafgd cgbad egbdafc ac acbf cga | ca ac cabf abcf +cgaed gafbdec fgaedc ba baegcd edfbg agcb bcdeaf ebdag bea | gfceda ecabfgd defgacb aeb +cbfag cgdaf dcefab bac ba bdfceg cfgeb eagb cbfgea abcfdge | ba bac gabe cfbeda +efcgd ecbafdg fgabed edb ebcg adcfb be efcdgb dfcgae dbefc | dcgef ebd becg gdfaebc +fgedabc dafeb eg ged aegfbd afbecd fbgdc edfgb egaf dacegb | gaecdb cbegad fega fega +bgfcdae fbcda df eafd gbcaed bdeca gfbac gfdbce bfadce bdf | afcbdeg gabfcde deaf cbeda +fcgebda fcga bgfcd ebdfcg degba baf bafgd dfagbc bfcade af | afb agfc af cfegabd +cbfg bfd eabfdg facbdg edfcgab bf fcabd aedcf ebgdac badcg | eafdc bdf bf fbcg +fbdgce eagbfd dbacfeg dagb geabf cdeaf ebd bd fgbcae afebd | defac bed edb db +aegcd bad gdaebcf cabfg db ecbd gafdce gcabd gbcade faebdg | dab dba dba cgfba +ecdba bedacfg cdgeba dagcb bdge gdbfac fcadeg ced de acfeb | ed badfgc beacf bcgdafe +fg abdeg fgebdca agdceb gfbd gdfae fga cdefa efagbc febgad | fg bgaefc gf bgafcde +beadc gcbfed fdc bacf fc cbadefg feadc dgfea dcbefa dcgeba | cdf gefda dfc fbca +bd bgcedf decafg gafcdb acgdf agbce bafd gaefbcd cdb acbdg | fcdga afbd cbfdeg cafdgb +dabe bgcda egcdb fcdage dcebga bcfge dafgebc gdafcb ed ecd | ebad deba de gcbde +ga gadcb ebcfdg egbcd agebdc eagb afcedg dbfca dfceagb dga | dabgc ga agd adbcg +cbfagde ecdgf eabgfc fbd egbdf fageb edba dacbgf bdaegf bd | beda deab abgfe cegfd +gcdfa gfea ef bdacfeg aedbc efc gfebdc adgbcf fecad aefcdg | feadc fe efc fgcad +gdcae fga af acegfb fbda gfead edfgbc agdfecb dbgafe fdbge | fabd gfaed efgbd dagce +afdebg febc cdbae abe eb dbfcea dabcfeg aecgdf dabgc dafce | cefb cedgaf eab acefd +fgc dcabg gbdefac dfeg ecfdgb bfgcd gebcaf beafdc fg edbfc | cdfeb fcagbe fgbdace febdc +aegfbd gacdeb fdeacgb dea dgcefb faeg bdfac dgefb ae debaf | debfg dea ea ead +acgedb cfgae egfcbda fdeac eacbfd fd bdagfe dabec def fdcb | fed fd fcbd fde +dba bgcfde da cdaf acfbgde fbgdc fgadeb dcbag agbec acgfdb | gacbdef adfgbe bgcad fcdabge +acdfe cfgdab cdgea afgcebd dcgbae daf gfea fa egdfac bedfc | fa fad fa cedga +caedg bafgde egcba dabegc agd fecdbga bcfeag fecdg ad abdc | gad cbeag dag cabd +adfebg fedcagb fagdc gda eadc degcf gdafec ad cdbfge facbg | da aedc cbfgdea ad +ecfdba dg dgafec gcabdfe fbadg fadcb gbdfca gfd bgefa dgbc | cgbd dbcaf cgdb dbgcfa +ebacg eb begd dcebaf cdgea gafdce ecb cagfb bfadcge egcdba | bgdaecf bedacg dbeg cbdgae +ebdagcf cgbea fe agefbc abgdf agfeb egafdc bcef feg deabcg | cegabd ecgafbd ef fe +cd cgebdfa fgeabd cbd cabed gfbdec adcf abgce eafbd fcebad | efabcdg bcefgd baedc abfde +acfg gbacfd edgfabc bdcaf dca caebdg dafbe gbcdf ac dfbgec | bgcfed cda dbgfc acd +agdbefc abdc ecd gfcae aedbf gbcdef ebafdg ecadbf efadc cd | afdeb cde dbafce bfadge +begad de fged gfbea dbe gbdac ebfgdac efgabd cadfbe fegabc | de dgfe cgfaeb gadbc +gefdc gdfb gdbcaef deb ebfcd gcebad bd dacefg gdcbef fabce | gfedabc deb gcfade fdgb +bdec dagcf cefbg bfgace bgedfc edacfbg fgdec fde adgefb de | dbfaegc cedb edfabcg fcdeg +eaf gabed cabegdf fe ecbgaf fadeg gadfc fcdega cfde cbgafd | adgef fced cgdbafe fae +fcbaedg gadce abcg ceb bgedf adfbec decagf bc dbceg eabdcg | ceb bgafecd cabg acefbd +dagb cfgde acgfeb fbgac fcgdb bd dbf cbfagd fcbeda bcefgad | db fegdbca dbceafg aedbfc +edagb da dab fbdge cgdfbe acegb adfe abdgfce dfgeab bfgcad | abd dab gfbead eagbc +bdfega dcbgf efcgabd ce fec fcegd agce fegad daebfc efdcga | ec ecf dgacef bfecad +cdabgef bgdfe aecgb gcfa fc acgebf dcaebf dcbgae cfgeb efc | fc fcga bfecga faecbdg +dfeac gdfcea fcg acdebf cdge cgefa bdcgaf cg fegbdac bfage | cfg cfg gfeca fegac +bfad bcf bedcga cadeb bf bceafd bcegfd dbaegfc ecfga cfbae | efacdb afbd bcf fb +aegfcd bcdeg abcefg gcfea bcgafed bga afbe bagec ab fbdgac | gceba gacbe gbacef gab +dca ebda bdfaceg acgdb gbcdea begcd efbdcg efacgd bfagc ad | adcbeg ad cbfga cfbgeda +fadebc gcfbea becgf gf fgc abfg ecgbd dfecabg fcedag eafcb | ebfgc gaedfc bgcef gedabfc +fadg eafgb gbead bdaec ecagbf dg gdb agfebd aedcgfb cfgbde | bfecdag bgd badce gd +egcd efadb gacbfd bcaeg ecadgb adc bacegf adecb dc agedcfb | fcgabe degc acd cd +bedfcag gc fagdec gfabce bfgec acgb befac gfc bgdef aecfbd | cg ebfdg cfg gc +aegbdf gfabced fadebc gfde ed bcaeg fbgda eadbg fgbacd bde | dbcefag bed afcbged aegdb +agd fagec cfbgda bfceagd fgeacb cdae gdbef dagef da efcdga | edbgf gda gedaf cdgfaeb +fgaec eb fcgbd agfdeb cedb fabcdeg egb febcg dfbgec cdfgab | fgbcde dbeafg egcfdba gcbfd +gfe fdbae ge bfgdc dgfaec cgeb dcfgbe dabfgc fdegb eabgcdf | gebc gceb defbcag afbcedg +dfce cgbed fbcagd bcdgf ged bdfgae ed bdfceg agebc fabdegc | fcde gde gecdbf de +dba dcafbg gcdefb fbged dgeab bfegad gaecd ba aebf egafdcb | beadg cfdbage bgafde acdge +bcgdef cbdgeaf ae fbdace afbde gcdabe gdbfa edbcf fcea bea | dgafb adbfce ea fbdecga +afdg fgebc fdeacbg fd gadcb fdcgb gfacbd gbeacd acdfeb dfc | fd bdcafeg caefbd dafg +dfebag defa bdgfa beafg agbcfd eab cbagefd cfgbe ea acbgde | abdcge abe ae fecbg +ef bgfdeac bdcefg cfdba ecf dgecba gfae abgefc ecbga acefb | debcag afge efag fe +cg gbfc gabcd bgade dgc gbecafd egdfac dfbac abdcfe gabfdc | gcbad degfabc cgafbd adbgcf +edbcgf acgbf fbaedc cbfae gfc agcdb dagecfb fg fcgbea eagf | fg adcbef fbeac fadcgeb +deacg daeb dagbce ecdbgf edc ed bgaefc gecba dagcf abdgecf | cdaeg abcge dec ecd +fcgadb caged bedc cdabeg dfaecbg befag db dgb eagbd gacdef | fecagdb begad dgb db +fbcdga fgcad fecdg gcedab bfca adc ac bfdga dbfega eafbcdg | adc cbgade fgcadb ceabgd +cefdbg gde bgfeac ed begcd cbefg bfde aedcgf cbafegd gacbd | fegbdac gcbefd cbgef bgedc +bfdagc afdc bagcf gbfdc begcd begdaf beafgc dbefgac gfd fd | fcda df dfac dcbfg +gcbfe bfeacg cedbf ge bfcga gfe gfecda ecbgdfa bgfadc bage | feg eagb gef abfgc +bgfec bac abecdfg ab gdcea ebgcfa fagb aebcg caebfd gfcbed | ab ab cba acgbe +gdbcf cbedg ce ceg abcgde adbeg efgcab bdfegac adec adfbeg | gaecdfb bedga cge cead +eafcb cfdbe aeb acfeg ab dcgbfe adfb fgacedb ecabgd fdbcae | fbcde aedfcbg bea edcbf +ebdca egc cgabe fbge cgbfda ge bacfg geacbf afdgec gebacfd | badce cge bgfcea ge +gdfecb bdge gdf dgbcaf aefbgc bfecg fgdec dg ecdbfga deacf | dgf fedcagb gd gcedf +agdeb cfdbag gcabd ed dacegbf gebfa eagbdc acde efcgbd edb | ed eagdb de de +feag cfgbed feacbdg cfgade efcdg fcgdab afd dfeac af abedc | cbagfde dbagfc faeg dgabcf +cdg efgbcd decgfa dcegb dgbf gd ebdcfga adebc gbcfe cefagb | bfecg dgbf gdbf dg +gab dfceag gdcb bg gbead agdefbc gcabef acged efdba agdceb | gdcb bgdc edbfa bag +bgafde afdgc gcafed efgdc ceda gdcebfa gdbacf de gbcef edg | edg gde eadfcbg cade +gdb egcfadb gdef abcfd dg ebfag gadbef abdgf aefbgc cbgaed | fedgba dbegfac bfeagd gefcdba +gad bdcag becdg gceabd dceafbg fgdeca fcgab ad baed dfcbge | cfaegdb gda ad gaedcfb +dafbeg eadgbfc fgd bagcf gedb abdfce gafdb fcdgea gd efbda | gebd fdg gaefcd deagcf +cdbe adefb ecfgbad bfcgad bacdf agcefd efd cdeafb aegfb de | gacebdf bdce fbcagd dcefab +cb acdgbe bce cdegabf bgdefa aegdb cdbg acbde fcebga fdace | ebc abfdecg ceb gbacdfe +cg fcedg edfbag ceag fdbec gdc faedcg bdcefag gbafcd dfeag | geca dgfacb cgd cg +bcafde defac dcage dgfbce gafc cgaedf cgd cg fgcedab gdeab | cdg ebadg aedgcf fagc +bdec dagbf ecagfb decbfa aefdc aeb dcegfa adefcbg ebadf be | cdbe gfadb eadfc dcbe +bcgeda fc badfe gbfdaec fcge cfd bedfc cedbg adfgbc dcgebf | cf ebacgfd fgce fdbceag +gd fgbdea dbg badce gdcab fcagedb fbacg beacfg cgfd dcafbg | fcdg gdcbfa dbg gdfc +cag cdfa cgade edgcbf fcebga begfcad gfdcae egabd defgc ac | ca agc fgbace gac +ecabf geacfb eabdcf dec cd bgecfda gfdbce edcba cdaf adgeb | ced aedfgbc dc gbeda +fbdac ea cadefg fae beag facbe bfgeacd cfdegb bgfec gfecba | agbe ea bafce egbdcf +bdc dbega abcdg gbcfa dc gcde cgbaefd cdfbae eagdbf ebgadc | adefcb agcfb cdb gced +ceb ce debfca abgdfe bdaeg cabegd caeg dbgec dcbfg bdecgfa | ce abegd gdfcb fcbdgae +cafedgb dgf bcfd cgdfbe acedfg gbfed agedb aecgfb bfgec fd | fdgbec feacdg df bgcfe +ef abgfc cagfeb gdebfc fbae bcadfg defgabc feg gefac gceda | degac gfbac gabfc gfcea +bfdeca bd eabfgc degbcfa cgdb gefbc dbf ecfbgd gaedf edgfb | dbfge bdf egbfca db +fac cbdfg eacfbg gaecfdb bacfd bfeda acgd ac gbfecd cgfadb | dagc ac dcga bedfa +egfbca aegcf gdcfab fdc adce fcedg cd cfgead fdebg cedagbf | dcgfe fdgbcea aedc cfebga +da bfged afedcb gcebdf gefda fedbga edgbfca gdba eagfc eda | ead dcfebg defcgb efgbcd +adefgb ecgf gcedb fedacb bec fbecdg cdfaebg gedfb gcbad ce | dcbfeag cfbged efgbad bcdfage +dfec gcd agdbe bdafgc afcbge bgecfad bgcde bgfce bgedfc cd | fbecag beagdfc cgd cedf +edbc agcfbe adefg cd defca gfabdc cad dgabefc dfebac bceaf | dbce ebdc febcdga cdgbefa +ecdb eb acgebdf ebf dcfebg bgdefa fcgbd gcdbaf feacg cfebg | bef ecfbg egdcbfa cdgfb +ebfcgd aefcb bfadge efd ed adfcgb fbgdc bfedagc fcebd dcge | gced fbcgd edgc ed +beagf cefbag ebafc gfce gdfeab fcaedbg ec dfcba ecb gbadec | ce acfdb dbgcafe ec +abegfc fbcged bgfea fecabdg gef ge abdgf gaec afecb cfbdea | cbfaedg bface gfe efabgc +bdg bacd edagb fbegac fgaed bdgcae cgbea dfbegc ecgafdb bd | gdeaf cfdgbe gbcaed bd +fbce fdegca egafb aef egdcfba eabgc fe ecdabg agfbd ecgbaf | fadgb cbage bcgdea abfgec +dbafge fedgcab efgdbc bc fbac fbdea gceda bfceda bdcea ebc | eadcb fcdeab cafb bdecgf +cbgae fec aefgcb acfeg fe efgcbd bgceafd fbea cagbed dcfga | edbagfc acefg gbdface ecf +cbfdga bae ebdf fbadge afdgb gfeac acbdge bdacfeg eb agfeb | edbf bea efdcbag aeb +efdcgab bedgaf aecbgf cgfe gfaeb cbgea ecbfad ec gdcab ecb | cgfe eabfg eabgf ec +bdefa dfebgca bfe eadfcb dcbage bfgad debca cgebaf ef cdfe | gacdbe eagcfbd afcgebd dfgbace +gca ebdcfa fdcgea acedb bdcgf eabg gbacde bcgdeaf ga gacdb | ebag abge gac aecdb +abcgf afgcbe baeg gbc ecdbgf gafce facbd cfgade bg egabdfc | aegb cgb bcdgef abcgf +ecagbf bdfgca ecgfd gbe fecgb dafgecb bacfg bgadec efba eb | geb cadfebg beaf be +agcdb bgcaf bf fadebgc daecbf gbdf fbc ebgcda afegc bgcafd | facgdeb dbfg fb bf +fdbeag cgd bdefcag afegd eacgdf dc dgefc ebcagd gfebc facd | geadf dc dc cdg +adcgfe cgebf acdbf abcedf dgfbaec edba cabef ea afe dfagcb | bfgec bfeca ae deba +adegb bgcd cbdfgea dc cedba cagefd dcbgae gebdaf faebc ced | egadb ced dcbg dc +fdeg gd fdbaec bfacg dgcfa ecfdga fadcegb fdcea dceabg gda | efgd eacdfb bcfadeg dag +af ebgfda ecagdb febgc afe dabce cfda febcda baecf becafdg | fa dbfega fa bfeagd +debagfc cbdgfe dcb fdbeg cegb fbced fcead cbdfga bc fabdeg | dcb efadgb dgcfeab ebafdg +cgfdae bdef becfg gcbefa ed abcdg gedcb cgbdef bdcgefa ecd | cde dec bfed bfcgdea +dcfegab becdg gcaedb egd bcdaef gcfdb eg eafcdg cdeab ageb | ged cegafbd egd eg +ba eafcd fcbegda acfgbd bedcgf ebgcfa fabdc dcgfb bagd baf | ba cafed efdbcag efdac +aebcdgf cd efbgac bfcgd cbfga gbefd bfdcga bcad geafcd dgc | fabcged fgaceb cbda dc +cgbaedf fbceg eafbcd degcf gfdcae gdcfa dbagcf dgae edf ed | fcgeb efd ed gdea +ac agfdcbe gcea dgecf fgdca efgcad dfbeac fca fdgba gcebfd | agbdf ca ac gbdfa +gbedaf dbgfc cbg abdfgc geadbc fecbd ebcgafd cafg gc dafbg | cdbfg gcfbad gcbdea fadcegb +bagfec efg bfcdga egac abfecdg afdbge dbefc ge cgbfe acfbg | fbdeag eg eg cbdfe +edbgcf dgbac bdceag dbagf cgd ecagb bceagf cd adce cgbafed | aecd egdbca gacbe gcd +bgfdc gdfbe afdbgc gc fbdac bacg gbafdec cdg cbdefa defagc | egdfb gcabdef cdbfa dgacfb +adgcfb gcd dfecgb cgebfa bgcaf adgcf cdbafeg dg ecafd adbg | bcgaf fadcgeb gd cgbaedf +bafgd cfaebg cefa cfbgead bcf bgcea defgcb bgacf ebcgda cf | fcbgae adfbg cdfgeb adgbf +becfa bcgdf gbceadf gebcfa defa adbcge de dec cebdf bdefac | faed fdcagbe edc bfacge +ebfgd gabd gd gfbcaed abgfec faegb dge aefdbg agdfec cfebd | faecdg cgaedf baefgd dcfeb +ecabd ged aebgfc ecagd dg fdcegb afgce dgaf dcaegf cedbgaf | edcga gfda gd dge +dfg fg eafdb aegdc faged gfba debafg ebgfcad gfbdce acedbf | fedagb edbfac gf fgd +dbgca fedca bfgcad adgcf agdecb dgf cefdgba bgaedf fcgb gf | acefdgb beafdg gfd cfbg +edgacf adegcb fd dbacgfe fabd dfbce egcfb edfbac cbeda fde | dafb bafd acefbd fd +bcefa gbfd eadcgb bgfdae gedcfa abefd efd df gedba fbdgeac | bfdae fgeacdb bacfe gdceba +bdcefg aefgcd gadcb gfb decbfag dfecg bfdgc defb cefagb fb | defb fbcged dbfegac egfdc +fe cedgab cbfe dacbfge cedba fed gafcd dfaec edbfac efdgab | abgedf efcb bedac gefbad +afcgbe cf fbc cegadb bfcdea fcgabed aebdc adfgb cedf cfadb | dafbc bfeagc bcf deacbgf +ebcafdg ecfbg bae dgcabf bcaedg dfbeca ae ebcag gdacb dage | cadbeg gbacd bfdegca eba +cadbe efgbc feacbg dgfecb bgd dg bgfcad ebdgc dgef gbdefca | aefcgb gd bfagced dgb +edgcfa dgbecfa bgedac dfbaec acgdf dg abfgc egdf adcef gdc | cgd cbgfa eacgdb gcafd +cad cfbead abceg edfa fadbcg becad edgfcb bgfaedc cdbfe da | egcab afde dcabfe ecfabd +fgbdc be egb bcdefag ceba gedbac egcda dcfgae debcg gbdaef | ceba edgac eadcfg bcdaeg +cg adcfgbe edbcga gbead cbdfa cga bgedaf faecdg dbacg cebg | gcdabfe fdacge cga bcgad +gacf gf bgeafd gef gefbc efbagc bdceag fdebc acfbedg gbaec | bcgaedf egf gcefb cafdegb +fgbadce cdbag agcfd faec acfegd fa fag cfged fdabeg dbfcge | agf bagefd edgfc gdbacef +agcdb gcadfb dgfcb gfdbec adebg adc ac cfab beagdcf daecfg | ac ca bedga ca +dfa abdcfg agbf cfabd dacgb dcebf eadgcb fa gbdafce ecfgad | af fa bcdaf bgaf +ebdfc cgbaed eg edabfc gefb adfgc gdfec deg ebdfgc debgcaf | abfcde bfge gde dge +dabfegc dfegb cbgf cf fdebgc dcbaef gcfed adecg fbdgea fce | cf gbfc fgcb begcadf \ No newline at end of file diff --git a/2021/Day9/Day9.py b/2021/Day9/Day9.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/Day9/input.txt b/2021/Day9/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day1/Day1.py b/2022/Day1/Day1.py new file mode 100644 index 0000000..9cd3c4a --- /dev/null +++ b/2022/Day1/Day1.py @@ -0,0 +1,6 @@ +if __name__ == '__main__': + with open("input.txt", "r") as f: + weights = [sum([int(i) for i in nums.split("\n")]) for nums in f.read().split("\n\n")] + + print(f"Solution 1: {max(weights)}") + print(f"Solution 2: {sum(sorted(weights)[-3:])}") diff --git a/2022/Day1/input.txt b/2022/Day1/input.txt new file mode 100644 index 0000000..7eb4dc6 --- /dev/null +++ b/2022/Day1/input.txt @@ -0,0 +1,2256 @@ +11223 +6323 +10725 +10761 +3587 + +1274 +1041 +5566 +1759 +1372 +1619 +2228 +1283 +1981 +1885 +5894 +1321 +6081 +4407 +2992 + +7184 +2310 +7975 +2752 +7942 +7616 +3622 +1320 +1231 +6191 + +3069 +10691 +4789 +5329 +6726 +9550 +6188 +3117 + +17492 +3489 +18055 + +12369 +21123 + +2121 +5065 +5377 +1768 +6060 +1256 +1496 +6899 +3569 +3766 +6873 +5490 +2961 + +6407 +3770 +2823 +5998 +7783 +4194 +1866 +5504 +6550 +7857 +2884 + +5385 +4621 +2434 +6123 +2159 +6191 +3552 +6871 + +6531 +4287 +7402 +5634 +3960 + +4955 +6958 +7652 +7416 +7540 +7990 +1696 +2568 +1040 +3087 +5608 + +28948 +24385 + +27643 +31191 + +8674 +10486 +1765 +1787 +4234 +4187 +7126 + +6370 +1098 +2071 +4231 +3223 +1456 +3853 +5740 +6327 +2723 +4716 + +6783 +5772 +4352 +2984 +3483 +2359 +7168 +1581 +6182 +1637 +2601 +4015 + +12691 +14785 +18295 + +1035 +5658 +8643 +2693 +6046 +1531 +6174 +8290 +5239 +3430 + +2510 +1090 +6971 +5314 +6949 +8885 +3334 +9329 +2738 + +23893 +19568 +19775 + +4257 +5830 +3972 +4513 +3988 +7674 +1535 +5402 +6257 +1785 + +12580 + +3869 +4718 +7144 +7107 +4168 +5713 +6920 +5802 +3226 +1389 +5876 + +3405 +1630 +3297 +1130 +4787 +2319 +5745 +5744 +2852 +5594 +1641 +2012 +3828 +3717 +2181 + +6200 +4566 +5973 +4301 +1608 +7023 +6922 +6247 +4402 +6943 +4980 + +6063 +4381 +3878 +2147 +1437 +2822 +5830 +2453 +3898 +6106 +4618 +1905 +1608 +5115 +1656 + +7057 +6579 +5295 +6106 +5517 +5560 +2264 +5144 +5623 +1650 +6594 +5828 + +8444 +4858 +8810 +6516 +5064 +1198 +6087 +8280 +8275 +5471 + +9667 +26851 + +5191 +5421 +2865 +1495 +5491 +3406 +1779 +2454 +6648 +6237 +1868 +1313 + +6885 +8414 +6097 + +9459 +9028 +2432 +4442 +1721 +8546 +5060 + +8042 +13365 +7153 +10483 +7147 + +11597 +1891 +10089 +9866 +11989 +1774 +1386 + +7690 +5023 +5273 +5257 +1790 +2008 +1100 +4395 +3691 +1270 + +34927 +32922 + +22524 +19581 +7007 + +6204 +5778 +2172 +3231 +5452 +4320 +5110 +1397 +4063 +2370 +6075 +3506 +3764 +2327 + +1764 +1282 +1837 +3490 +4161 +5852 +5595 +1428 +4863 +1894 +2983 +2336 +4587 +1656 +5178 + +3987 +6437 +4976 +3214 +2354 +7292 +1167 +4874 +6006 + +6911 +3746 +6773 +7196 +7615 +1359 +3757 +7858 +5074 +6991 +5915 + +4952 +6034 +4897 +3990 +5389 +1886 +3544 +7289 +2881 +2402 +6238 +6533 + +4548 +5600 +5383 +3044 +1113 +6264 +2151 +6527 +7206 +2516 +6959 +7111 + +5811 +4157 +5365 +3234 +5614 +5556 +3486 +2452 +4304 +4990 +2269 +2944 +2060 +4504 + +67337 + +10762 +7277 +4855 +8338 +2555 +4499 +9727 + +7093 +6258 + +2117 +6720 +2717 +1336 +2124 +7329 +1182 +4312 +7579 +3997 + +11769 +4034 +4675 +3409 +5871 +1752 +5233 + +4359 +7926 +8543 +4196 +3184 +9262 +7649 + +11423 +1963 +11334 +11792 + +5951 +5005 +2263 +6667 +1586 +6799 +7104 +5810 + +1474 +1433 +4979 +5569 +5195 +5467 +5503 +6305 +4527 +5721 +4151 +4965 +3459 + +1572 +4083 +3559 +3119 +4290 +5019 +1274 +1243 +5732 +3525 +2310 +4945 +1128 +2249 +5974 + +2324 +6525 +6790 +5283 +4011 +1907 +2385 +6918 +5300 +1177 +5483 +6271 + +2380 +8204 +6100 +3828 +4024 +5895 +1613 +4301 +4242 +4265 + +3519 +1809 +8065 +3966 +7829 +1476 +5391 +2276 +5886 +5447 +5325 + +4424 +3641 +1053 +1843 +2247 +2337 +3572 +1720 +4668 + +7399 +7282 +3897 +6376 +3540 +5313 +6058 +5209 +5392 +5429 + +4724 +6793 +7620 +4771 +8430 +2765 +10691 + +9003 +5417 +7064 +3317 +2271 +3973 +2491 +5203 + +1978 +5937 +5166 +1587 +5342 +1353 +2506 +3213 +2041 +4374 +3097 +1710 + +2998 +7694 +2359 +6486 +3319 +7771 +5340 +8062 +6645 + +6121 +5006 +3579 +12148 +3412 +8373 +10656 + +2851 +13441 + +2361 +7577 +8360 +2128 +4313 +6552 +5422 +8627 + +3435 +11683 +4085 +11581 +3017 +4731 +8645 + +10115 +9761 +7367 +5257 +10263 +5022 +9674 +6552 + +4997 +2470 +2855 +1860 +2547 +3060 +1036 +3288 +6338 +5423 +4701 +6740 +2226 + +2182 +2468 +2724 +4116 +2740 +1677 +1642 +2717 +1604 +2874 +4231 +5637 +5907 +1780 +5585 + +1425 +5503 +8059 +2459 +2334 +1655 +10561 + +7278 +5393 +6827 +1776 +6841 +6404 +7090 +7051 +1764 +2107 +5593 +3639 + +17501 +16452 +11047 +7696 + +11332 +9288 +13543 +2406 +7699 +5661 + +9845 +14017 +12535 +7383 + +4341 +1266 +3942 +2669 +1219 +1987 +5423 +2973 +5656 +4981 +3084 +4455 +1780 +1772 +2947 + +6183 +2669 +6038 +8553 +12075 + +3041 +6281 +2661 +1855 +6460 +6508 +6582 +5775 +3895 +1141 +1096 +3572 + +1458 +2196 +4078 +1940 +2785 +2560 +6964 +5713 +7913 +6951 +2396 + +1820 +3990 +16654 +15798 + +1445 +1269 +2821 +5078 +3402 +4371 +6619 +3479 +5353 +1921 +5645 +3800 + +11876 +15581 +11141 +17267 + +9397 +8627 +3948 +4177 +6374 +4943 +7444 +4766 +5053 + +6847 +8418 +2322 +2549 +1334 +5677 +1151 +8407 + +69814 + +1529 +5847 +8312 +7219 +4067 +7646 +5212 +5183 +9533 + +17696 +2661 +7171 + +8696 +10434 +5330 +6274 +5824 +2386 +10535 +8402 + +3339 +9444 +3712 +4540 +4296 +4385 +2453 +10416 + +4225 +7128 +7768 +7085 +1382 +4348 +6967 +1719 +3131 +4060 +3516 + +3329 +3612 +1093 +4118 +2946 +2250 +1200 +2193 +4142 +3120 +2394 +1217 +1214 +2310 +3690 + +9634 +10560 +3796 +7011 +10745 +10677 + +4024 +4466 +6953 +1754 +2261 +6560 +6690 +2671 +6082 +5522 +4024 + +16675 +17642 +1382 +12630 + +4454 +4023 +6985 +6880 +5862 +3351 +2861 +5649 +6833 +4668 +2089 +3832 + +3744 +2151 +3951 +3859 +1900 +2921 +1267 +2132 +4015 +3160 +4747 +4780 +4398 +4160 +5221 + +18994 +14365 +11726 + +8313 +16460 +18955 +7491 + +7558 +1673 +1267 +4825 +4651 +5819 +9798 + +50633 + +4542 +1002 +4677 +4874 +5472 +3518 +3642 +3083 +4735 +6769 +5389 +2869 +4223 + +4275 +4306 +4645 +2360 +4603 +7805 +7964 +8022 +7382 +6504 + +2452 +9071 +6449 +11056 +7775 + +8750 +8343 +3753 +11284 +2024 +1088 + +2376 +8200 +1858 +11313 +10710 +5992 + +32813 +26299 + +15734 +8393 +7230 +20011 + +19297 +21723 +14837 + +2126 +3511 +6139 +3427 +6135 +5685 +1514 +4338 +4446 +3334 +4417 +1343 + +5737 +1004 +1168 +4504 +2467 +3431 +3800 +1931 +5287 +4057 +6507 +4662 +1845 + +6896 +5740 +6075 +5798 +6055 +4309 +5679 +7279 +1311 +4647 + +3594 +7095 +7139 +6593 +9371 +6162 +1320 +7202 +6216 + +3592 +1250 +2848 +6524 +1240 +6845 +5263 +1176 +1165 +3641 +5653 +3051 +6168 + +5535 +4847 +13599 +5746 +5288 +7316 + +13934 +13998 +25642 + +4070 +1691 +6012 +5137 +3924 +2272 +4886 +4272 +3467 +5077 +3114 +3794 +5220 +1129 +2113 + +8763 +11869 +7453 +2318 +10101 +5238 +4663 + +17968 +21896 +25750 + +2567 +6997 +8972 +4451 +4917 +4229 +5235 +8327 +2785 + +6031 +17803 +19811 + +5995 +3180 +2417 +5245 +2481 +2578 +3879 +4348 +1183 +2027 +1809 +1278 +3428 +2253 +5083 + +5958 +8942 +6761 +4251 +1630 +2788 +7080 +6954 +4471 + +4874 +2390 +4410 +1109 +5096 +6956 +1676 +4848 +3521 +5799 +5997 +3748 +5709 + +3624 +7400 +4652 +3504 +2104 +6861 +4377 +1647 +4293 +7214 +7099 +5289 + +10481 +1917 + +3507 +5672 +2015 +2831 +6385 +4068 +5241 +7465 +4759 +5053 +7052 + +6280 +9794 +4646 +6980 +3720 + +8585 +9331 +3157 +9319 +7640 +4446 +5594 +1358 + +6644 +9767 +6051 +6421 +8044 +5769 +1292 +6633 + +1230 +1380 +4214 +4932 +5426 +3025 +4739 +2440 +4998 +2899 +3845 +2650 +2980 +6266 + +6378 +1563 +3315 +4910 +1256 +9085 +5390 +10324 + +8771 +4691 +1164 +1066 +9470 +4868 +9659 +7827 + +1105 +6108 +4769 +3728 +1575 +4603 +6185 +6376 +5012 +5673 +1280 +5428 +6304 + +2239 +1560 +5668 +4430 +3985 +4435 +5807 +4135 +5911 +4154 +2544 +2498 +5446 +4814 + +14668 +11210 +13344 +12364 +9961 + +11641 +1360 +7500 +4268 +9701 +4171 +2548 + +1947 +3352 +5709 +4353 +4671 +3119 +2870 +2138 +4595 +2051 +1807 +3416 +3492 +1334 +4695 + +7970 +8487 +1319 +1471 +7599 +8547 +6998 +1005 +1741 + +4692 +1989 +2772 +4105 +2154 +1885 +4124 +6762 +5784 +7407 +2898 + +3169 +2220 +5328 +4295 +8593 +3355 +4605 +6313 +1871 + +10304 +9352 +7552 +9610 +1175 +10454 +3342 +2821 + +16100 +9638 +8215 +10806 +3023 + +29092 +1901 + +8203 +13092 +10935 +13568 +11032 +2819 + +4185 +6055 +1638 +4727 +2223 +1707 +2701 +2955 +5282 +1704 +1728 +3464 +4085 +4768 +4239 + +5205 +7478 +1929 +2900 +5997 + +34467 +23210 + +5963 +1701 +6455 +9686 +8353 +5662 +3429 +6921 +9281 + +4888 +4749 +6983 +4976 +2664 +9637 +5002 +2791 + +10256 +25711 +22494 + +3115 +2602 +3274 +4413 +4512 +1994 +3181 +3316 +1755 +2764 +5607 +1058 +4609 +1329 +6055 + +6595 +4222 +3407 +10124 +1446 +4008 +7234 + +3194 +4401 +4598 +3461 +2599 +6216 +4501 +1280 +4413 +6073 +1774 +5722 +3007 +3088 + +10411 +25669 +8871 + +2613 +2848 +2537 +1277 +5831 +6144 +5639 +6685 +6095 +3826 +1796 +6333 +6555 + +1310 +6643 +9862 +2064 +1697 +4078 +3647 +6155 + +4361 +2370 +2349 +2015 +4278 +4873 +5165 +4172 +3229 +6081 +5611 +4981 +5538 +4877 +3416 + +4484 +6999 +7901 +7691 +2688 +5054 +5847 +10641 + +49205 + +4445 +3962 +4702 +5865 +4458 +4673 +4979 +2816 +4194 +5485 +1370 +1414 +1938 +6069 +1713 + +1272 +5551 +6047 +1084 +1476 +6923 +3815 +2695 +3753 +4342 +4076 +7109 + +1166 +10620 +2255 +15911 + +3776 +31838 + +5462 +7846 +10506 +10139 + +5095 +7569 +5193 +2026 +7823 +7835 +8264 +3499 +9567 + +8657 +6625 +5734 +6420 +3489 +8213 +2147 +7071 +3228 +6418 + +10360 +1069 +14776 +6090 + +5317 +3597 +5311 +2456 +1009 +3954 +5518 +3283 +3619 +4970 +5877 +4643 +5428 +2472 +1800 + +9343 +8166 +3967 +4650 +6978 +1809 +9866 +1354 + +5664 +5951 + +18203 +7380 +2701 +16860 + +2995 +2739 +5498 +1567 +8326 +2770 +4838 + +10006 +1510 +3844 +1706 +8009 +11790 +7550 + +1185 +2494 +1299 +4168 +6869 +4108 +4941 +5636 +2668 +4842 +3448 +3087 +3871 + +4568 +21522 +11228 + +1210 +5132 +6540 +8377 +5968 +5358 +4232 +4710 + +6603 +23736 + +4328 +2190 +4021 +4316 +4760 +3010 +5604 +4746 +5843 +5327 +2718 +4956 +3167 +3359 + +8760 +6848 +7827 +7235 +2491 +6362 +7344 +4841 +4454 +8604 + +8394 +5794 +13797 +15870 +4818 + +8412 +14825 +16385 +11468 + +29542 + +6924 +5318 +6833 +3875 +6931 +3650 +2849 +2068 +7369 +1375 +2375 +4576 + +2269 +5568 +4133 +3853 +1996 +5885 +1074 +3356 +5187 +6079 +1522 +5220 +1704 +2942 +1641 + +14866 +9313 +23116 + +13359 +13222 +15441 +14439 +16050 + +8511 +10467 +8505 +2880 +4654 +6594 +3942 +1306 + +6483 +7197 +4990 +6774 + +8594 +7425 +5701 +9526 +2538 +9519 +8284 +8558 +9647 + +1181 +7034 +13744 +6912 +9743 +8735 + +5076 +7046 +5565 +2810 +1461 +4916 +3777 +5174 +1842 +6263 +4151 +6307 + +6262 +11239 + +2639 +3859 +6504 +4947 +6810 +6805 +3288 +3042 +5873 +6339 +2931 +4332 +1707 + +1834 +2381 +5243 +5769 +3444 +2755 +4929 +1520 +3791 +2443 +1521 +6059 +3943 +5845 + +19725 +18762 +2318 +11981 + +7867 +10660 +2834 +13236 +1524 +7225 + +1377 +2138 +2955 +1407 +3971 +1872 +1293 +6090 +1203 +6798 +2729 +3360 + +12399 +5994 +7732 +12299 +12160 + +10151 +19182 +18060 +19397 + +34075 +25670 + +5145 +6043 +5241 +2001 +6063 +1342 +4769 +6629 +7465 +3500 +4873 + +4825 +5192 +1670 +5946 +8053 +2622 +1436 +5977 +4523 +4415 +5831 + +7035 +3322 +7624 +1840 +2078 +6420 +6273 +4362 +4874 +7712 +5714 + +3644 +4526 +2940 +7904 +7620 +6260 +4794 +3705 +3585 +3033 + +5391 +6000 +3398 +3922 +4655 +6747 +6505 +3402 +2082 +1856 +6626 + +6085 +5246 +3072 +8802 +3666 +6219 +7612 +4531 + +5420 +2366 +3861 +5686 +2737 +6276 +2292 +6004 +6195 +1605 +1639 +7004 + +4932 +2314 +2297 +1611 +4624 +7495 +3485 +6580 +1751 +5170 +6100 + +9273 +11201 +6597 +3958 +11219 +8899 +9413 + +28386 +26100 + +3170 +2290 +6393 +2973 +5677 +4855 +1937 +4071 +2830 +2344 +4708 +3775 +2780 +5562 + +11208 +4958 +7770 +10314 +8593 +11973 +6000 + +19570 +24273 +20898 + +1972 +12111 +8510 +1145 + +12217 +13432 + +7383 +1407 +5216 +8061 +10559 +8810 +1385 + +2300 +3845 +4200 +3033 +2758 +2464 +1543 +1216 +4980 +4409 +3881 +5162 +1743 +2350 +4386 + +5339 +2610 +10101 +3159 +15809 + +6064 +3176 +6116 +1092 +4494 +1245 +4343 +2704 +5405 +5426 +5126 +4722 +1609 +4367 +2280 + +16523 +23950 +11677 + +9674 +1499 +11422 +13298 +9949 +10616 + +3895 +9314 +12341 +8416 + +1949 +9055 +3289 +5458 +9902 +7137 +6167 +5111 + +2141 +2700 +2221 +7184 +6103 +4030 +3695 +4116 +3358 +6650 +5498 +1608 + +3900 +5189 +3383 +5800 +5109 +2383 +1001 +6074 +1110 +5187 +5430 +3448 +1899 +5865 +1098 + +8948 +2222 +8881 +1948 +6993 +4242 +4588 +7172 + +6514 +3993 +9681 +6992 +6150 +10477 +5089 +8951 + +1714 +7959 +12561 +13204 +13321 +3506 + +4979 +3299 +1108 +5065 + +5536 +8474 +8551 +5400 +1405 +10623 +5028 +9292 + +1199 +4551 +4953 +2814 +4224 +6361 +3457 +3640 +3139 +4825 +2001 +1432 +4116 +3688 + +13664 +10207 +6028 +3098 +4410 +4175 + +5623 +3796 +2402 +4038 +2083 +2761 +1806 +3806 +1704 +1905 +1550 +6133 +4524 + +3052 +3739 +3842 +7695 +8135 +3738 +4717 +3232 +8761 + +4498 +4685 +7377 +2806 +5031 +3386 +1609 +7810 +3717 +2535 +6173 + +15301 +1343 + +6134 + +3331 +8838 +18585 +2670 + +10770 +4959 +8095 +1497 +1627 +4809 +5857 +10329 + +8734 +3895 +4301 +5958 +1740 +10403 +8830 + +3531 +13028 +12682 + +19031 + +14044 + +2867 +1941 +5744 +9099 +3583 +1719 +3917 +2737 +4593 + +4474 +2684 +9230 +7981 +3032 +4811 +9558 +8513 + +23797 +27967 + +9143 +8743 +9120 +4760 +1985 +7971 +7476 +10415 + +24714 +13638 + +13753 +13010 +12301 +15112 +13584 + +1467 +2681 +4482 +3424 +7161 +7828 +6262 +5660 +6950 +5807 +5109 + +3023 +5008 +5278 +1131 +1563 +6917 +1553 +2406 +3173 +3255 +2772 +1427 +1930 \ No newline at end of file diff --git a/2022/Day10/Day10.py b/2022/Day10/Day10.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day10/input.txt b/2022/Day10/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day11/Day11.py b/2022/Day11/Day11.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day11/input.txt b/2022/Day11/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day12/Day12.py b/2022/Day12/Day12.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day12/input.txt b/2022/Day12/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day13/Day13.py b/2022/Day13/Day13.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day13/input.txt b/2022/Day13/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day14/Day14.py b/2022/Day14/Day14.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day14/input.txt b/2022/Day14/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day15/Day15.py b/2022/Day15/Day15.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day15/input.txt b/2022/Day15/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day16/Day16.py b/2022/Day16/Day16.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day16/input.txt b/2022/Day16/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day17/Day17.py b/2022/Day17/Day17.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day17/input.txt b/2022/Day17/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day18/Day18.py b/2022/Day18/Day18.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day18/input.txt b/2022/Day18/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day19/Day19.py b/2022/Day19/Day19.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day19/input.txt b/2022/Day19/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day2/Day2.py b/2022/Day2/Day2.py new file mode 100644 index 0000000..00232e1 --- /dev/null +++ b/2022/Day2/Day2.py @@ -0,0 +1,49 @@ +if __name__ == '__main__': + with open("input.txt", "r") as f: + rounds = f.read() + + signsWin = { + "A": "Y", + "B": "Z", + "C": "X" + } + + signToSign = { + "A": "X", + "B": "Y", + "C": "Z" + } + + signLoose = { + "A": "Z", + "B": "X", + "C": "Y" + } + + signsToScore = { + "X": 1, + "Y": 2, + "Z": 3 + } + + score = rounds.count("X") + rounds.count("Y") * 2 + rounds.count("Z") * 3 + rounds.count("A Y") * 6 + rounds.count( + "B Z") * 6 + rounds.count("C X") * 6 + rounds.count("A X") * 3 + rounds.count("B Y") * 3 + rounds.count( + "C Z") * 3 + + print(f"Solution 1: {score}") + + rounds = rounds.split("\n") + score = 0 + for current in rounds: + hisSymbol, result = current.split(" ") + + if result == "X": + score += signsToScore[signLoose[hisSymbol]] + elif result == "Y": + score += signsToScore[signToSign[hisSymbol]] + score += 3 + elif result == "Z": + score += signsToScore[signsWin[hisSymbol]] + score += 6 + + print(f"Solution 2: {score}") diff --git a/2022/Day2/input.txt b/2022/Day2/input.txt new file mode 100644 index 0000000..a2096ca --- /dev/null +++ b/2022/Day2/input.txt @@ -0,0 +1,2500 @@ +C Z +B Y +C X +B Z +C Y +B Y +C Z +C Z +B Y +B X +C Y +B Y +B Z +A Z +A Y +B X +C Y +C Z +B Z +A Y +C Y +C Z +A Y +C Z +B X +B Y +B Y +A Y +C Z +B Y +B Y +B Y +C Z +C Y +B X +C Y +A Z +C Y +B X +B Z +C Z +C Z +B X +A Y +A Y +C Z +C Z +C Z +B Y +C Y +B Y +C Z +C Z +A Z +B Y +C Y +B X +A Y +C Y +B Y +C Z +A Y +B Y +B Y +B Y +B Z +C Y +A X +C Y +B Y +C Z +A Z +B X +C Z +C X +A Y +C Y +B Z +C Y +C Z +B X +C Z +C Y +B Y +B Y +B Y +B Y +A Y +C Z +C Z +B Y +B Y +C Z +B Z +B Y +B Y +B Y +A Y +B Z +B Y +C Y +B X +B Y +B X +C Z +B X +C Y +B Z +C Z +C Z +B Y +B Z +C Z +B X +C Y +B Y +C Y +C Z +C Y +B Z +C Z +B X +B Y +C Y +B X +B Z +B Y +C Y +B X +C Y +C Z +B Y +B Y +B X +C Y +C Z +C Z +B X +C Y +C Z +B Y +B Z +C Y +C Y +C Z +C Y +C Z +B Y +B Y +C Z +C Y +C Y +C Y +B Y +B Y +A Y +C Z +B X +B Y +C Z +C Z +C Z +B Y +B Z +C Y +C X +B Y +C Z +C Z +B Y +C Z +C Z +C Z +B Z +C Y +B Y +B X +C Z +B X +B X +B Y +C Z +B X +C Z +B Z +C Z +B X +A Y +B X +A Y +A Y +A Z +C Y +B Z +B Z +B X +C Y +C Y +B Y +C Z +B X +C Z +B Y +B Z +C Z +C Z +B Y +C Y +B Y +C Y +A Y +C Z +C Y +C Y +B Y +B Z +C Y +B X +B Z +A Z +C Y +B X +B Y +B Y +B Y +B Z +C Z +A X +B Z +B X +C Y +B Z +B Y +A Y +C Z +B X +C Z +B Z +C Z +B Y +C Z +C Y +B X +C Z +C Y +B Y +C Z +C Y +C Z +C Y +B Z +A Y +B Y +B X +C Y +A X +C Z +A Y +C Z +B Y +C Z +B Y +C Z +B Y +B Y +B Y +B Y +A Y +C Z +B Y +A Z +B Z +C Y +B Y +B Z +A Y +C Z +B Y +B Y +C Z +A Z +B X +A Y +C Z +B Z +B Z +B Y +B X +A Y +B Y +A X +C X +B Z +B Y +C Y +C Z +C Y +C Z +B Y +B Z +C Y +A Z +C Y +C Y +C Y +A Z +C Y +C Z +C Z +C Z +C X +B Y +B Y +C Y +C Z +C Y +B Y +C Y +C Z +C Z +B Z +B Y +B Y +B Y +C Z +C Y +B X +C Y +B Z +B Y +B Y +B Y +C Y +C Y +C Z +C Z +C Y +B X +C Y +B Y +B Z +B Z +B Z +C Z +B X +C Y +C X +C Y +B X +C Z +A Y +A Y +B X +C Z +A Z +C Y +C Z +A Y +C Z +B Y +B Y +C Y +B Y +C Y +B Y +C Y +B Y +C Y +C Y +B Y +C Z +B Z +C Y +A Y +C Y +A Y +B X +C Y +A Y +B Z +B Y +C Y +B Y +C Y +B Y +C Y +C Z +C Y +C Z +B Y +C Y +C Z +B Y +B Z +C Y +A Y +C Z +C Z +C Z +B Z +C Y +A Y +B Z +A Y +B Y +C Y +C Z +C Y +A Y +B X +A Z +C Z +C Y +B X +C Z +A X +C Z +C Y +C Z +B Y +C Y +C Y +B Y +C Y +C Z +C Y +C Y +C Y +A Y +C Z +C Y +C Z +C Z +B X +A Y +B X +B Y +A Y +B Y +A Y +C Z +A Y +C Y +C Y +B Y +C Y +B Z +C Y +C Z +B Z +B Y +B X +B Y +B Y +C Y +C Y +B Y +B X +C Z +B X +B X +A Y +B Z +B X +A Y +C Y +C Y +B X +B Z +C Y +B Y +B X +B X +C Y +C Z +B Y +B Y +B Y +A Y +A Y +C Z +C Z +C Y +B X +C Y +C Y +B Z +B Z +A X +C Y +C Y +A Z +A Y +B X +B Y +C Y +B Y +C Z +B Y +C Y +B Y +C Z +C X +C Z +A Z +B X +A Z +C Z +B Y +C Y +B Z +C Y +B X +C Y +C Z +B Y +A Y +C Y +C Y +B Z +B Y +B X +C Z +B Y +C Y +C Y +C Y +A Z +B Y +B Y +C Y +B Y +C Z +B Y +C Y +B Y +C Z +B X +C Y +B Y +B X +C Y +C Z +C Y +B X +B Y +C Y +B Z +B X +C Y +B X +B Y +B Z +C Y +B Y +C Y +B Y +B Y +C Y +B Z +B Y +C Z +C Z +B X +A X +C Z +B Z +B Y +B X +C Z +C Z +B Z +A Z +B Y +C Y +C Z +C Y +C Y +C Y +C Z +B Y +B Y +C Y +C Z +C Z +C Y +C Y +C Z +B Y +C Y +B Y +B Y +A Y +C Y +A Y +C Z +C Y +C Z +C X +B X +C Z +A Y +B X +C Z +C Z +C Y +B Z +B Y +A Y +C Z +B X +B Y +B Z +B X +C Y +B Y +C Z +C Z +C Z +C Y +A Y +C Z +C Z +B Y +B Y +B Y +C Y +C Y +C Z +B X +C Y +C Y +C Y +B Y +C X +B Y +B Y +C Y +A Z +C Y +C Z +A Y +C Y +B Z +C Y +C Z +A X +B X +C Z +C Y +B Y +C Y +C Y +B Y +C Z +C X +C Y +C Y +B X +C Y +B Y +C Y +C Z +A Z +B X +B X +C Z +C Y +B Y +B Z +B Y +B Z +A X +B X +B X +B X +C Y +A X +C Z +C Z +B Y +B X +B Y +B Y +C Z +B Z +C Y +C Y +B X +B Z +C X +A X +B Y +C X +C X +B Y +C Z +C Z +C Z +B X +B Z +C Y +B Y +A Y +C Z +B Z +A Z +B X +B X +B X +B Y +B X +B X +B X +B Y +C Z +C Y +C Y +C Y +A Y +C Z +C Y +C Z +C Y +B Y +A X +A Z +A Z +C Z +B Z +B Z +B Y +C Z +B Y +B X +B Y +B Z +A Y +B Y +B Y +B Z +C Y +B Y +C Y +B Y +C Y +B Z +C Z +B Z +C Y +B Z +B Y +B Y +A Y +C Z +B Y +B X +B Y +B X +C Z +C Y +B Z +C Z +C Z +A Z +C Z +B X +C Z +C Z +C Z +C Y +B Y +B X +C Y +C Y +C Z +C Z +B X +C Y +C Z +B Z +A Y +A Y +B Y +C Y +B Z +A X +C X +C Y +A Y +B Z +B X +C Z +C Y +B Y +C Z +C Y +B Z +C Z +C Z +C Y +B X +C Z +C Y +B Y +C Y +C Y +C Z +B X +C Y +C Z +C Z +C Y +C Y +B Y +C Y +B X +C Z +B Z +B X +A Z +C Z +B Z +C Z +C Y +B X +C Z +A Z +A Y +A Y +C Y +B Y +B X +C Y +C Z +B X +A Y +B Y +B X +B X +C Y +B Y +C Y +C Z +B Y +B X +C Y +B Y +B X +A Y +B Y +B Y +C Y +A Y +B Y +A Z +C Z +A X +C Z +C X +C Z +C Z +C Y +B Z +B Z +A Z +A Y +B Y +B Y +C X +C Z +C Z +B Z +A X +C Y +C Z +A Y +A Y +B X +C Z +B Z +A X +C Z +C Y +B X +C Y +C Y +C Z +C Z +B X +C Z +A Y +B Y +B X +B Y +C Y +B X +C Y +B Y +A X +C Z +C Y +C Z +B Z +C Y +C Y +C Z +C Z +A Y +C Z +B Y +C Z +C Y +B Y +C Y +A Y +C Y +A Z +C Y +A Z +C Z +C Z +B Y +C Z +C Y +A Y +C Y +A Y +C Z +B Z +B Y +B Z +C Z +B Y +A Z +B Y +C Z +A Y +B Y +A Z +B X +B Z +B X +B Y +B Y +B Y +C Y +C Z +B Y +C X +B Y +A X +B Y +B Y +C Z +C Z +A X +C Z +C Y +C Z +B Y +B Y +B X +B X +A X +B X +B Y +B Y +C Z +B Z +B Y +B Y +B Z +B Y +C Z +C Z +B X +B Z +A Z +B Z +C Z +B Z +C Y +C Z +C Z +B X +C Y +C Y +B X +B Y +C Y +B Y +C Z +C Y +B Y +B X +A Z +C Z +C Y +C Y +B Z +B X +A Z +B Z +C Z +C Z +B X +B X +C Z +C Y +B Z +C Z +C Z +B X +C Y +C Y +B Y +C Y +B Z +C Z +A Y +B X +C Y +C Z +B Y +B X +B X +A Z +B Y +B Y +C Z +B X +A Y +A X +C Y +B Z +B X +A Y +B Y +B X +C Z +C Z +C Z +C Z +C Z +A Y +C Y +C Z +C Y +C Z +C Y +A Y +B Y +C Y +C Y +B Y +C Z +A X +B Y +C Y +C Z +B Y +C Z +B Y +A Z +B X +B X +A Y +B X +C Y +B Z +B Y +B Z +C Y +A Y +C Z +A Y +A Y +C Z +C Z +C Y +B X +A Y +C X +C Y +C X +C Z +B Y +B Y +C Z +B X +B Y +C Z +B X +C Z +C Z +B Y +A Y +B X +B Y +C Z +B Y +C Z +A Y +B X +C Z +C Y +A Y +C Z +A Y +C Y +A Y +C Z +B X +B Y +B Z +A Y +C Z +C Y +C Z +B Z +C Z +C Y +C Y +B Z +C Z +C Y +B X +B Y +A Y +A Y +B X +C Y +C Y +C Z +B Y +B Z +B X +B Y +B Y +B Z +B Y +B Y +B Z +B Y +B X +C Y +C Y +C Z +B X +C Z +C Y +A Y +C Y +C Z +B Y +A Z +C Y +C Z +B X +A Y +C Y +C Y +C Y +A Y +A Y +C Y +B X +C Z +A Y +C X +B Y +C Y +B Y +C Y +B Z +C Y +A Z +B Y +A Y +A Y +B X +B Y +B Y +B Y +C Y +B Z +C Z +B X +B X +B X +C Y +B X +C Z +B Z +C Z +B Y +C Y +C Z +C Y +C Y +B Y +B Y +B Z +B Y +C Z +B Y +B X +C Z +A Z +C Y +C Y +C Z +B Y +A Y +C Z +C Y +B Z +C Z +B Y +B Z +B X +C Y +B X +C Z +B Z +C Z +C Z +B Y +B X +B X +C X +C Z +C Z +A Y +C Z +C Y +C Y +C Y +C Z +C Y +B X +B X +B X +C X +C Y +B X +B X +B X +B Z +A Z +B X +C Y +B Y +C Z +A Z +B Y +B X +B Z +C Y +B Z +B Y +A Z +C Z +B Y +C Y +B Y +B X +C Y +A Z +C Z +C Y +B Y +B X +C Y +C Z +C Y +C Z +B Y +A Z +B Y +B X +C Y +C Y +A X +B X +C Y +C Z +A Z +C Z +C Y +C Z +B Y +B Y +C Z +A Y +C Z +B X +B X +B Y +B Y +B X +B X +B X +B Z +B X +A X +A Y +C Z +C Y +A Y +C Y +C Z +C Y +B Y +C Z +A Y +B X +B X +C Y +C Y +B Z +B Z +B Z +B Y +B Y +B Y +B Y +C Y +C Z +B Z +A Y +B Z +C Y +C Y +C Z +B X +A Y +C Y +B X +B Z +A Y +C Y +C Z +A X +C Z +B X +B X +B Z +A Y +C Z +B Z +C Z +A Y +A Y +B Y +B Y +A Y +C Y +A Y +B X +C Y +C Z +B Y +B Z +C Z +C Y +B Y +C Y +C Z +B Y +C Z +C Y +A Y +C Y +C Y +B X +C Y +B Y +B Y +B X +C Z +B Y +C Y +C Y +B Y +B Y +B Z +C Y +C Z +A X +C Z +C Y +C Y +C Y +B Z +C Y +C Y +C Y +A Y +C Y +A Y +C Y +C Y +C Y +C Y +C Y +C Y +A Z +B Z +B Y +C Z +B Y +C Z +B Y +C Z +B Y +C Z +C Z +C Z +C Y +C Z +B Y +B Y +C Y +C Z +B Z +C Y +A Y +C Y +C Z +C Y +C Y +A Z +B Y +C Y +B X +B Y +C Y +C Z +B Y +C Y +B X +B X +B Y +C Y +B Z +B Y +A Y +B Y +B Y +B X +C Z +B Z +B X +C Z +A Z +B Z +C Y +C Z +C Y +B X +C Y +C X +B Z +C Y +C Y +B Y +C X +B Y +C Z +A Z +C X +A Y +B Y +B Y +C Z +C Z +B Y +B Y +B Z +C Z +C Y +C Z +B X +A Z +C Y +C Y +B Z +B X +B Y +B X +A Z +C Y +B Y +C Z +A Y +B Z +C Y +B X +B X +B Y +B Y +B Z +B X +C Z +C Y +B X +B X +B X +B Y +B X +B X +B Y +B Y +B Y +C Y +A Z +C Z +C Y +B Y +B Y +B Z +C Z +C Y +C X +B Z +A X +C Y +B X +B Y +C Y +A X +C Y +C Y +B Y +B Y +B Y +A Z +C Y +C Y +A X +C Y +A Z +C Z +B X +A Y +C Z +B Z +B Y +B Y +C Y +B Y +C Z +B X +C Z +B X +A Y +C Z +C Y +B X +B Z +B Y +B X +C Y +C Z +C Z +A Z +B Z +B Z +C Z +C Y +C Z +C Y +B Z +B Y +B Y +C Y +C Z +C Y +C Y +C Z +A Y +B Y +A Z +B Z +C Z +B X +A Y +B Y +C Y +C Z +A Y +C Y +B Y +B X +C Y +B Y +C Y +A Y +C Y +B Y +B Z +C Z +B X +B X +C Z +C Y +C Z +B Y +C Y +B Y +B Y +C Z +C Y +A Z +B Z +B X +C Z +C X +C Z +B X +C Z +C Y +B X +B Y +B Y +C Z +C Z +C Z +B Y +B Y +A X +B X +C Z +C Y +C Z +B Y +C Y +B Y +C Y +C Z +C Z +C Y +C Y +B X +B Y +B Y +C Y +B Y +A Y +B Y +B Z +C Z +C Z +A Z +C Z +B Z +B Y +C Z +B Y +B X +B Y +A Y +A Y +B Y +C Y +B Z +B Y +B Y +B Y +B X +B X +B X +B Z +B Z +C Z +A X +C Z +B Y +C Z +A Y +C Z +C Y +A Y +B Z +B Y +C Z +B Y +B X +B Z +C Y +C Z +C Z +C Y +B X +B X +C Y +C Y +A Y +C Y +B Y +C Y +C Y +C Y +B X +C Z +B Y +C Z +B Y +B Y +A Y +B Y +C X +B Y +C Y +B Y +C Z +C Y +B X +B Y +C Y +B Y +B Z +B X +C Z +A X +C Y +C Y +B X +B Z +B X +C Y +C Y +A Y +B Y +C Y +C Z +B Y +B Y +B Z +A Y +B Z +B X +B Z +C Y +B Y +C Y +C Y +B X +B Y +A Y +C Y +C Z +C Y +B X +B X +C Y +B Y +A Z +C X +C Z +B Y +C Z +C Y +C Z +C Y +A Z +B Y +C Y +B Z +B Y +B X +B Y +B X +C Z +C Y +B Y +C Y +C Z +C Z +B Y +B X +C Y +C Y +B Y +B X +C Z +B X +C Z +C Y +B Y +C Y +C Z +C Y +B Y +C Z +A Z +A Y +C Y +A Y +C Y +B Y +B Y +B Y +C Y +C Z +C Y +C Y +B X +B X +C Y +B X +C Y +A Y +B Y +B Y +C Z +C Z +B X +C Z +C Z +B Y +C Z +C Z +B Z +B Z +C Y +A Z +C Z +C Z +B X +C Z +B Z +B Y +A Y +B X +B Z +A Y +B Y +B Y +B X +B Y +C Y +A Z +B Y +C Y +A Y +C Y +B Y +C Y +C Y +A Y +C Y +B Y +B Y +B Z +C Z +C Z +C Y +B Y +C Y +B Z +B X +C Y +C Y +B Y +B Z +B Y +A Y +A Y +A Z +C Y +B Y +B Y +C Z +C Z +C Y +C Z +C Y +B X +C Z +C Y +C Y +A Y +B Z +C Z +A Y +B Z +B Y +B Y +B Y +B Y +C Y +C Y +A Y +C Z +C Z +A Z +B Y +B X +B Z +A Z +C Z +B X +B Y +A X +C Y +B Z +A Y +C Z +C Y +A Y +B X +C Y +B X +C Z +B X +B Y +B X +A Z +B Y +C Z +C Y +B Y +A Y +B X +C Y +B Z +B X +A Z +A Y +C Y +C Z +C Y +B X +C Y +C Z +B Y +A Y +C Y +C Z +C X +B Y +C Y +B X +B Z +B Y +C Z +C Z +C Y +B X +C Y +B Z +C Z +C Y +C Y +C Y +C Z +C Y +B Y +C Y +A Y +C Y +B X +B Y +A X +B Y +B Y +B Y +A Y +B X +B Z +B Z +C Z +A Z +C X +B Z +B Y +C Y +C Z +B Z +B Y +B X +C Y +C X +C Y +C Z +A X +B X +B Y +B Y +C Z +B X +B Z +B X +B X +B Y +C Y +B Y +B Z +C Y +C Y +B Z +B Y +C Y +C Y +C Z +C Z +C Z +B Y +B Z +C Y +A Z +C X +B Y +C Y +C Y +B Y +C X +C Y +B Y +C Y +B Y +B Y +C Y +C Z +C Z +C Z +C Z +B X +C Z +C Z +B Y +C Y +A Z +B X +C Z +B Z +C Y +C Y +B Y +B Y +B Z +C Y +B Z +C Z +B Y +C Z +C Z +B X +B Z +C Y +C Y +C Z +B X +C Z +B X +C Y +C Y +B X +C Z +C Z +B Y +C Z +B Y +B Y +C Y +C Y +B Y +C Y +B Y +A Z +B Y +B Y +B Z +C Y +B Z +B Y +C Y +B X +B Z +B Z +C Y +C Z +C Z +B Z +C Y +B Y +C Z +B X +B X +C Z +B X +C Y +B Y +C Y +C Z +C Z +C Y +C Z +B Z +C Y +C Z +C X +B Z +B Y +A Z +C Z +A Y +C Z +B Z +B X +C Y +B X +C Y +C Z +C Z +B Y +B Y +B X +C Y +C Z +B X +C Y +C X +C Y +C Y +C Z +C Z +B X +C Z +B Y +C Y +B Y +B Y +B Y +B Z +C Z +A Y +B X +A X +A Z +C Z +A Z +B Z +C X +B Z +B X +B Y +B X +C Y +C Z +C Y +B X +B Y +B X +B Y +A Y +C Z +B Y +C X +B Y +B Y +A Z +B Y +C Z +C Z +A Z +C Y +B Z +C Y +B Y +A Y +A Z +B Y +B Z +B X +B Y +B Y +C Y +C Z +A Y +C Z +A Y +C Z +C Y +C Y +B Y +B Z +C Y +C Z +B Y +C Y +C Y +B X +B Y +C Z +C Z +C Y +B Z +B Y +C Z +B X +C Z +B Z +C Y +C Y +C Y +C Z +B Y +C Y +C Y +B Y +C X +C Z +B Y +C Z +A Y +C Y +C Y +C Z +C Y +C Z +B Z +B Y +C Z +C Z +C Y +B X +B Y +C Z +B Y +C Z +C Z +B Y +C Y +B X +B Y +A Y +B X +C Z +B Y +C Z +C Y +C Z +B X +B Y +C Y +C Z +C Y +B Y +B Z +B X +B Y +C Z +C Z +C Z +B Z +C Y +C Z +B Z +C Z +A Y +C Z +B X +B Z +C Y +C Z +C Y +B Z +B Y +C Y +B Z +A Y +B X +C Y +C Y +B Y +B Y +C Y +C X +B Z +B X +C X +C Y +B Z +C Z +A Y +B Z +B Z +B Z +B X +B Y +B X +C Z +C Z +A Z +B Z +C Z +C Z +B X +A Y +C Y +B Y +B Y +B Y +B Y +B Y +C Z +C Y +C X +C Y +B Y +B Y +C Y +C Z +B Y +A X +A Y +B X +A X +C Y +C Z +C Z +B Y +B Z +A Y +A Y +C Y +B Z +C Z +C Y +B Y +C Y +B X +B X +B X +C Z +B Y +C Y +B Z +C Z +A X +A Y +C Y +B Y +B Y +A Z +B X +C Z +C Z +B X +C Z +C Z +C Z +C Y +C Z +B X +B X +C Y +B Z +A Y +C Z +B Y +C Z +C Y +A Y +C Z +A Z +C Z +B Z +A Y +A Y +C Z +B Y +C Y +C Z +C Z +B Y +C Z +C Z +C Z +B Z +C Y +C Y +B Y +C Y +C Z +A X +C Z +C Z +C Y +C Z +B Y +C Y +B Y +A Y +C Y +A Y +B Y +B Y +C Z +C Z +C Z +B X +B Y +B Y +C Y +C Z +C Y +B X +B Y +C Y +C Z +C Z +C Z +A Y +C Y +C Z +B X +C Y +C Z +A Y +B Y +C Y +C Y +A X +C Z +B Z +B X +C Z +C Y +B Y +B Y +C Y +A Y +B Y +B Y +C Y +B X +C Z +C Z +C Y +C Y +B Y +C Z +C Y +C Z +C Z +C Z +B Y +C Z +B Y +B Y +B Y +B X +A Y +C Y +C Y +B X +B X +C Z +B X +C Z +B X +B Y +C Z +B X +B Y +C Z +B X +B Y +C Y +B Y +B Y +C X +B Y +B Y +B X +C Y +C Y +A Z +B Y +C Y +B Z +B X +B X +A Y +A Y +B Z +B X +B X +C Y +C Y +C Y +B Y +C Y +B Y +A Y \ No newline at end of file diff --git a/2022/Day20/Day20.py b/2022/Day20/Day20.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day20/input.txt b/2022/Day20/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day21/Day21.py b/2022/Day21/Day21.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day21/input.txt b/2022/Day21/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day22/Day22.py b/2022/Day22/Day22.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day22/input.txt b/2022/Day22/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day23/Day23.py b/2022/Day23/Day23.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day23/input.txt b/2022/Day23/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day24/Day24.py b/2022/Day24/Day24.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day24/input.txt b/2022/Day24/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day25/Day25.py b/2022/Day25/Day25.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day25/input.txt b/2022/Day25/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day3/Day3.py b/2022/Day3/Day3.py new file mode 100644 index 0000000..c80dded --- /dev/null +++ b/2022/Day3/Day3.py @@ -0,0 +1,32 @@ +def itemToPriority(item: str) -> int: + if item >= 'a': + return ord(item) - (ord('a')-1) + elif item >= 'A': + return ord(item) - (ord('A')-27) + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + rucksacks = [line.replace("\n", "") for line in f.readlines()] + + actualItems = [] + + for rucksack in rucksacks: + compartmentLength = len(rucksack) // 2 + compartments = [rucksack[:compartmentLength], rucksack[compartmentLength:]] + for item in compartments[0]: + if item in compartments[1]: + actualItems.append(item) + break + + print(f"Solution 1: {sum([itemToPriority(item) for item in actualItems])}") + + groupIdentifiers = [] + for i in range(0, len(rucksacks), 3): + currentSacks = rucksacks[i:i + 3] + for item in currentSacks[0]: + if item in currentSacks[1] and item in currentSacks[2]: + groupIdentifiers.append(item) + break + + print(f"Solution 2: {sum([itemToPriority(item) for item in groupIdentifiers])}") diff --git a/2022/Day3/input.txt b/2022/Day3/input.txt new file mode 100644 index 0000000..7b424df --- /dev/null +++ b/2022/Day3/input.txt @@ -0,0 +1,300 @@ +mmbclcsDHCflDDlCrzzrDWjPJvjPvqJPjfpqZQdfWd +NNFLnFRNhgNQtMLSFSgwSwGJPZWLPvjpjjJGZJPvWPvJ +BnwFNgVVhwNwVQrmzbrrCHVTmDsm +CTsVssjPTWPbzhfbfqqpbqJq +RRttdQlRdnNpdmwBnBDhFrGrqDGBqJJfJD +HttgcggdNwQtgcpTsvjVPTcssjsv +bWrpnrpPcFNbfPtwVPddVVDw +jLgqqJgjZLhHjRqLHLjqHgftpmJVtTmwQmtGddwwDVJm +HhzgshZLpHLjqhLLZRZpLRbbrlBNsrrNsFWcCvvFCcNN +PCJJfJhjhzjjdBVBcd +RnNnMHnRNtWnBSQHVbqSzFcq +ZlnZZZNmLrNrgZmmccGJwGwmGPJs +hFZLsjjjMzwPPjqw +SQtTcpWWcpMSDlQpDCQJqbHzdSzPzJvPPwqqvH +tVfpGWGDVlCGGDCpVWppVcrZFMrnmnLfsrBrnngLmMBh +PFPhCmpfhSMWnmgrtgMW +RRQdGQvTQRzQDGQTQcRqTTQLvsntnltvrWZlsWlZftntrMtt +NQTzfGfzcdTBhPJSNJbCCVhJ +sbtqfrqNfcdqsJrfhzQmzhpvzvpQmpNG +SHsSDsZVHBHnRZDBZRWSVDnwFhzvphggwGhQzQhgwzmmPzmg +jjHVHBlHljMsJjbbCcdttc +NccBbvbNZbbvBGPVTGhhlCZCPg +tdWHQtLLMrrdWQRqWrMrMrMPsTPThDlTssFFCFCVTDtCDC +zzWmMQQLVQrWrbBczNnwNbnpnN +THGhBHgHThvnHRrQRpMNSwZSMrwD +szsCzWljNfVFFVllPPzzVWJMJZQMJbpSrwQCCJMDZbbb +WzlfFlflfcmfsFPVfWVVhnNgchHndHgdTnqdNHTh +zPhDwsWgszftMNfPjjLL +RTRbbJFHSrqRRrHRrjGQBnfjQQMjLnmNnF +ddpNSNNpSdWsvpllWzsl +FgDgbSMnhhntCLCC +HlqzJgPfJJgmrthhrtTLqL +fjfQgJPGVjwGJcFMcSvdScWjMD +pnFwRPlVVlLSwpGbvSmZHmbbdbHm +sCzTQtzrrQMzpthTdvbGHdvdHNsZqqqZ +ChTTWhWBWCDrrTrjCrhtLwwLFgfLFgjnpfpwLnVg +MRDfBDMJsQdmGWsM +pFPqwswhGzWSCwGN +jphpbgbqgFnqjjnthLtJsZfJRHfllfTllDLflJ +sdbLCqnbllplrdrsqbZHRPRBcBcBZBcHcZrM +JJFwDDQmzfmhmWhJhwFWbMbcNBNRBBzbNPHcMHPj +DFWVQVGGGbpGClllqLSl +mRmFhZRsmFJfFRzwRrFrqmRFtNLLDTPccVqVtGTLDnPccPDN +SBddBlZMjpQvvBbZvVDTtDTDDVGnLTMPVT +dCHWlbHbdbllsRCCgFwrrZCJ +hwvwFHhlTLwpLDQhpHwTwBLSfvzSZZsvVsqCGqzZSfCvVG +WNdtmjPjcWdWJWntcWbjzmFzrrVrzsGzsVsSVrZZ +PbJPntMRbbdJbcNPcNFjnhlwwgpDHRBpggTlQThhpQ +mJvRGHfWmvWJJVmZZnZVffpglGggrTLNzLwNLrszzNpz +FqFMMShqjcMcqPbbjPthNgRggPgLwPsgLgszwNpl +DFQqQMhRhDRmWndDnJvmWW +jVzfvzSVpnnNSGjjVpNlSNDzqBBmWCBtWWtfFFCCmPmJCCJW +HLrRLhwrMZbHrWqWBhGPCGBFJW +wHHMRMQRQrcQRTTcHrwwRcQbDnpvnppzGSnvnSNzDSNTpjnS +qzrgfppGzPDJHfbZbHZn +vTsMvMTclhNlFlFhdhdqHHmHJSJDVJnJFFwJHHDn +slccWTTTcdCcCqRQPrzgBWPPRz +thfHHdDwbnVzwwdthZlqjZmmTmjfZcfMQl +sGFGJFFvGpFPCJvLPGPgZlpmlTMcmlmZrmMjcr +sJGLSWRSPBBCCPRFWPsNBNwMNNVMNwBzzMDhnh +RwJMwdbzMGWbLtLVQpPl +gqNfBmBjNmcCqjqjQllWhhQlgDQtpWlh +cfccjmcNmHrHBmCBcTMGtTJtZzrTvddRGR +vbbvqMhcrqMQQLHHvFvHHvpPlnPLfVfPnfmwsNwwwlnVls +ZdBZZgDRDzBRJWBzzDZjDDNWNnNnPfwNPwmSwlnCnfCW +JgRggTDtZmmbbFqrvT +lSgzfSzgGcNfDPsbMpspbPnnrrVV +FmWFBFQHBJJBmmWJFHWFrwtsVrMbnrVVwwwpWMMp +FFmmJmvZjQBRQRRQZQBvNNglRhDNDffDSDSMGlDD +VQPBCZVfHQZGRVVpmzPFmgSgbSPTFb +NcwLjcWnFhCpLvCF +tNCDtsqltDwtWdncJZVJVRMGdBQffHZH +pTzgPsLQfMLqTVFLGbVbbFVJVF +ZnjgjvSwNNbFJVwN +jWcCnWHWRvWRHHnWRWjvdZnZtspMqfzrMqfQtTPQgfPzfzcM +CTqHMNSSVnpjNSTFzMwPdslwnlPccbblgcbd +WDLqvLQRfLBgbJPwlWgdPd +QRBqqDmZZRBGGfCTpCCSMSmzjSpz +bPlRhmnPhTwhrvrlRrjgLjgsLpszFldgFlgF +tGHWfcQHWfLZnsLQnjpn +cVGtCtGGcNWcWtBStqnWrwmvmbmJwJPwbRBhRRMb +BjVTVfBsLlLjLcBcZDRJpnJRDPRJqlPRqJ +SzbQMQzFgfFzmMSrbzGpqqRDtqmnvDHtvppHDm +CrSQSdgrWdbFQCWggjWZTfBWcwBcTVBjTs +RtqdCqCTbRfRbbHR +FhwWWqgGJJgJHLHPFFsDbsFP +MrpmmwqhMmJMwpvlNvtlTrvtZSSr +VscvcmcmbhDrRMCCJlqnSlJnSljR +FWdwWgpZgdBLTgTWFwZBgWpjbCNqPptCSlNCStnSJJNPPJ +FdFWGgWTQGGbGvvDHDHzMD +WhhBJrBqBchcQBBqcqqGRZRlrtStlSlRszlzSSRl +fHdwgdjbNCbCCHNgPgHNPNplSRtQtltlRDZsQfZsZMRQMR +jQbQNwVNvWFJvqcV +bjbmmgSjwTWqWwWqcw +sQGfPZQDPqMMWWWd +fqBDfqqZZGHGDsNLjtmlttpgBllpJt +ZDmCWtftfWBLfRDWwbhqcNNtqwjtjwqt +SnTTsnlPMTlSSsGMMSddSbHjhwJwwjPbcvHwLwcqjj +GrFGzSgnTzLgDVfQfQrrDDfm +PngprCCmcBDssRFBSbFRRs +fjwHtjfNWfGwHfdtjGMdWSSdQTsQRLFSSslPSFTRlS +jGjMwMffWHNZfhwnDzqCpZDgrqCcPr +qzGPbzbDZGSPvpvrTvQsQwLWWNLj +tFddBhgnVnMMhBhLJWLwjQMwMrMLwT +BHFtVHgtmlhRRZmSTDTpSq +ZwzLWWWvWdSJdJQwQLzBqqbbhhCcNzchqCNPhb +rHfDRfHGfHsGTPPmhmrrNhjmNg +GlfsfRTfsfRtsstfDVHpGsPSFQJSWQMJwdSLwQWpZZLd +vnvJvpJtQwDBTljHlLHhDL +zzGqMwqMqbfRfVGzFmLmLTLddjmTSRLBBB +zGfrbqzwNvPPcCtr +jwCwSgvPSmCwSqwgbCRQGvsRVnddGZdflsfB +MhzHLWpMWHHzNzMccDHdnZVZRZRGQnGlGRGLsZ +nccNHTzWHDcMWHcphpptDrcDJmSgFTPjgPFjTjgSbqJSJqbg +bVhPWqBBbdbdPqVVqhSfpcmFsfwLnmmjnfBFmn +TDWDGzgRvrNJJJrzzzGspwpjncsncFmwFmsNfw +vMDgDJRWgDJtHDJMMPQQMdQlqdlhZZQbbC +SpdpQqLwrDcmPhggcS +ZHCZstHMhjGmtPDc +NNnnRHMZNzTMHZZTTsZMvvRhJJwWzBVLVQJJqWwVhwJpdJ +mrlMQlQPPPhhCbZRNpRZcffmFmgc +VvJVJqDqvqjDqvtVttVSHTTHLLcggBNBBSRRFfRLncfFLpBB +jHVHvdDHtJjtDWjwMhWwhwwwlNswPr +MJvzvFLhbTnJCvRwWSTmSWWWmRpc +tlVlNqBsVNNBQPrWgqmcgfwpcWpdcg +ZBjHPsttQrPrrVsBQpVJzhZhvnnbMMLvFJJZMJ +hBfJffJJNhnDlmQdnmSGcd +sQrCpRsPCrwFZQprpQCzljdjMMjMGGdGSmgSFFDS +zZpzQpwzHRPPTrQwCpRzWZHqLVvtBJvbBtVJhJLhHtLbVv +DsPnQGnnwlVJbSsb +HCfCfTDMTfHvCWMZDcRVVSwpbtlhVZbhhpVllp +TmCMTvfjRCCvcrgNNPQDmNzrLF +ghwNtnMMRTZtwTphjjBQfLJjfJFdSBTL +lldzbqzrCrfLJJBBbSWj +DCvlvqvshNhRndGs +rWwWWDJWWrFLdRWtRhFZTCbCSqThFTCbmm +BgMvSzvMpVpBlQNQVgfqhhGCbGbThQZTcbZTCs +nMpfjVMnzlgRSrnHnwdSDH +blFhFgFgPLvjDwNvWPnD +qMBzMCCzZMzJHRrzMFZsnFjQdZnvvNvvWQ +FzpMpGMRrlSSghLhtG +hDlVfDdSTjTJwjMTZT +HgnqtGgQRgRHGtrgqgSZJCrwBZZCrZwWJWjMWZ +zqRbGNSbbGRRQGRQFzddfVDLVhhfhddV +JwhLdLNLbwmJggCbbbhjHnDQNZWQWQjWZZPlHQ +GStzfBFzBMGMftpGcFFQDDjDQfZPfnnmDPfZZj +FqMBtFstpcTMBMSBGSBtqMhrwJLLTCbLhJbrhTCmrChv +WwWnTNVBNvWwBngdSqdRJJzncLSLpc +HPMZlGZQGtQjPdpqScpdjP +GltlGDDCMMplHCDphtbCHDwmWNBgVgvWhrmWssTBwWWV +clNNclslcLVWBNlGcVvdSHQvTMHZZSdsdQHM +gGhfpRwRZHMdJgZJ +fnDrpDtDrrWGcWVW +zdVzgdPSWRsHVzPsRRPHRHRRntnQrbDmfDfwfQwwZwfnbgMD +qNCJvjNLqjNhBBGjBvchhBCqffbffDGMnbwtfnbmQwQnZQMt +jccqJBvCjqvLTLJhJZpsPdSVdPszPRFssT +lDLvltDpvSpqGjVVMljGjW +zrdnswzcSzCgrdnBBjVcBBcjWTVTGb +PZgFdgHHnrdNDPvvtfNQSJ +GlLFbFNFtzcvddVpJVfGsCCC +PWhhMgWTTnhQrqMHTWqwddCVjSwQJddpBdQffp +WqJZDHPWgJrHnPqhnnqLbzzcLmbFDNmcbRzbbN +vtDcSfcWfmfTSGwvGDwTvFZVppsszCsVVVFjVzSVSM +NrrLPhdBRJLbPhrrRJwhBFZsFVzQzszsZzMCZjsJQF +glgwPqPhrRqPqBdNLwBrLRtnGHnDGmDqHWfGWfGcncHH +BtSfgpgvQhlSlwzZ +VHRmVzMPdPVRmcdhQwQwhClNNNCb +PcPMRWrVRRHTMDRVLPVzBnnJprjppBJtJftvpBfp +RpgBRVpLgBpDFCCPPVGvPSVVvb +dHrMdlWwwljjrlHrqmWjmWlGNvNSBBNhhSCSbSvNtNvQGd +TfmjqrwqHmqHrqlHwHpgfZFBzJgpZnpDcDBZ +NWTdFWlSMMMWTzVzdQfVpVDwwf +RHrrGrLqJLBqgpDgQfwfffHz +cssRRsBjvrGRjLBLrZcBvBqWPQNnlWTmSnjFllWMnCTFll +DCCDbHDhgbtCLHFHCQdQdSVfbNMdnfcSMS +ZZjPsqRZJlJlGZPTTqqRwJjZQVnMszVfzdSVScQQSQcNQNfM +mlGJJqmZjBZPhLBrgrWHFnDL +wLpCpDmmLwplgwVLwLwVgLLbWWJvJRTsRvbbJWCRsfbssv +FHHPFZnnhZQrqTTlSJRSrlfvrv +llZlPQFcZZHchjhjPqnjNFqNwggmDDwVNBBDwtpGMVDwDwVp +CctttjCrftNrBZpPgpgbNqdq +JhMwhMTGhMVhwDDMJJHGJJJBldWggWglddlbqlbPHbfqgf +DvJRMJVVJMTfJtnrnRjCSRFnrL +snDPGSQPnSSQQFwFFdzWFvmCVmmnjmCJjHjbZZhHZp +clgrgrMrRfqRlNggmhmHrhvVbpCjCVvV +fNgcBgqqLMqRqgLggtcTftBFdDFWQzDSQWPPGwWpwtGGsP +wSJWDCbwVdQfbffHfZZr +glgTBzzPSFhLFRvRQnZspZQpnvRp +qTLqglLNFqBqVMJqwwMVcS +rCWNCsrGrGGHrwQQHrfNDfvgLmmvMmLLMpmLvLPpPgww +djcdVdqJJcqqBstdBczbStThPPMPghvSpRgmlvghlmLpLp +qtjdBqzbTTtzTJTzVnbBdsNfDHZGGGDDnGfNDHDHFZFD +mlzzVHZmzvHflTJHqlJcZTvdcdCCPnddFGhPdBGhMFGCGc +QDRrWSprdqqCqDhF +NWtQNRrgWjpLjLsrRrQpfwVVqvwHzvvmVszlvlvm +DmDDtBDStSLcjLBDhhhmfnNFNlJJMFWFHSMWFpJNHp +PgMCgVgsCvVwRVRCwvgTzCMRWWwdnWHpNHFwWJJnHdHpprnp +RgZvvMbsbPCRGRTVPGmfBqDDqmthDQcmcZDc +WrfWpwwCwpdWCMBzqbtpjVbqzVqp +RvQQSFJNFZNNLPGbMMPqGtGPzF +DRvmNhZvJZmNmLcDZQcQNRfnnTMwrMHnfTrTCslsclCn +httbcnSsgtVMsnssnzghmmHvNmlHVLBHBLrVGGLN +QFpjZqpqWddZjjDWPWPwjFpfGLBfBBrrNLlBBgGrLCLmrfBB +QRjRjwjwDhbRTJnhgR +FTBTZqFVJnVTTPBTVmFbNjRffzrRrNQrPNQbzh +tCWwHMLCLDstlzdjwbzbQhRl +GvtChDChvtGSnZqnTVvBVF +spnFVspFPScprWrGvTpTWpvW +CgMqCqPLfqBBJGHlMrrJrWWl +ChjqhCtgdLPSQhQsRnVQ +bCQVZCJcrSSStrWTdhQqhzzMdhMz +lPDwNfgpDfBNgfnlDPRDpLWRhLbMjzWqMqWsMLLhLz +wpNPgPwwBDfvBnfgBfwglHDCJmtFGFmGSmCVrVCGbrCcFv +zNMJCHVJQmNLQFhZ +PPRPdGcRdPPjfjflqdjPDPTZQrhTFZFrmQZQBGZCFmLL +CcWfjjgWtjtMJWzVnSJVzJ +LjhDjVCVsjNfMsMQ +SdRpGSndZnlgpdSFtrQMtqNZJtwrMfQQ +cdRpcpnggRSmWpcLDHCCHfhBmPHTCV +zpmsJlptmfNwwFswGHThRcTqqHqhhWCWzh +SLgLMMgnPbSLPbPMDqZZcTWCnZWtRcWCZC +MbbvQtMVSLVrDMvSMSvSlwNsFNJspJFfNNmJrGGf +wvcQjfjQvQDJvwNwRdpRScCHbpdMbSpl +rfrZzrzWWmzlRpMMdpzd +LqrmFrVhFJjNfFfw +fVflVfmjQtZhzdrdlN +HwLLJvCcpcbRvDwpDvDCpqtTPPMNWTzTrHZTMPzPMPdH +LbvbJqgcqbpJLwvbbbmsmgVGmQmnjdSfSVjV +FngtfmfTTSFjFDnfjDbwnGzzGBGzbVRwVcwz +WWMrLLZLvZMWsrCcjzBGcpzLcGcVcB +NhMWllrsNZNrWZWhjCmmSmfgSTFDHTJfFSNq +lpqpqlhTSZqfZlwthPHsHcdHPhsCHLrP +zVDTjMgFbscczPbz +jRRmvmngNngqTZBqNlftTJ +wrMrJZPPrNZPZzhzMFPlDqSllsLSbWDWlWqNbb +VpGftgghtgQfVBgdnpBBngtWDSRbbSqltbRblDDDtqSlqS +gVggVgpVHTpmndffdVQVTVggjMwwjjMCjJFhPvZMwHvzMzjC +CtQPCFVlljWrNhTmCgLL +zsZbsnsqbMznDGNrrTqTLqWRHghN +zsMMGMSssSSzMGGMcvDGJFphFwPPvPvQfJppwQfj +njfVlRDDfDwHSfwVwSLnQZqGBbGsnZBnbGqZMbbpGG +zvddNNdWFgTPFgWNvNgcZqZbbqMMgBpsZrRZpgGG +CPchdcRTcNvvTWcmTNDSSfjwSDHCfQwlJLHl +LPmccvvFzzLvvQSzlFvFSSQDDtDfdDVdnDTBDsVTjDndlV +CbgNZWgZrbbqhrgTnVjjCsGdBfCfTs +BhwRrNrpQvLzvJSw +DpGFVsprFpTBJjsnJnnhdjWh +fbHCcbVHCgfMLwcqfLwgNdqhjRhnJQQdtQWnnSSJJj +gCZNVNzbHbfNHcHNgfCMLHHzPBDPvPDrlvDrDlvpmFTFBF +tsBQFgFpFBfsmtLjtgmtrQvCddSwSCwwbRvbwdLvwvRG +nqPZnMznTZHZlZPfGCHfbHwNVwdRwC +MPWqqzhZmBWFQfFW +FNMTTwqwNpVWPgZFFQ +crScdztJtcccSzWtzzzbStZQRZVVVHZVRgRQPHQhhjSZ +lCDCCdJJdbCdbcJzrcnrJWbnLLlvMMTLNwwMvfvwvMmNBNMG +WHsJMlBHCscDPDPtPBRDrL +jmTvgnqdsbPmSrrPVrwL +pdTgjgqbTqQFdjjQdqTZzCcJsZzQzcfsCCHMMl +QqMQGbMGGGzSsQSqCPcCPrCRNNlSZllc +vDHdmDWTdmwphhDdJwWvHdDCZPZVllPVRPRZNPVcZbTBZN +pmWHDmpmLgJvhvLpmvdvLWbsMgfsQGjqjtsnGfGqzGzzzQ +tFvMtFtFMvDDtMvLTpffQWWSGTsDTlSS +jqVnBjHqhPHbnhqPqWllfpfSTplQPQPGff +bbjHVHdjzqBznqVHBHzzqVFMJNMvmJtvtmcQFMZQFdJL +dcldCJQnldtTMdsccThhDDDDFhwTqDRwHR +ZbGzmgZSBpPPmmbNbZmgmNPPRqFzzVVhrwVHwRVHrVRHRRrR +bSSNmhPGWWZgQtLWtlCdJCMd +ttGBGNNgBgVBltlTJGJZpZlHSHCHfDSWpRWWpS +LhcLrcFFqdhLFLqvwMdhcPWpHHSSZWjjjCDwSSSfpWpD +fPMrqMMnqMFMbqcfnPMMBsgNttgggBmzJzbmGtbb +fjFhHHHmfjtLjrFmPhLbCdzBCpPCJQpJJGzJCp +RcDTnvlVqRnvnvRNcSzCJGJGCSJJCCdQqw +NTlMZVVlVVVlRTDTNjgGLfhrmgLFfZFGhr +GmbVGWttmpmbbqDWgVGGGtWNvNCCsHLLFsvHMHHLFnFn +wQQSdDTfSTsLCNnFwvFv +dPDBTBjzDftcBqBVbGBg +LmsfRLwCfZslcjljcjDjwN +gdRSrHHrSbdrggBzHBShHlqVvVDvcNvlcccjGlGjqB +zgTnSFFJdngddTZTPTWmspWQWWPR +RMZMtdsVCsRdddbsVcfcqgNfNDqGqGfzPzmf +BpwQrJvrjnSnQpBBBJCJjBBQlzvmDPzmDmglPzPgDNfNmNgz +LjLTnSpwjQTrnnLCBJLQjhstbMhsRtTdtMHMtbtsZd +PfrPHmrCRmRhcHCcmCfhhmWMLVpwVqFvvGGLVpQSwwSvSFFP +sJnjsgsDDdjjjdTglTgDBsBnSLdvwSqpQQbwQSLLLFSpQpbL +tBlngnqgqZggTZWfCRZmMCHHmM +LGGPQLDLPWmQLVdVdLLGbdvMNjfvHNFNNBbZnNMlHlBf +CshzsJBqTTwhttzCJzRtcNcMljnnnMjHlFnMcvnHfM +gqJsCwzBrQWDSgGmSS +FWVzVJjmbbJVpPwjjJDQsQNDgtcrWtddDQMg +TqRqCfGGBTzgTzDNNs +qRffnhhGvvvpwbvFzp +gLmMTpTCmRhgTLhCCZBSScJFQQQclWWMQJSJQW +rvfbDGjGssqbbrRSJJWclqcSwzwScc +PsDfGfVRjfTTTZNBPTZT +hWqrPzzMhrfmfdNtdZLNrnGndn +SwvwSFslbbjRsspQwsRwzcnbnNdTnZDbGctZdTNtNt +wvJJFsvpSSvJFjlHjzplQwJhCfVVhmBmVWhHWmWVWqBqMW +GjQtgjhPhGgsQjgtthrrvBlvljCrpCdlqBMb +RFDHDRFRczzlbqlbvqvHdb +DDFcRWTWFbSwRWbGtSGtgPfGGSPPtg \ No newline at end of file diff --git a/2022/Day4/Day4.py b/2022/Day4/Day4.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day4/Day4_temp.py b/2022/Day4/Day4_temp.py new file mode 100644 index 0000000..3f3d982 --- /dev/null +++ b/2022/Day4/Day4_temp.py @@ -0,0 +1,20 @@ +if __name__ == '__main__': + elvePairs = [] + notNeeded = 0 + intersections = 0 + + with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.replace("/n", "") + elveSections = [boundries.split("-") for boundries in line.split(",")] + elvePairs.append([[number for number in range(int(elveSections[0][0]), int(elveSections[0][1]) + 1)], + [number for number in range(int(elveSections[1][0]), int(elveSections[1][1]) + 1)]]) + + for elvePair in elvePairs: + if set(elvePair[0]).issubset(elvePair[1]) or set(elvePair[1]).issubset(elvePair[0]): + notNeeded += 1 + if len(set(elvePair[0]) & set(elvePair[1])) > 0: + intersections += 1 + + print(f"Solution 1: {notNeeded}") + print(f"Solution 2: {intersections}") diff --git a/2022/Day4/input-sprechtlPC2.txt b/2022/Day4/input-sprechtlPC2.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day4/input.txt b/2022/Day4/input.txt new file mode 100644 index 0000000..d84ce10 --- /dev/null +++ b/2022/Day4/input.txt @@ -0,0 +1,1000 @@ +1-2,2-96 +17-75,14-75 +33-92,93-93 +18-18,18-83 +14-30,15-30 +6-92,6-6 +15-16,15-90 +32-66,66-77 +90-90,89-89 +24-71,25-50 +31-48,41-42 +28-98,28-99 +17-44,18-43 +5-95,5-45 +29-30,30-78 +26-71,10-70 +62-71,39-71 +23-60,24-59 +85-93,39-84 +3-4,3-58 +8-96,8-95 +62-79,61-61 +15-42,16-41 +96-97,68-97 +60-72,29-71 +22-38,29-37 +15-15,15-85 +61-85,84-86 +22-23,22-40 +5-94,35-99 +44-98,45-92 +12-69,60-67 +6-39,7-78 +3-28,4-29 +26-74,65-72 +35-69,34-82 +27-97,8-98 +3-98,99-99 +86-88,9-87 +3-18,18-18 +12-75,32-74 +3-85,4-84 +11-92,12-91 +7-33,6-34 +37-37,38-38 +12-54,13-53 +18-50,9-17 +3-50,38-50 +46-48,10-47 +3-89,78-88 +14-14,13-15 +18-60,17-60 +40-52,45-53 +20-46,18-45 +22-23,23-95 +6-22,1-13 +7-94,7-8 +6-38,24-38 +1-98,1-99 +26-55,26-27 +16-36,15-17 +5-93,92-94 +46-98,97-99 +29-48,30-86 +10-86,85-86 +6-87,6-65 +77-77,76-78 +2-95,3-96 +95-95,6-94 +77-78,77-82 +86-99,3-87 +25-91,25-92 +23-97,23-43 +94-96,21-95 +6-94,98-99 +8-38,22-38 +54-96,53-55 +16-71,70-70 +4-68,3-4 +39-60,23-60 +43-87,17-86 +32-77,32-76 +8-94,8-9 +1-72,37-73 +20-83,84-84 +41-54,41-53 +68-85,84-86 +7-20,21-31 +1-99,98-98 +28-57,58-64 +29-67,17-68 +36-92,61-92 +54-56,8-55 +14-79,15-80 +32-87,12-86 +3-98,99-99 +93-94,16-93 +11-85,84-86 +64-89,59-64 +2-89,14-89 +70-82,71-83 +10-10,9-96 +9-24,9-72 +85-85,18-86 +23-91,3-90 +56-91,55-57 +4-98,97-98 +18-76,16-43 +3-80,4-79 +75-76,49-75 +62-64,61-65 +21-34,21-35 +6-61,60-85 +12-96,12-95 +22-98,9-23 +27-87,78-86 +28-95,87-99 +3-96,95-98 +1-94,95-95 +35-85,36-84 +45-51,33-50 +39-70,22-70 +61-88,3-62 +57-85,56-97 +25-74,25-73 +44-51,4-83 +67-77,57-77 +15-82,16-56 +21-22,20-22 +1-29,13-28 +36-80,4-80 +15-19,14-61 +4-12,5-11 +36-71,70-72 +67-67,35-66 +13-29,13-28 +7-7,7-67 +44-69,43-70 +34-97,2-98 +49-95,50-94 +29-85,20-70 +16-71,15-92 +1-77,16-78 +27-27,28-83 +81-96,2-95 +88-95,12-88 +8-9,8-88 +68-74,68-68 +52-89,88-90 +21-91,90-90 +39-95,40-94 +58-98,1-97 +3-82,5-81 +22-54,26-82 +47-86,46-86 +26-40,25-26 +66-83,66-82 +28-59,3-28 +47-93,4-93 +2-4,3-97 +22-98,22-99 +30-89,34-90 +25-76,59-77 +25-96,96-97 +14-77,15-78 +15-97,16-96 +5-81,80-94 +22-87,23-38 +10-23,10-22 +7-74,7-7 +13-27,26-27 +8-95,7-98 +63-78,62-77 +2-99,3-87 +10-78,10-11 +76-76,63-75 +74-77,52-79 +27-63,33-47 +85-94,91-94 +65-76,51-94 +46-88,12-61 +79-79,27-78 +85-95,21-95 +5-40,4-41 +35-45,21-45 +69-70,70-86 +58-78,12-82 +84-90,85-90 +40-80,41-81 +3-5,4-97 +69-94,69-93 +43-50,50-78 +36-76,69-77 +1-99,2-98 +8-96,8-95 +3-36,36-79 +73-73,43-72 +64-84,67-93 +3-11,17-84 +85-87,14-86 +11-13,12-71 +81-81,17-80 +16-75,27-75 +11-33,11-34 +3-10,3-3 +38-42,38-47 +12-92,11-93 +3-93,4-94 +45-75,95-99 +11-79,95-98 +17-75,16-76 +75-77,12-76 +64-70,32-90 +6-82,6-47 +11-16,16-96 +1-99,5-99 +49-58,49-57 +11-41,95-98 +1-11,5-10 +2-4,3-99 +56-73,57-77 +34-96,33-35 +4-80,4-93 +62-67,66-88 +89-90,28-90 +10-85,16-85 +93-95,41-95 +60-84,60-61 +28-57,57-58 +11-78,59-79 +12-68,69-69 +50-77,49-50 +58-81,80-82 +3-21,2-21 +46-64,29-56 +44-51,37-50 +59-91,90-92 +46-46,41-47 +58-76,68-74 +1-4,4-97 +23-24,24-31 +38-92,37-39 +84-86,35-92 +15-37,14-16 +18-18,18-26 +66-78,62-65 +11-85,11-12 +4-68,3-3 +95-99,3-96 +93-94,75-87 +3-5,4-61 +81-81,36-81 +93-97,95-96 +18-19,18-97 +53-96,71-96 +2-62,25-46 +40-72,71-83 +7-97,6-96 +19-98,19-99 +1-48,2-41 +45-66,63-81 +41-42,41-49 +52-88,4-87 +27-27,51-96 +7-62,45-83 +76-80,10-84 +51-94,50-52 +9-84,1-83 +30-46,45-93 +7-12,11-90 +18-78,17-78 +61-94,60-95 +13-20,3-16 +68-93,88-95 +8-93,8-8 +70-71,1-70 +66-81,41-81 +10-95,78-96 +3-10,11-26 +29-89,28-90 +22-53,22-54 +42-67,42-47 +7-94,7-31 +9-72,10-71 +61-63,28-62 +22-61,47-61 +68-98,58-69 +20-72,71-76 +24-37,12-23 +3-86,3-87 +42-81,82-93 +2-98,3-3 +57-70,58-71 +85-88,34-86 +93-94,4-93 +36-73,36-37 +67-92,91-96 +9-13,9-15 +32-34,33-64 +5-31,5-47 +39-84,38-59 +63-86,14-87 +31-50,41-66 +74-80,43-79 +21-31,18-31 +72-84,73-84 +13-71,5-71 +10-71,39-61 +30-34,27-34 +4-55,6-56 +8-53,15-16 +61-72,47-71 +8-60,9-9 +41-55,38-54 +19-99,9-40 +86-87,6-87 +7-82,3-8 +24-75,24-36 +11-19,2-11 +77-89,63-78 +31-43,2-47 +21-70,20-70 +50-51,51-63 +19-43,20-42 +53-88,87-94 +51-95,52-82 +93-95,1-94 +18-26,18-27 +26-50,40-50 +63-90,29-64 +68-69,23-68 +9-12,4-12 +20-68,20-20 +79-80,61-79 +15-81,30-82 +39-97,40-98 +27-35,3-34 +36-92,35-37 +35-59,31-75 +60-61,60-72 +70-91,70-77 +75-80,11-76 +11-94,9-9 +1-94,2-2 +9-86,85-85 +19-36,18-53 +13-86,53-87 +4-62,4-63 +32-96,31-97 +33-46,33-34 +22-47,45-48 +5-60,11-61 +96-98,89-97 +1-99,3-99 +6-52,12-52 +9-13,12-36 +47-96,47-96 +4-7,2-7 +6-45,5-46 +22-92,93-93 +14-63,13-96 +15-85,15-16 +23-93,23-52 +2-44,2-97 +12-92,94-96 +29-64,28-42 +4-98,4-99 +3-35,1-3 +2-97,2-83 +46-87,46-86 +23-45,24-57 +25-91,5-54 +63-64,63-94 +3-30,2-4 +75-98,61-86 +45-82,65-68 +95-95,94-97 +76-85,26-77 +66-96,51-67 +5-81,2-4 +42-70,42-73 +12-84,14-85 +22-84,16-31 +7-86,8-85 +2-97,1-96 +70-89,97-98 +10-67,44-67 +61-96,61-61 +7-72,71-71 +34-56,49-58 +2-4,3-73 +53-65,52-53 +83-97,51-84 +38-73,37-79 +68-68,68-80 +18-94,28-95 +11-25,23-23 +30-71,70-72 +2-58,46-59 +46-46,25-48 +23-82,11-73 +4-71,2-72 +10-86,9-86 +80-88,10-88 +87-88,86-93 +19-78,77-79 +9-91,90-94 +38-39,14-42 +12-57,31-32 +8-8,9-90 +96-96,96-97 +15-86,24-85 +43-91,88-97 +13-72,5-12 +1-3,3-65 +66-95,4-95 +36-66,35-36 +40-95,94-98 +13-88,12-89 +10-99,19-99 +10-57,57-70 +32-57,32-56 +52-95,97-99 +1-41,19-43 +36-49,36-66 +15-16,16-89 +39-77,76-78 +43-83,43-44 +14-95,13-71 +38-41,37-39 +54-89,52-88 +34-59,18-58 +75-75,54-74 +37-69,68-70 +9-96,16-95 +2-4,3-76 +14-91,92-95 +1-51,1-97 +3-17,10-17 +54-80,81-81 +73-93,73-86 +48-62,49-61 +25-44,26-44 +69-70,62-70 +11-12,33-99 +54-64,54-59 +33-42,36-88 +6-57,5-58 +84-85,29-84 +21-22,21-49 +62-92,62-93 +9-29,4-28 +28-77,27-72 +24-31,30-53 +8-63,6-12 +17-21,21-22 +14-15,1-15 +6-89,5-89 +87-99,87-98 +59-63,33-60 +71-95,9-72 +5-92,4-6 +3-81,3-80 +19-71,72-77 +83-87,30-82 +19-52,19-53 +58-73,58-74 +12-95,6-12 +52-80,79-81 +4-87,34-88 +55-90,11-89 +6-99,1-99 +93-98,91-93 +13-13,16-70 +92-96,91-91 +1-1,5-93 +61-97,10-98 +22-68,21-69 +16-93,80-80 +5-46,2-46 +44-69,68-70 +30-55,30-56 +8-68,8-8 +52-81,67-81 +12-58,12-35 +7-39,7-7 +10-42,42-43 +81-87,81-86 +15-90,14-22 +5-91,5-92 +41-44,40-45 +27-85,27-84 +19-26,18-22 +15-33,38-93 +7-9,9-83 +9-77,36-77 +29-68,8-30 +20-98,19-97 +11-75,1-74 +56-89,65-88 +50-67,51-67 +15-97,20-97 +6-98,7-98 +36-90,89-91 +6-70,4-6 +23-55,24-54 +7-79,6-8 +13-83,14-82 +9-77,34-77 +27-85,86-98 +61-91,61-72 +40-87,17-95 +12-78,23-79 +11-14,13-54 +1-94,1-95 +1-98,2-19 +24-48,21-49 +86-94,2-86 +22-98,33-98 +89-89,37-90 +10-57,26-56 +11-97,10-11 +53-63,17-63 +13-99,14-98 +69-89,27-99 +64-64,19-65 +46-97,47-80 +23-39,23-64 +70-85,69-89 +11-96,9-9 +57-62,35-63 +51-64,50-52 +32-43,40-56 +36-99,98-99 +22-48,61-88 +4-91,4-50 +20-69,7-70 +82-96,83-95 +9-87,8-86 +4-90,33-90 +23-83,24-82 +7-83,83-84 +7-28,7-30 +84-90,89-91 +48-50,49-99 +25-79,24-78 +52-94,52-62 +10-94,11-11 +48-88,89-93 +20-35,5-19 +1-98,98-99 +19-72,11-19 +25-96,24-96 +81-83,71-83 +76-84,76-97 +1-14,14-73 +12-12,11-71 +63-89,90-90 +36-64,36-52 +37-84,37-66 +15-79,14-79 +6-61,5-62 +29-68,28-69 +30-31,31-73 +46-60,15-90 +1-52,1-2 +14-73,14-74 +20-70,25-53 +73-81,72-82 +4-5,5-70 +60-75,59-74 +2-3,2-74 +3-89,3-88 +15-32,15-16 +81-81,31-80 +3-52,5-13 +97-98,34-97 +33-34,48-62 +96-97,64-91 +6-77,4-76 +9-39,10-10 +3-25,4-24 +43-64,44-63 +2-92,1-3 +30-98,30-76 +9-10,9-27 +8-25,26-26 +53-93,92-94 +36-36,36-74 +7-8,7-44 +13-78,14-14 +79-85,80-85 +6-93,6-54 +17-81,17-23 +14-15,2-15 +8-13,18-91 +2-53,2-96 +11-98,10-12 +5-9,4-99 +3-94,3-85 +9-83,82-82 +61-77,56-94 +81-81,15-82 +30-92,15-91 +31-95,32-96 +21-91,27-92 +58-88,58-89 +10-92,91-95 +16-92,91-98 +70-71,44-70 +1-68,2-54 +59-89,58-90 +33-44,44-68 +8-38,1-8 +20-37,21-94 +94-95,11-94 +1-2,2-28 +11-94,72-87 +49-70,48-70 +69-78,70-77 +37-73,37-93 +33-98,32-98 +34-91,92-92 +14-39,14-25 +33-60,33-59 +73-93,83-94 +70-76,70-81 +15-95,16-88 +16-69,17-68 +5-98,5-99 +67-91,90-91 +31-98,11-93 +2-92,91-91 +72-86,72-85 +4-11,11-56 +46-47,16-46 +24-88,87-89 +65-69,9-64 +25-78,25-77 +67-73,47-88 +52-52,52-53 +2-98,3-99 +25-92,25-91 +29-87,28-94 +3-99,2-33 +7-90,66-90 +43-85,65-85 +42-94,65-97 +58-60,59-59 +26-67,20-66 +46-75,46-74 +39-86,79-87 +62-91,28-63 +41-95,42-96 +9-57,10-57 +1-94,1-95 +33-87,16-87 +14-43,13-15 +25-33,26-34 +34-52,35-53 +23-30,22-31 +14-87,13-97 +2-48,2-3 +46-97,98-98 +61-74,61-62 +64-96,74-97 +3-25,3-15 +31-50,31-31 +91-92,79-91 +41-91,1-90 +5-99,6-98 +4-10,9-16 +11-11,11-96 +5-40,31-41 +15-97,15-96 +20-39,38-40 +28-57,10-29 +97-99,83-96 +29-62,61-62 +29-81,28-81 +6-99,6-98 +70-78,78-79 +6-27,7-13 +52-53,52-84 +8-73,21-73 +75-85,39-80 +18-48,47-49 +4-88,89-89 +32-68,31-33 +26-97,25-98 +64-64,12-64 +20-36,2-21 +48-48,47-91 +8-84,36-83 +50-76,49-76 +12-66,7-66 +1-64,1-63 +41-86,41-86 +5-86,3-85 +4-82,4-83 +15-78,13-79 +1-94,74-83 +90-91,46-90 +60-72,49-71 +24-69,25-25 +15-92,15-15 +47-96,48-48 +1-20,19-86 +15-93,93-93 +17-20,24-68 +9-98,23-98 +34-43,42-44 +77-99,74-83 +86-86,23-85 +14-15,15-98 +39-98,39-40 +62-97,96-99 +11-94,6-10 +27-50,51-60 +50-84,84-85 +79-92,3-91 +69-71,25-70 +20-70,1-83 +10-88,7-89 +19-65,1-66 +22-67,52-65 +90-91,54-90 +12-42,6-11 +27-98,26-27 +31-34,31-33 +95-95,1-94 +20-93,86-94 +6-25,11-92 +26-97,77-96 +9-88,9-87 +71-93,11-72 +5-93,94-94 +29-35,28-57 +6-86,85-97 +40-86,22-82 +36-79,1-78 +11-11,10-96 +1-59,1-5 +1-5,4-90 +9-13,8-63 +25-72,51-73 +62-65,62-82 +4-92,2-5 +8-96,61-95 +31-64,32-84 +84-94,42-85 +11-87,12-87 +96-99,4-97 +89-90,45-89 +63-84,63-83 +36-36,8-37 +17-57,18-50 +8-90,9-89 +59-62,17-62 +9-86,9-85 +75-96,76-76 +50-61,60-62 +93-99,95-96 +73-77,73-90 +26-59,25-27 +20-21,20-54 +8-95,8-96 +6-92,25-93 +36-71,41-72 +67-73,68-73 +25-64,63-92 +51-51,18-50 +69-69,65-69 +26-85,26-86 +49-66,14-49 +42-86,42-48 +13-98,97-99 +67-82,60-82 +47-93,19-46 +67-89,21-46 +25-62,24-63 +1-85,5-85 +2-99,2-98 +49-78,10-78 +65-65,11-64 +96-96,7-97 +5-95,76-96 +29-85,11-29 +17-92,42-93 +12-48,12-59 +26-27,26-76 +2-43,39-51 +2-68,67-67 +71-72,73-85 +47-96,24-95 +16-32,32-72 +3-64,30-64 +2-91,2-90 +61-96,62-95 +58-98,22-96 +21-22,21-95 +46-98,39-47 +1-90,25-91 +4-68,18-68 +36-55,37-54 +91-95,15-92 +54-75,65-67 +47-89,70-95 +84-86,13-85 +80-80,80-80 +7-76,7-76 +56-98,51-57 +32-59,58-60 +4-81,3-89 +7-15,5-15 +1-91,2-91 +54-64,53-65 +2-5,5-99 +13-29,12-29 +24-25,24-99 +52-67,2-67 +2-79,3-79 +13-70,65-69 +3-93,92-92 +38-38,10-37 +2-52,51-53 +1-29,6-29 +2-85,1-15 +41-82,81-83 +12-60,13-60 +5-84,3-84 +47-47,47-75 +84-84,17-84 +2-86,1-86 +49-52,43-50 +42-81,80-80 +12-91,13-92 +30-33,30-53 +31-53,15-48 +72-84,55-73 +86-87,86-90 +38-93,35-39 +8-78,6-8 +10-92,10-20 +17-88,16-16 +4-4,4-92 +14-63,15-64 +12-97,12-50 +2-40,1-44 +5-94,1-94 +24-75,23-75 +31-60,12-60 +79-82,74-81 +94-94,9-95 +2-25,24-26 +7-77,8-76 +41-95,32-47 +5-75,4-80 +16-43,16-23 +79-92,20-80 +21-63,20-64 +5-69,6-69 +5-5,5-99 +2-91,3-92 +44-94,93-96 +20-92,20-93 +18-78,18-79 +13-99,12-95 +20-85,20-86 +68-92,2-92 +1-6,6-57 +4-82,81-87 +95-96,2-95 +10-98,10-10 +8-87,8-94 +15-95,16-94 +5-95,1-3 +20-37,37-98 +82-98,82-96 +52-54,30-98 +75-88,52-74 +79-95,79-82 +11-57,10-74 +39-73,39-93 +66-67,1-67 +10-79,5-37 +13-96,34-80 +28-61,28-62 +48-83,30-59 +61-83,21-60 +44-50,36-50 +68-78,37-78 +27-91,26-27 +57-66,57-57 +8-65,7-70 +92-95,24-86 +20-80,19-99 +21-43,21-21 +27-99,21-26 +88-93,87-94 +29-61,78-89 +77-96,76-97 +24-89,19-90 +12-28,27-37 +49-96,10-95 +89-90,49-89 +31-95,72-95 +1-99,1-1 +15-47,47-93 +19-81,4-96 +48-62,48-61 +52-92,51-53 +28-48,28-49 +46-83,12-82 +11-69,70-70 +60-92,46-92 +12-53,35-52 +1-88,89-97 +10-93,9-94 +7-93,7-7 +20-97,21-91 +6-82,6-83 +19-72,72-89 +22-35,34-36 +3-70,10-59 +28-30,29-96 +9-15,11-14 +77-82,52-77 +34-34,33-88 +3-4,3-88 +4-97,4-99 +17-65,14-65 +44-81,44-82 +1-87,3-87 +9-75,10-75 +21-41,12-18 +47-54,53-70 +20-67,7-67 +70-70,53-69 +97-98,69-98 +8-56,9-57 +22-54,23-53 +1-16,10-14 +57-67,11-66 +2-99,3-34 +11-37,36-38 +30-83,52-88 +61-94,20-60 +24-81,23-69 +7-44,43-45 +54-77,55-76 +57-91,57-92 +1-30,9-30 +20-20,19-58 +9-83,8-94 +6-89,6-90 +98-98,16-97 +52-52,51-64 +29-62,29-63 +64-91,92-94 +46-90,47-86 +95-99,10-96 +84-84,17-83 +11-37,2-10 +14-85,13-85 +37-58,11-57 +32-85,33-86 +14-92,3-9 +14-33,13-32 +36-84,66-84 +19-99,20-73 +10-30,2-31 +49-72,23-71 +2-83,7-84 +53-69,26-72 +11-24,25-56 +85-87,86-87 +18-97,12-97 +61-80,61-62 +2-59,2-12 +27-93,57-93 +29-83,29-84 +45-57,55-58 +80-92,81-86 +48-51,31-36 +7-96,97-98 +62-62,63-80 +16-39,17-39 +17-36,17-37 +59-59,59-88 +42-88,27-88 +42-72,43-73 +5-6,5-89 +80-81,80-91 +41-56,41-42 +20-42,21-42 +23-91,22-23 +5-88,5-5 +78-96,79-81 +8-9,7-8 \ No newline at end of file diff --git a/2022/Day5/Day5.py b/2022/Day5/Day5.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day5/Day5_temp.py b/2022/Day5/Day5_temp.py new file mode 100644 index 0000000..95178ca --- /dev/null +++ b/2022/Day5/Day5_temp.py @@ -0,0 +1,79 @@ +import re + + +class Operation: + amount: int + src: int + dest: int + + def __init__(self, amount: int, src: int, dest: int): + self.amount = amount + self.src = src - 1 + self.dest = dest - 1 + + +def buildStacks(raw: [str]) -> [[str]]: + builder = [[] for i in range(9)] + for lineNumber in range(len(raw)): + line = raw[lineNumber] + for position in [x.start() for x in re.finditer('\[', line)]: + sign = line[position + 1] + builder[position // 4].append(sign) + + return builder + + +def buildOperations(raw: [str]) -> [Operation]: + builder = [] + + for currentOperation in raw: + currentOperation = currentOperation.replace("move ", "").replace("from ", "").replace("to ", "") + amount, src, dest = map(int, currentOperation.split(" ")) + builder.append(Operation(amount, src, dest)) + + return builder + + +def performOperation(stacks: [[str]], op: Operation) -> [[str]]: + for i in range(op.amount): + stacks[op.dest].insert(0, stacks[op.src][0]) + stacks[op.src] = stacks[op.src][1:] + + return stacks + + +def buildSolutionString(stacks: [[str]]) -> str: + sol = "" + + for stack in stacks: + sol += stack[0] + + return sol + + +def performOperationVariant2(stacks: [[str]], op: Operation) -> [[str]]: + for i in range(op.amount): + stacks[op.dest].insert(i, stacks[op.src][0]) + stacks[op.src] = stacks[op.src][1:] + + return stacks + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + rawstacks, rawoperations = f.read().split("\n\n") + + stacks = buildStacks(rawstacks.split("\n")) + operations = buildOperations(rawoperations.split("\n")) + + for operation in operations: + stacks = performOperation(stacks, operation) + + print(f"Solution 1: {buildSolutionString(stacks)}") + + stacks = buildStacks(rawstacks.split("\n")) + + for operation in operations: + stacks = performOperationVariant2(stacks, operation) + + print(f"Solution 2: {buildSolutionString(stacks)}") diff --git a/2022/Day5/input-sprechtlPC2.txt b/2022/Day5/input-sprechtlPC2.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day5/input.txt b/2022/Day5/input.txt new file mode 100644 index 0000000..b0d475c --- /dev/null +++ b/2022/Day5/input.txt @@ -0,0 +1,512 @@ + [R] [J] [W] + [R] [N] [T] [T] [C] +[R] [P] [G] [J] [P] [T] +[Q] [C] [M] [V] [F] [F] [H] +[G] [P] [M] [S] [Z] [Z] [C] [Q] +[P] [C] [P] [Q] [J] [J] [P] [H] [Z] +[C] [T] [H] [T] [H] [P] [G] [L] [V] +[F] [W] [B] [L] [P] [D] [L] [N] [G] + 1 2 3 4 5 6 7 8 9 + +move 2 from 2 to 8 +move 2 from 1 to 6 +move 8 from 7 to 1 +move 7 from 5 to 4 +move 1 from 6 to 4 +move 1 from 6 to 3 +move 6 from 3 to 5 +move 9 from 8 to 1 +move 3 from 6 to 7 +move 14 from 4 to 1 +move 6 from 1 to 7 +move 16 from 1 to 9 +move 6 from 1 to 4 +move 1 from 8 to 6 +move 4 from 1 to 5 +move 11 from 9 to 7 +move 2 from 1 to 8 +move 1 from 6 to 7 +move 1 from 8 to 7 +move 1 from 8 to 3 +move 7 from 4 to 3 +move 14 from 7 to 6 +move 8 from 6 to 9 +move 19 from 9 to 2 +move 1 from 1 to 2 +move 2 from 9 to 7 +move 9 from 7 to 8 +move 2 from 2 to 8 +move 16 from 2 to 9 +move 4 from 8 to 2 +move 1 from 7 to 9 +move 3 from 9 to 6 +move 3 from 3 to 6 +move 11 from 9 to 2 +move 7 from 5 to 3 +move 2 from 5 to 9 +move 6 from 6 to 4 +move 1 from 6 to 4 +move 4 from 6 to 8 +move 5 from 9 to 1 +move 4 from 1 to 7 +move 3 from 2 to 6 +move 3 from 4 to 1 +move 1 from 4 to 1 +move 2 from 1 to 3 +move 4 from 3 to 7 +move 1 from 5 to 2 +move 3 from 1 to 6 +move 15 from 2 to 5 +move 3 from 6 to 3 +move 13 from 3 to 8 +move 2 from 4 to 2 +move 9 from 5 to 4 +move 2 from 2 to 5 +move 5 from 7 to 5 +move 10 from 8 to 6 +move 1 from 2 to 5 +move 10 from 4 to 6 +move 4 from 8 to 6 +move 3 from 7 to 1 +move 3 from 1 to 9 +move 1 from 2 to 1 +move 8 from 5 to 2 +move 3 from 6 to 9 +move 6 from 8 to 5 +move 6 from 9 to 2 +move 1 from 1 to 9 +move 10 from 2 to 1 +move 4 from 8 to 5 +move 10 from 5 to 9 +move 11 from 9 to 7 +move 5 from 7 to 9 +move 1 from 9 to 2 +move 3 from 2 to 9 +move 2 from 2 to 8 +move 4 from 9 to 5 +move 4 from 1 to 9 +move 5 from 5 to 2 +move 5 from 1 to 4 +move 21 from 6 to 9 +move 3 from 2 to 9 +move 2 from 8 to 1 +move 25 from 9 to 6 +move 4 from 5 to 7 +move 1 from 4 to 6 +move 6 from 6 to 4 +move 3 from 4 to 6 +move 7 from 7 to 3 +move 4 from 9 to 1 +move 3 from 7 to 8 +move 2 from 9 to 8 +move 2 from 2 to 8 +move 4 from 1 to 3 +move 9 from 6 to 2 +move 13 from 6 to 4 +move 13 from 4 to 5 +move 1 from 5 to 8 +move 2 from 2 to 3 +move 6 from 5 to 3 +move 19 from 3 to 6 +move 1 from 4 to 9 +move 2 from 8 to 1 +move 5 from 2 to 3 +move 5 from 1 to 9 +move 7 from 5 to 4 +move 1 from 8 to 3 +move 1 from 2 to 6 +move 8 from 6 to 3 +move 1 from 9 to 8 +move 11 from 4 to 2 +move 1 from 4 to 6 +move 1 from 2 to 8 +move 5 from 3 to 4 +move 4 from 9 to 6 +move 1 from 6 to 8 +move 9 from 3 to 1 +move 7 from 2 to 9 +move 1 from 2 to 6 +move 3 from 1 to 8 +move 2 from 2 to 3 +move 3 from 9 to 7 +move 3 from 4 to 7 +move 2 from 4 to 3 +move 2 from 3 to 5 +move 8 from 6 to 4 +move 6 from 8 to 6 +move 2 from 9 to 4 +move 5 from 8 to 6 +move 3 from 7 to 5 +move 1 from 5 to 8 +move 1 from 8 to 2 +move 1 from 5 to 1 +move 11 from 4 to 9 +move 2 from 6 to 3 +move 2 from 2 to 4 +move 6 from 1 to 2 +move 6 from 2 to 1 +move 3 from 7 to 3 +move 2 from 4 to 7 +move 4 from 6 to 5 +move 7 from 3 to 7 +move 5 from 9 to 6 +move 22 from 6 to 8 +move 2 from 6 to 5 +move 2 from 8 to 4 +move 14 from 8 to 7 +move 11 from 7 to 4 +move 3 from 8 to 1 +move 9 from 7 to 8 +move 10 from 1 to 4 +move 1 from 7 to 4 +move 4 from 8 to 7 +move 6 from 4 to 9 +move 7 from 4 to 1 +move 3 from 4 to 8 +move 1 from 5 to 8 +move 8 from 5 to 3 +move 4 from 3 to 9 +move 7 from 8 to 9 +move 3 from 8 to 3 +move 2 from 8 to 2 +move 7 from 9 to 1 +move 2 from 2 to 8 +move 8 from 9 to 1 +move 8 from 1 to 7 +move 7 from 1 to 5 +move 7 from 7 to 1 +move 11 from 9 to 8 +move 9 from 8 to 5 +move 2 from 8 to 5 +move 3 from 1 to 8 +move 2 from 3 to 7 +move 6 from 4 to 1 +move 6 from 1 to 6 +move 5 from 7 to 1 +move 2 from 4 to 6 +move 1 from 3 to 5 +move 4 from 7 to 4 +move 2 from 8 to 7 +move 10 from 5 to 6 +move 9 from 6 to 1 +move 8 from 1 to 6 +move 1 from 7 to 2 +move 9 from 6 to 4 +move 2 from 4 to 3 +move 3 from 8 to 1 +move 1 from 2 to 4 +move 4 from 4 to 1 +move 7 from 4 to 3 +move 3 from 3 to 2 +move 1 from 7 to 6 +move 9 from 6 to 7 +move 6 from 7 to 4 +move 2 from 7 to 2 +move 6 from 4 to 7 +move 2 from 2 to 9 +move 1 from 2 to 4 +move 1 from 7 to 4 +move 4 from 7 to 6 +move 4 from 5 to 4 +move 1 from 2 to 5 +move 1 from 7 to 5 +move 1 from 2 to 6 +move 6 from 4 to 3 +move 9 from 3 to 9 +move 4 from 6 to 2 +move 7 from 3 to 8 +move 22 from 1 to 7 +move 1 from 1 to 7 +move 2 from 8 to 3 +move 4 from 5 to 6 +move 2 from 3 to 2 +move 6 from 2 to 8 +move 3 from 8 to 6 +move 1 from 4 to 8 +move 1 from 1 to 8 +move 8 from 6 to 7 +move 7 from 8 to 9 +move 22 from 7 to 4 +move 3 from 5 to 6 +move 1 from 8 to 1 +move 2 from 8 to 2 +move 3 from 6 to 4 +move 1 from 1 to 3 +move 15 from 9 to 1 +move 5 from 1 to 5 +move 3 from 7 to 6 +move 5 from 5 to 6 +move 4 from 4 to 3 +move 6 from 6 to 9 +move 7 from 7 to 6 +move 5 from 6 to 7 +move 4 from 1 to 9 +move 3 from 7 to 4 +move 2 from 9 to 7 +move 5 from 3 to 5 +move 3 from 6 to 3 +move 5 from 4 to 6 +move 10 from 9 to 5 +move 1 from 2 to 9 +move 1 from 3 to 5 +move 1 from 2 to 9 +move 3 from 1 to 6 +move 2 from 9 to 2 +move 7 from 6 to 5 +move 15 from 4 to 9 +move 2 from 4 to 5 +move 1 from 3 to 4 +move 9 from 9 to 1 +move 1 from 9 to 2 +move 2 from 9 to 4 +move 11 from 5 to 4 +move 1 from 9 to 3 +move 1 from 6 to 8 +move 4 from 7 to 8 +move 4 from 8 to 9 +move 15 from 4 to 7 +move 1 from 6 to 7 +move 1 from 3 to 7 +move 6 from 9 to 6 +move 1 from 3 to 7 +move 1 from 2 to 1 +move 1 from 9 to 5 +move 3 from 6 to 1 +move 11 from 1 to 4 +move 6 from 5 to 1 +move 2 from 2 to 5 +move 1 from 5 to 7 +move 2 from 6 to 1 +move 7 from 5 to 7 +move 3 from 5 to 6 +move 4 from 6 to 1 +move 11 from 4 to 3 +move 1 from 8 to 5 +move 23 from 7 to 6 +move 18 from 6 to 9 +move 1 from 5 to 9 +move 1 from 4 to 2 +move 3 from 3 to 7 +move 3 from 3 to 8 +move 17 from 1 to 8 +move 5 from 6 to 5 +move 2 from 7 to 1 +move 20 from 8 to 2 +move 4 from 7 to 2 +move 3 from 9 to 5 +move 7 from 9 to 7 +move 6 from 9 to 2 +move 1 from 1 to 8 +move 3 from 9 to 4 +move 7 from 5 to 2 +move 6 from 7 to 1 +move 1 from 1 to 8 +move 3 from 2 to 6 +move 1 from 7 to 6 +move 2 from 8 to 9 +move 35 from 2 to 4 +move 3 from 3 to 2 +move 1 from 5 to 7 +move 2 from 3 to 9 +move 3 from 1 to 6 +move 2 from 2 to 1 +move 32 from 4 to 7 +move 3 from 4 to 8 +move 3 from 9 to 5 +move 1 from 1 to 2 +move 21 from 7 to 5 +move 2 from 2 to 1 +move 3 from 1 to 2 +move 15 from 5 to 1 +move 3 from 6 to 7 +move 3 from 4 to 6 +move 3 from 8 to 5 +move 1 from 9 to 3 +move 8 from 7 to 2 +move 6 from 5 to 2 +move 9 from 1 to 6 +move 4 from 7 to 1 +move 2 from 5 to 4 +move 2 from 4 to 3 +move 3 from 5 to 4 +move 17 from 2 to 7 +move 3 from 3 to 5 +move 2 from 4 to 8 +move 1 from 4 to 3 +move 5 from 7 to 9 +move 1 from 3 to 6 +move 4 from 1 to 7 +move 4 from 6 to 7 +move 2 from 5 to 2 +move 1 from 1 to 3 +move 10 from 6 to 4 +move 1 from 3 to 7 +move 20 from 7 to 8 +move 8 from 4 to 8 +move 1 from 2 to 8 +move 4 from 9 to 1 +move 3 from 7 to 4 +move 2 from 4 to 9 +move 2 from 6 to 3 +move 1 from 2 to 8 +move 1 from 7 to 6 +move 1 from 9 to 5 +move 3 from 5 to 9 +move 4 from 9 to 2 +move 1 from 4 to 5 +move 1 from 5 to 3 +move 3 from 2 to 4 +move 1 from 9 to 7 +move 1 from 2 to 1 +move 1 from 7 to 1 +move 11 from 1 to 2 +move 3 from 1 to 7 +move 25 from 8 to 5 +move 1 from 6 to 3 +move 1 from 6 to 2 +move 7 from 8 to 2 +move 9 from 2 to 8 +move 2 from 4 to 7 +move 2 from 5 to 7 +move 2 from 5 to 2 +move 5 from 5 to 1 +move 7 from 5 to 1 +move 2 from 4 to 9 +move 3 from 5 to 6 +move 1 from 1 to 8 +move 1 from 5 to 6 +move 1 from 4 to 7 +move 1 from 9 to 2 +move 3 from 5 to 2 +move 2 from 6 to 9 +move 3 from 9 to 8 +move 1 from 5 to 4 +move 3 from 3 to 9 +move 10 from 1 to 5 +move 4 from 2 to 8 +move 2 from 6 to 1 +move 3 from 9 to 7 +move 1 from 1 to 9 +move 1 from 4 to 3 +move 1 from 9 to 2 +move 9 from 8 to 2 +move 2 from 3 to 7 +move 2 from 7 to 6 +move 3 from 5 to 6 +move 4 from 8 to 6 +move 4 from 8 to 3 +move 4 from 3 to 2 +move 4 from 6 to 8 +move 1 from 7 to 9 +move 2 from 1 to 8 +move 2 from 8 to 3 +move 1 from 9 to 2 +move 13 from 2 to 4 +move 6 from 5 to 7 +move 2 from 5 to 7 +move 10 from 2 to 4 +move 11 from 7 to 8 +move 1 from 6 to 4 +move 4 from 6 to 7 +move 24 from 4 to 9 +move 11 from 7 to 4 +move 1 from 3 to 8 +move 1 from 3 to 5 +move 4 from 4 to 2 +move 5 from 4 to 2 +move 9 from 2 to 5 +move 4 from 9 to 5 +move 1 from 5 to 1 +move 2 from 5 to 7 +move 2 from 2 to 5 +move 1 from 1 to 7 +move 2 from 2 to 3 +move 18 from 9 to 6 +move 9 from 8 to 1 +move 2 from 9 to 5 +move 5 from 1 to 8 +move 2 from 8 to 7 +move 4 from 8 to 4 +move 5 from 8 to 7 +move 10 from 5 to 1 +move 10 from 7 to 4 +move 4 from 5 to 8 +move 14 from 1 to 9 +move 6 from 9 to 8 +move 1 from 5 to 1 +move 12 from 6 to 9 +move 4 from 6 to 8 +move 11 from 8 to 5 +move 1 from 6 to 1 +move 19 from 9 to 7 +move 2 from 3 to 5 +move 13 from 7 to 5 +move 3 from 7 to 1 +move 4 from 8 to 9 +move 2 from 7 to 6 +move 7 from 4 to 8 +move 5 from 8 to 1 +move 1 from 1 to 3 +move 1 from 7 to 2 +move 6 from 1 to 6 +move 1 from 2 to 5 +move 1 from 8 to 1 +move 1 from 8 to 2 +move 2 from 4 to 8 +move 5 from 6 to 1 +move 2 from 4 to 7 +move 2 from 9 to 6 +move 1 from 6 to 5 +move 4 from 6 to 2 +move 1 from 9 to 5 +move 2 from 4 to 5 +move 4 from 2 to 4 +move 2 from 8 to 3 +move 3 from 3 to 2 +move 4 from 1 to 2 +move 2 from 4 to 7 +move 4 from 2 to 3 +move 4 from 1 to 2 +move 13 from 5 to 1 +move 1 from 6 to 2 +move 1 from 1 to 8 +move 15 from 5 to 2 +move 4 from 3 to 1 +move 5 from 4 to 3 +move 1 from 3 to 6 +move 1 from 8 to 7 +move 1 from 9 to 8 +move 1 from 7 to 8 +move 3 from 3 to 2 +move 1 from 8 to 2 +move 1 from 3 to 7 +move 13 from 1 to 4 +move 3 from 5 to 3 +move 1 from 1 to 2 +move 1 from 8 to 5 +move 5 from 7 to 2 +move 1 from 6 to 5 +move 2 from 3 to 4 +move 10 from 2 to 5 +move 1 from 9 to 5 +move 3 from 1 to 8 +move 3 from 8 to 3 +move 11 from 4 to 5 +move 12 from 2 to 8 +move 4 from 4 to 7 +move 10 from 8 to 5 +move 2 from 8 to 1 +move 1 from 7 to 3 +move 1 from 7 to 9 +move 5 from 3 to 7 +move 1 from 9 to 4 +move 7 from 7 to 6 +move 13 from 5 to 8 +move 6 from 6 to 7 +move 5 from 7 to 4 +move 1 from 6 to 4 +move 2 from 4 to 9 +move 1 from 7 to 9 +move 3 from 4 to 3 +move 1 from 3 to 6 +move 4 from 5 to 7 \ No newline at end of file diff --git a/2022/Day6/Day6.py b/2022/Day6/Day6.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day6/Day6_temp.py b/2022/Day6/Day6_temp.py new file mode 100644 index 0000000..1f96cbc --- /dev/null +++ b/2022/Day6/Day6_temp.py @@ -0,0 +1,12 @@ +def findFirstUniquePackage(signal: str, numberOfUniques: int) -> int: + for offset in range(len(signal) - numberOfUniques): + if len(set(signal[offset:offset + numberOfUniques])) == numberOfUniques: + return offset + numberOfUniques + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + signal = f.read() + + print(f"Solution 1: {findFirstUniquePackage(signal, 4)}") + print(f"Solution 2: {findFirstUniquePackage(signal, 14)}") diff --git a/2022/Day6/input-sprechtlPC2.txt b/2022/Day6/input-sprechtlPC2.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day6/input.txt b/2022/Day6/input.txt new file mode 100644 index 0000000..217a1d8 --- /dev/null +++ b/2022/Day6/input.txt @@ -0,0 +1 @@ +pjbjvjtjljplppjssvtvwtwptptztltbtrrjgrjrzrqrjrbrhbrhrlllbpbdbbzqqgsqshqssjjbsjbsbmbhhmchhrqrcqqbwbqwwqrrznnsbswwwdjwdwmmsvszzlbbgddbgdgfgttzjzrjzrjzzvrvqqgpqggtbgtgvvrhvhtvtjjbpjjfjhjbhbddbjjjmzmtmgmpgmmmljlnljjmpmbpmbmrrlhhlppdgdfgfbbqlbbtffjjgvvnpvpbpttqmmnhhgfgrrwhrrbnbznzccmbmvmmzszsvsbvbccsrslsjsbbtdtwtvttvpvzzvbzzwczwcczhzhwhjhjghgppgpgttdwdhwhphnppqmpqqhthcchdhmhnnbcnbcbbggbfblljttwsswspsggpjjzszcscsmcmdmnngzzhrzrbrhbhzbzvzgvgffnlnljlrrhchhsvhssmpmccncdnccgdgbglgtlggnllsvvpfvpfpbffsgglddjrrzzphhptprtppwrwffzllrbrmrpmpdmpdmpplpspcphcphhgmmqnmmvnmmdvmvsmmqjmmlmlbmlbmlltlptphpnncscbscbcggwhhgjgqjqmjmdjmdjdrrvgvvzlldgdnnvttmmpffdjjvvchcwwbhwbwzzlmlccrttcntccpcgccpgcpggdrrbtrthhlrrbqrrpspdsdldbldblbzbpbgggtngtgqqtwwdjjmmcrmcrcvclcddhllpzpdzzmccrtccfvffccfhccpscctbbbzqzvvllgwlgwgvwwjswjswsvvwhhvjvsjvjmmjhjrhrmrvrnrccmnmzzmdzzbtbvbqvvgzgcgvvvvlltvllbfbqqrppwhpwpffzddzdzwdzzrggmhmfhmhbbzjzsjzzhhjdhhdnndsnssnfffbmffwhwrhhmmbnnbrnrbrrtqtztnzzzzblbhbdhbbfmfqfmmsgszzvfzfmfwfnwfwggwngnqnwqnwqwvwqvwvdvrvjjfnjnmnfmmwzzltztjjqnnnmlmzlmmrcmclcqqhrhdhccdfdvfvccvtcvvdmmtmccwjjcbcrrjmrjrdrffgwwvbvlvsspwpsspzsschssmqsqmqmlqmmqgqfqcqjcjtthjttlddfvvwwjvvtpvvfsvffqnffznzqzszgzmmjttwztwzzhqqccqsqmqnmqqjhqhzhwhvhdddsndsdfftvffwlwnnmmdpmmnhhrqrrclcdlcddhcdcppgrprnpnptnpphgpbqfngdgzvgndwcgrwcsfmhzsvddhzbgjmvvdjjzswvgnpmvgdpwsgbgjzjpsrfdzdzjzzrpplbhsmgddqzjbdzdzltqqwqjzqvwfmcdppbdbprrwzhmnrqclzrnmdjnfbwmvdrwtpwvgscrqgpndqnzbjsbljcbthbpgdjdcdwfhpvjnbsfjdlrjldvvmtfdslrhlfwmvclqrljrqmmjgqfwmfgwdjzzptgcthvtgdswsqjrqvnzmtqldjjcqnfhtvbwhjqlvpptfwjrdpcwvzddgcjzvqbhtsnnnjqqmqlbgvqmvjhvvpbzcbdmhgmcjbfcccsvlzjztvjzrrlhtgwccdcgcptqlmdhmdhvqzfntbjqtsmvqgwsltqntgszllntrljfgfsghtbbcqrdgwqphmbqtzmjqccrgvqpqpchzjstdmmtvntwjqsbcqjgnhzlllcfbpgtgrhwwhqqdlgrlsbzbmchvjnsgpdnmqvtgwqjpgflqgfngjfcfwqzmvvgzmmhbgfnbzvzclwclqdcccgbrrzpwdtprgsvhbgsnbntgrvnzhrnzfzdmnlbnrbqvmjbwpgvjlhbcvsrlqmcsnlrvtfdwtvcbmlndgbctsnmtctjszlpddqmzbtphhhfznwbdfsgppmdmczmhmmrzpllfqqbgvlsrscpfgznhdhgrnnnvrchgvzlqbgvcfghjvlvrvpclfcshbmvglcfrjbzrbcjmjjrfgqthwfrqbgtjldmbnfwllspmwrvstvrltvrlvrtjvprgtgzjlrgclvjhqpfcwcdbdtzwdsdfrtsvtvgjmsszdfqlmhqqlzswjfndswlmhcrhglphvpnfjpbmggbwlmzjchpnrllbjpmgmzjjrqpqgsbrszqhdljcpnclvrvbntgtcdcmhtdhgslhpvdjpvrszfrjhsbvcvtfwvvgczprnpbhmnnlmctbtqdjspgvhvnhwvspwgnjvzllwlnjhfjwsslppmjbfbdnthcpzbcmnnbvhctgwgdvhvlrbltmdnlfcsncqgrmjprshdvvtvcccgzhszcjgczhmhtvmccjpchqshhdzjjhbfpzqdjszdhdvlmgctmwcjprwlsqbcqhlcrfdgnqzfdfvqslmqlppbsvbmjmfbrtdmpmtqvwvppcfzddjzhhzlrrnnhbrlhmzlqwftprfvctnfhfhfzrnrvggfqmqwcwszhtbfjncprgwcqbjlvtnrprlwwghswvprjmsbmqvwnnfggprndvshfvvwtrqjpwghgbppftgzhqjslfzhngwfsjnmjzdsjqgpmglwnjlcgmczgvndszrszcpnzqpbzjmgrfsbjlghwrbqsqdhlnhzsvsgbqhbcdffjlgrbdrrjvclzqpftlhdvvcrvlgvlpnjcqdcbdjtlwnldjhhhzrwsqlhlsztwrznfsszptlrhjmqwmnfwjtjwmmmtvwzhpmjgzgsscbddgvvhpcnhvnggzhbzvvjlmdftpbcsvtsttrvgghptmmcdclbdvmnsdntthfbdznbclwccnlzcvdwzrqgddjszvbdqcjppzrtpnrhfcvvwpjqczgqwzzzvzmlnlzqszvtllftthgwgftjzsndpzzcnqpcvmsdvvfrjdsvfclsqqhsjrrctfvdrlhfmhprjggdcmqrrbqtwnrllhhztvjgmzqszbvqfwsgllvhsvfrjffvdscwjzqlzlwdpgthddpgzjfdbdqpsnntwpslvsdpqfnsgcllszcjwvtqhwhpfrlfdgwrfmgfpjmvnstrmtfcvgwlqdfqvntltqtrmjjtwcthvwntqgvncssplnmvlnstlcphvlcmvjnstwldtntchcbmzmlzhgjfbrdlgzvqpgcndmfdnmcnwhmpdnpqstfddddcrpgrpfwfbzjqtnzwwqpzrqpmrjpfznrndfgwhtlvrcrphqfjzjbttwhgnsngqwvnsbvcqtjlmhvmnmnnmjcmlpnpgmrqsbmgljvsfqvrlljqzmzqqbgpvcrwdjmgsglssjswmnvtshhfqjhqmfmvcjwfpwsppgtrqsbhhcdljnjphnjszqpvdplbwzpwmmpwfhmhngtllzqvpmgdctmfqwwqjszssmjhwnrjdtmmvpdnwlqtcbpfcmwtbjmmsmmdpqgzdhsblgjmjbpzgqvqhnggtwmhztbbhlflllgwblncjjsngdgvsfdmsbsvlpnjjzqqbzhsqclmjnnmmwlpvtgwqmcgmrqdwdddlgbvhntbztbjnqhdlggnzwsdtdzprgddhtcttjrcpszgchtfwqjsdlnbntfwqpzpfsqrqjhthmcfszwtwcqwbvfzdnrrpmzjdrhsgmhfbsldvcrjdwvpqpszzlvbptljgvccqsdhhnztjpghbvhfptgplqdvldjzfthpspwvgljwnnndwrqzbrstnqbvrrcghssnrpvtrhmvcmbngwndzfswmgjwnnzqdcjhpthcgvthsnwqzrnzrvdjmctchhsbnrtvctzqfpcjhzmhnfjlqftbjztfbcppgmwvrzzrvlcpnpwwpvtcpdplrcfpgfqjtlfjtphhpcltwqcbqbznbtjrtdrpgtvzmgsclhpptrssqqbctdrftqzmwjmrmjtgmjmsnbnspjvcqpqnmgzgjrmfhghvsfsdqnbdjsbcpczsdswdcvhfzlgpzbtmztcnbpcvjnlcdmmlbtwzsfqtfnlrwjtwmgslcgptgbdsfwdhppvfwbbgdfdqtrbncbznmqtchzsdzlhlhjnnbpdvnnfjrdfbdqmvcb \ No newline at end of file diff --git a/2022/Day7/Day7.py b/2022/Day7/Day7.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day7/input-sprechtlPC2.txt b/2022/Day7/input-sprechtlPC2.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day8/Day8.py b/2022/Day8/Day8.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day8/input-sprechtlPC2.txt b/2022/Day8/input-sprechtlPC2.txt new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day9/Day9.py b/2022/Day9/Day9.py new file mode 100644 index 0000000..e69de29 diff --git a/2022/Day9/input.txt b/2022/Day9/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/initFiles.py b/initFiles.py new file mode 100644 index 0000000..c93f027 --- /dev/null +++ b/initFiles.py @@ -0,0 +1,14 @@ +import sys +import os + +if __name__ == '__main__': + sys.path.append('..') + year = input('Enter year: ') + # create folders for the days and the py files + for i in range(1, 26): + if not os.path.exists(year + '/Day' + str(i)): + os.makedirs(year + '/Day' + str(i)) + f = open(year + '/Day' + str(i) + '/Day' + str(i) + '.py', 'w') + f.close() + f = open(year + '/Day' + str(i) + '/input.txt', 'w') + f.close()