day 4
This commit is contained in:
parent
862eff8557
commit
efd1db1067
@ -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}```
|
6
deps.txt
6
deps.txt
@ -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
67
src/day4.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user