Unable to load image

Advent of Code 2022: Day 7

https://adventofcode.com
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))
32
Jump in the discussion.

No email address required.

Start - 38345214

bsnqsfm - 179236

dtqvbspj - 494450

hhhtrws - 10632043

    gcbg - 3658797

        bgcwh - 211273

        bsnqsfm - 1069939

            bsnqsfm - 292856

            gpcpgfh - 177703

        jjgpvcqv - 2003950

            jjgpvcqv - 1421197

                bqnctqvn - 418596

                    nzrst - 12412

                        whtfvrl - 12412

                bsnqsfm - 293832

                gpcpgfh - 196159

        rqbnd - 154008

    jjgpvcqv - 6259122

        dvsst - 805852

        gpcpgfh - 2165662

            tbrbw - 1406757

                rmqlpvq - 629460

                    gjgfvt - 242867

                    wqfcnlzq - 62647

                        vhhscrvb - 62647

            vvm - 296046

            wplf - 292899

        jjgpvcqv - 2134045

            dhfcbc - 421258

            jjgpvcqv - 406609

            ltclg - 1066921

                fdfn - 32987

                mgvdbtl - 448220

            ptbsgmlr - 239257

        mhrzj - 493324

        tmh - 152958

        vmwz - 253867

    mgvdbtl - 24916

    qhv - 660064

        hncvrlbw - 506825

ldmsq - 8687846

    jngnzc - 1069913

        dzlcq - 70984

        gpcpgfh - 288159

        rlwwwngc - 641181

        swrlvd - 69589

    psgrjgr - 1142486

        fcvqsp - 209758

    rgwp - 11060

    rtsmnzm - 2842225

        rdv - 291554

        sdwmbsz - 2083367

            dfzw - 168631

            jbnsvcv - 659560

                bsnqsfm - 74345

                qfmj - 480838

                    bfvwng - 207083

                        qzdpp - 207083

                            jjgpvcqv - 207083

                    jjgpvcqv - 273755

            jjgpvcqv - 1114349

                vtbln - 395727

                wph - 174151

        tjwht - 467304

            mgvdbtl - 330718

                gtmbf - 330718

    wsd - 3622162

        gpcpgfh - 460025

            qtnqzql - 242800

        jdnfsqzd - 604210

        lspqh - 367991

            pspghgw - 367991

        pfcmb - 1412584

            dmlsqf - 553324

            dtqvbspj - 197079

                fpq - 98034

pqcndb - 17831881

    dtqvbspj - 134541

    fvrtmdg - 600719

        gpcpgfh - 64193

    gpcpgfh - 5416300

        cmg - 1331103

            vsjs - 779098

                dqpqvsfn - 91215

                ghw - 394357

                    bwhn - 61301

                        gpcpgfh - 61301

        jjgpvcqv - 281936

        lmb - 60362

            mmqr - 60362

        lzgc - 211543

        nqvzvfb - 513390

        rbh - 2481982

            cwgc - 254910

            gpcpgfh - 419940

            hdmmgms - 1266376

                dtqvbspj - 61268

                gpcpgfh - 306663

                tgqbtw - 460625

                    bsnqsfm - 279305

                    nnn - 181320

            jwqdv - 306471

            mzt - 159120

    jjgpvcqv - 4424554

        drmmqldt - 690999

            bsnqsfm - 200217

            gpcpgfh - 302915

            jjgpvcqv - 187867

                bzhsjfq - 37713

                lptnp - 150154

        jjgpvcqv - 149237

            csvpf - 149237

        mzj - 216100

        qcclcdd - 550287

            mgvdbtl - 142184

                dtqvbspj - 142184

        rtnnjct - 2247380

            bsnqsfm - 157447

                gbp - 157447

                    gpcpgfh - 157447

            dtqvbspj - 882344

                fbpz - 118001

                mgvdbtl - 764343

                    gtbpnhhm - 422909

                    rvjdhdvf - 341434

                        vnlq - 99356

                            zwtwvdb - 99356

            ftlr - 439951

                fdm - 439951

                    pdzbthz - 439951

                        gmpzrfv - 121073

            grpln - 351247

                thsbgczd - 231385

                vdmt - 119862

                    qzwzwlpr - 119862

            wtjfbzjq - 416391

        trgbfqb - 219127

            mhhbp - 159237

                bsnqsfm - 80555

                hvjtmr - 78682

    mgvdbtl - 1399019

        gpcpgfh - 695093

            bfjb - 9385

            dtqvbspj - 115949

                zrtpvzh - 115949

            lwtj - 396961

        tdnhp - 25816

    pftswtnl - 5349656

        cjzl - 51636

        mgvdbtl - 490254

            dtlr - 43065

        rdhdqvm - 108607

        swgdh - 2615714

            dwznjd - 379176

            mgvdbtl - 880115

                pbw - 242621

            nbpdfrv - 629718

        tgwws - 1617577

            bhr - 1310649

                wfjfvb - 1310649

                    jgfbpwjh - 1258789

                        vsmgcv - 197093

                            dpdmspz - 197093

                                bsnqsfm - 197093

            gpcpgfh - 306928

    zwph - 204738

        cmznd - 204738

            zhhm - 204738

pwtqzwv - 3913926

    hthq - 2002618

        dtqvbspj - 417341

            lrvftwzb - 125914

            nzvbpcwd - 251094

                tzvclhw - 251094

        mgvdbtl - 817653

        wgcss - 767624

            jjgpvcqv - 116833

    jcsmcf - 146144

    jjgpvcqv - 977695

        gdrqbn - 151579

        nwbqdd - 826116

            gpcpgfh - 275833

    twrjfd - 503531

        gqlqnpvm - 180568

    zzclqz - 217719

The file system for anyone interested.

Jump in the discussion.

No email address required.

K

Jump in the discussion.

No email address required.

Link copied to clipboard
Action successful!
Error, please refresh the page and try again.