2017.07.1

This commit is contained in:
dusk 2025-07-26 19:32:51 +00:00
parent e2c797cf55
commit de8fef25d9
2 changed files with 1478 additions and 0 deletions

60
2017/07/1recursive-circus.py Executable file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env python3
if __name__ == '__main__':
with open('input','r',encoding='utf-8') as file:
all_programs = file.readlines()
i = 0
for program in all_programs:
program = program.split()
program[1] = int(program[1].strip('()'))
if len(program) > 2:
program[2] = []
for j in range(3, len(program)):
program[2].append(program[j].strip(','))
program = [program[0], program[1], program[2]]
else:
program.append([])
all_programs[i] = program
i += 1
# at this point, each line is one program in the stack,
# and each line is a list of info.
# list[0] is the program name.
# list[1] is the program weight.
# list[2] is a list of other programs which sit directly on top.
# for part 1, we simply need to find the program name
# which exists in no other list of children!
# the datatype of all_programs is
# [[string,int,[string, string,...]],[string,int,[string,string,...],...]
def find_position(programs_list):
all_children = ['']
for program in programs_list:
if len(program) == 2:
program = program.append("top")
else:
children = program[2]
if all_children == ['']:
all_children = children
else:
all_children = all_children + children
# note: all_children will not have duplicates!
# why? can't stand on two programs' heads at once....
for program in programs_list:
try:
all_children.index(program[0])
except ValueError:
program = program.append("bot")
for program in programs_list:
if len(program) == 3:
program = program.append("mid")
find_position(all_programs)
i = 0
for program in all_programs:
if program[3] == "bot":
bot_index = i
i += 1
bot_name = all_programs[bot_index][0]
print(bot_name)

1418
2017/07/input Normal file

File diff suppressed because it is too large Load Diff