with open('AdventOfCode2022/input.txt', 'r') as input:
commands = input.read().split('\n')
def new_dict(name, parent=None):
return {
'name': name,
'parent':parent,
'files': 0,
'dirs': {}
}
root_dict = new_dict(name='/', parent=None)
curr_dict = root_dict
#Build tree of dicts
for i in range(len(commands)):
command_parts = commands[i].split(' ')
if command_parts[0] == '$':
if command_parts[1] == 'cd':
if command_parts[2] == '..':
curr_dict = curr_dict['parent']
elif command_parts[2] == '/':
pass
else:
curr_dict = curr_dict['dirs'][command_parts[2]]
elif command_parts[0] == 'dir':
if command_parts[1] not in curr_dict:
curr_dict['dirs'][command_parts[1]] = new_dict(name=command_parts[1], parent=curr_dict)
elif command_parts[0] == '':
pass
else:
curr_dict['files'] += int(command_parts[0])
#PART ONE
MAX_THRESHOLD = 100000
FINAL_COUNTER = 0
dict_list = []
def parse_dict(t_dict):
folder_total = t_dict['files']
for c_dict in t_dict['dirs'].keys():
folder_total += parse_dict(t_dict['dirs'][c_dict])
global dict_list
dict_list.append(folder_total)
if folder_total < MAX_THRESHOLD:
global FINAL_COUNTER # this is the most embarrassing thing I've ever done
FINAL_COUNTER += folder_total
return folder_total
total_used = parse_dict(root_dict)
print(FINAL_COUNTER)
#PART TWO
TOTAL_SPACE = 70000000
WANTED_SPACE = 30000000
curr_wanted = WANTED_SPACE - (TOTAL_SPACE - total_used)
larger_than_wanted = []
for i in dict_list:
if i > curr_wanted:
larger_than_wanted.append(i)
print(min(larger_than_wanted))
Advent of Code 2022: Day 7
https://adventofcode.com
- 59
- 32
Jump in the discussion.
No email address required.
Jump in the discussion.
No email address required.
Is this (picrel) the same language? If yes that's quite the mogging
Jump in the discussion.
No email address required.
They're using dyalog APL (still being developed today), I'm stuck with GNU APL (was cutting edge in the 1980s). If you have a choice definitely go for dyalog.
Jump in the discussion.
No email address required.
do you own an apl keyboard?
also i checked out https://www.dyalog.com/uploads/documents/MasteringDyalogAPL.pdf and had a hearty chuckle at this considering what most apl looks like.
Jump in the discussion.
No email address required.
More options
Context
More options
Context
More options
Context
What language?
Ah, APL?
Jump in the discussion.
No email address required.
More options
Context
More options
Context