2017.07.1
This commit is contained in:
parent
e2c797cf55
commit
de8fef25d9
60
2017/07/1recursive-circus.py
Executable file
60
2017/07/1recursive-circus.py
Executable 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
1418
2017/07/input
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user