Advent of Code 2020, Python, Tag 2

preview_player
Показать описание
Lösung der aktuellen Aufgabenstellung in Python.

Wenn Ihr Lust auf ein Live-Event (z.B. morgen 19:00 Uhr) zur Lösung von Tag 3 habt, dann bitte mal im Kommentar melden. Könnte lustig werden.

Рекомендации по теме
Комментарии
Автор

Bzgl. Live-Event: Ja gerne, ich wäre dabei.

brotherlui
Автор

Mit Begeisterung versuche ich meine eigene Lösung zu programmieren. Erster Step alles ok, ich komme auf das gleiche Ergebnis. In der 2. Teilaufgabe verstehe ich es so, dass schon mal alle Passwörter raus sind, in denen der angegebene Buchstabe 2 mal vorkommt. Wenn ich das checken lasse, bleiben nur noch 60 Passwörter übrig, in denen der gesuchte Buchstabe nur einmal vorkommt. Beispiel am ersten Passwort : 4-5 t: invalid, da t nicht nur an Pos 4 oder 5 vorkommt. Beispiel am 33. Passwort : 4-11 r: wqnftvtptgrsj valid, da r nur einmal vorkommt und zwar an Pos 11. Ich komme im 2. Step auf 9 gültige Passwörter. Habe ich die Bedingungen nicht ganz verstanden ? LG Peter

pvane
Автор

Und hier mein Code für Tag 2:
from collections import defaultdict

with open('input.txt') as file:
data = [line.replace('-', ' ').replace(': ', ' ').strip().split() for line in file]

# Part 1
def policy1(minu, maxu, letter, password):
counts = defaultdict(int)
for char in password:
counts[char] += 1
return int(minu) <= counts[letter] <= int(maxu)

print(sum(policy1(*line) for line in data))

# Part 2
def policy2(minu, maxu, letter, password):
rule1 = password[int(minu) - 1] == letter
rule2 = password[int(maxu) - 1] == letter
return (rule1 and not rule2) or (not rule1 and rule2)

print(sum(policy2(*line) for line in data))

brotherlui
welcome to shbcf.ru