A repro for all my Advent of ode tasks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

37 lines
1.5 KiB

knowable_facts = [ 'children:', 'cats:', 'samoyeds:', 'pomeranians:', 'akitas:', 'vizslas:', 'goldfish:', 'trees:', 'cars:', 'perfumes:']
known_facts = { 'children:' : 3, 'cats:' : 7, 'samoyeds:' : 2, 'pomeranians:' : 3, 'akitas:' : 0, 'vizslas:' : 0, 'goldfish:' : 5, 'trees:' : 3 , 'cars:' : 2, 'perfumes:' : 1 }
file = open('input.txt', 'r')
sues = {}
sue_score = []
def fact_remembered(sue_key, key):
if sues[sue_key][key] == -1:
return False
else:
return True
for line in file:
splits = line.split(' ')
sues.setdefault(splits[1], { 'children:' : -1, 'cats:' : -1, 'samoyeds:' : -1, 'pomeranians:' : -1, 'akitas:' : -1, 'vizslas:' : -1, 'goldfish:' : -1, 'trees:' : -1 , 'cars:' : -1, 'perfumes:' : -1 })
for i in range(2, len(splits)-1, 2):
key = splits[i]
value = splits[i+1]
value = int(value.strip(','))
sues[splits[1]][key] = value
score = 0
for fact in knowable_facts:
if fact_remembered(splits[1], fact):
if fact == 'cats:' or fact == 'trees:':
if sues[splits[1]][fact] > known_facts[fact]:
score += 1
elif fact == 'pomeranians:' or fact == 'trees:':
if sues[splits[1]][fact] < known_facts[fact]:
score += 1
elif sues[splits[1]][fact] == known_facts[fact]:
score += 1
sue_score.append([score, splits[1]])
print( min(sue_score), max(sue_score) )