This commit is contained in:
Sven Heidemann 2022-12-04 09:17:40 +01:00
parent 862eff8557
commit efd1db1067
3 changed files with 71 additions and 4 deletions

View File

@ -10,6 +10,6 @@ Save the session key from https://adventofcode.com/ to .env file in the variable
## Execute
First create a venv and install deps with ```pip install -r deps.txt --extra-index-url https://pip.sh-edraft.de```
First create a venv and install deps with ```pip install -r deps.txt --upgrade --extra-index-url https://pip.sh-edraft.de```
Then run code easily with ```./run {Number-of-day}```

View File

@ -1,3 +1,3 @@
cpl-cli==2022.10.1
cpl-core==2022.10.0.post9
cpl-query==2022.10.0.post2
cpl-cli==2022.12.0
cpl-core==2022.12.0
cpl-query==2022.12.0

67
src/day4.py Normal file
View File

@ -0,0 +1,67 @@
from typing import Optional
from cpl_core.console import Console
from cpl_core.utils import String
from cpl_query.enumerable import Enumerable
from cpl_query.extension import List
from cpl_core.pipes import *
from aoc.aoc import get_input
# global vars
day = 4
aoc_input = get_input(2022, day)
# aoc_input = """2-4,6-8
# 2-3,4-5
# 5-7,7-9
# 2-8,3-7
# 6-6,4-6
# 2-6,4-8
# """
def part1() -> List[List]:
groups = List(List)
overlaps = 0
for pairs in aoc_input.splitlines():
pair1, pair2 = pairs.split(',')
g1 = List(int).extend(range(int(pair1.split('-')[0]), int(pair1.split('-')[1]) + 1))
g2 = List(int).extend(range(int(pair2.split('-')[0]), int(pair2.split('-')[1]) + 1))
if set(g1).issubset(g2):
overlaps += 1
if set(g2).issubset(g1) or set(g1).issubset(g2):
overlaps += 1
groups.add(g1)
groups.add(g2)
Console.write_line(groups.count(), overlaps)
return groups
def part2(groups: List[List]):
pairs = List(List)
pair = List(List)
for i, group in enumerate(groups):
pair.add(group)
if i % 2 != 0:
pairs.add(pair)
pair = List(List)
overlaps = 0
for pair in pairs:
pair: List = pair
if pair[0].any(lambda x: x in pair[1]) or pair[1].any(lambda x: x in pair[0]):
overlaps += 1
Console.write_line(overlaps)
if __name__ == '__main__':
Console.write_line(f'Advent of code day {day}')
groups = part1()
part2(groups)
Console.write_line()