19-1 fertig -- 19-2 kapituliert

This commit is contained in:
2023-12-19 18:42:09 +01:00
parent 55c8c741c6
commit c9c0feb1bc
3 changed files with 84 additions and 23 deletions

2
.idea/misc.xml generated
View File

@@ -3,7 +3,7 @@
<component name="Black"> <component name="Black">
<option name="sdkName" value="Python 3.11 (AdventOfCode2023)" /> <option name="sdkName" value="Python 3.11 (AdventOfCode2023)" />
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="Python 3.10 (AdventOfCode2023)" project-jdk-type="Python SDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="Python 3.11 (AdventOfCode2023)" project-jdk-type="Python SDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

View File

@@ -5,7 +5,7 @@ data = []
# parse input # parse input
is_rule = True is_rule = True
input_file = open("input-ex", "r") input_file = open("input", "r")
for line in input_file: for line in input_file:
line = line.strip() line = line.strip()
@@ -32,6 +32,7 @@ for line in input_file:
data.append(da) data.append(da)
input_file.close() input_file.close()
'''
# Ausgabe rules # Ausgabe rules
for key in rules: for key in rules:
print(rules[key]) print(rules[key])
@@ -39,46 +40,43 @@ print("-------------------------------------------------------------------------
# Ausgabe data # Ausgabe data
for da in data: for da in data:
print(da) print(da)
print("---------------------------------------------------------------------------")
'''
def do_test(eq, dat): def do_test(eq, dat):
print(eq)
eq = eq.split(":")[0] eq = eq.split(":")[0]
if eq.count("<") == 1: if eq.count("<") == 1:
eq = eq.split("<") eq = eq.split("<")
print(eq[0], dat[eq[0]],"teeeee") if dat[eq[0]] < int(eq[1]):
if dat[eq[0]] < int(dat[1]):
return True return True
else: else:
return False return False
else: else:
eq = eq.split(">") eq = eq.split(">")
if dat[eq[0]] > int(dat[1]): if dat[eq[0]] > int(eq[1]):
return True return True
else: else:
return False return False
def get_destination(k, dat):
def get_destination(k, werte):
if k == "R" or k == "A":
return k
for r in rules[k]: for r in rules[k]:
print(r, dat)
if r.count(":") == 0: if r.count(":") == 0:
if r == "R": return get_destination(r, werte)
return "R"
elif r == "A":
return "A"
else:
get_destination(r, dat)
else: else:
x, m, a, s = dat["x"], dat["m"], dat["s"], dat["a"]
r = r.split(":") r = r.split(":")
if do_test(r[0], dat): if do_test(r[0], werte):
if r[1] == "R": return get_destination(r[1], werte)
return "R"
elif r[1] == "A":
return "A"
else:
get_destination(r[1], dat)
solution = 0
for i in range(len(data)):
r_or_a = get_destination("in", data[i])
if r_or_a == "A":
for key in data[i].keys():
solution += data[i][key]
print(get_destination("in", data[0])) print("Lösung:", solution)

63
19/19-2.py Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from time import time
start = time()
rules = {}
# parse input
input_file = open("input", "r")
for line in input_file:
line = line.strip()
if line == "":
break
line = line.split("{")
ru = line[1].replace("}", "").split(",")
rules[line[0]] = ru
input_file.close()
# Ausgabe rules
for key in rules:
print(rules[key])
print("---------------------------------------------------------------------------")
def do_test(eq, dat):
eq = eq.split(":")[0]
if eq.count("<") == 1:
eq = eq.split("<")
if dat[eq[0]] < int(eq[1]):
return True
else:
return False
else:
eq = eq.split(">")
if dat[eq[0]] > int(eq[1]):
return True
else:
return False
def get_destination(k, werte):
if k == "R" or k == "A":
return k
for r in rules[k]:
if r.count(":") == 0:
return get_destination(r, werte)
else:
r = r.split(":")
if do_test(r[0], werte):
return get_destination(r[1], werte)
solution = 0
for i in range(1, 4001):
for j in range(1, 4001):
print(i, j, solution)
for m in range(1, 4001):
for n in range(1, 4001):
if get_destination("in", {"x": i, "m": j, "a": m, "s": n}) == "A":
solution += 1
print("Lösung:", solution)