From ee95020aa202e24a0caf5936b18dd93cf2202bd3 Mon Sep 17 00:00:00 2001 From: s-prechtl Date: Fri, 9 Dec 2022 11:54:15 +0100 Subject: [PATCH] structured, added solutions 08,07-2022 --- 2022/Day4/Day4.py | 20 + 2022/Day4/Day4_temp.py | 20 - 2022/Day4/input-sprechtlPC2.txt | 0 2022/Day5/Day5.py | 79 +++ 2022/Day5/Day5_temp.py | 79 --- 2022/Day5/input-sprechtlPC2.txt | 0 2022/Day6/Day6.py | 12 + 2022/Day6/Day6_temp.py | 12 - 2022/Day6/input-sprechtlPC2.txt | 0 2022/Day7/Day7.py | 99 +++ 2022/Day7/input-sprechtlPC2.txt | 0 2022/Day7/input.txt | 1046 +++++++++++++++++++++++++++++++ 2022/Day8/Day8.py | 73 +++ 2022/Day8/input-sprechtlPC2.txt | 0 2022/Day8/input.txt | 99 +++ 15 files changed, 1428 insertions(+), 111 deletions(-) delete mode 100644 2022/Day4/Day4_temp.py delete mode 100644 2022/Day4/input-sprechtlPC2.txt delete mode 100644 2022/Day5/Day5_temp.py delete mode 100644 2022/Day5/input-sprechtlPC2.txt delete mode 100644 2022/Day6/Day6_temp.py delete mode 100644 2022/Day6/input-sprechtlPC2.txt delete mode 100644 2022/Day7/input-sprechtlPC2.txt create mode 100644 2022/Day7/input.txt delete mode 100644 2022/Day8/input-sprechtlPC2.txt create mode 100644 2022/Day8/input.txt diff --git a/2022/Day4/Day4.py b/2022/Day4/Day4.py index e69de29..3f3d982 100644 --- a/2022/Day4/Day4.py +++ b/2022/Day4/Day4.py @@ -0,0 +1,20 @@ +if __name__ == '__main__': + elvePairs = [] + notNeeded = 0 + intersections = 0 + + with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.replace("/n", "") + elveSections = [boundries.split("-") for boundries in line.split(",")] + elvePairs.append([[number for number in range(int(elveSections[0][0]), int(elveSections[0][1]) + 1)], + [number for number in range(int(elveSections[1][0]), int(elveSections[1][1]) + 1)]]) + + for elvePair in elvePairs: + if set(elvePair[0]).issubset(elvePair[1]) or set(elvePair[1]).issubset(elvePair[0]): + notNeeded += 1 + if len(set(elvePair[0]) & set(elvePair[1])) > 0: + intersections += 1 + + print(f"Solution 1: {notNeeded}") + print(f"Solution 2: {intersections}") diff --git a/2022/Day4/Day4_temp.py b/2022/Day4/Day4_temp.py deleted file mode 100644 index 3f3d982..0000000 --- a/2022/Day4/Day4_temp.py +++ /dev/null @@ -1,20 +0,0 @@ -if __name__ == '__main__': - elvePairs = [] - notNeeded = 0 - intersections = 0 - - with open("input.txt", "r") as f: - for line in f.readlines(): - line = line.replace("/n", "") - elveSections = [boundries.split("-") for boundries in line.split(",")] - elvePairs.append([[number for number in range(int(elveSections[0][0]), int(elveSections[0][1]) + 1)], - [number for number in range(int(elveSections[1][0]), int(elveSections[1][1]) + 1)]]) - - for elvePair in elvePairs: - if set(elvePair[0]).issubset(elvePair[1]) or set(elvePair[1]).issubset(elvePair[0]): - notNeeded += 1 - if len(set(elvePair[0]) & set(elvePair[1])) > 0: - intersections += 1 - - print(f"Solution 1: {notNeeded}") - print(f"Solution 2: {intersections}") diff --git a/2022/Day4/input-sprechtlPC2.txt b/2022/Day4/input-sprechtlPC2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/2022/Day5/Day5.py b/2022/Day5/Day5.py index e69de29..95178ca 100644 --- a/2022/Day5/Day5.py +++ b/2022/Day5/Day5.py @@ -0,0 +1,79 @@ +import re + + +class Operation: + amount: int + src: int + dest: int + + def __init__(self, amount: int, src: int, dest: int): + self.amount = amount + self.src = src - 1 + self.dest = dest - 1 + + +def buildStacks(raw: [str]) -> [[str]]: + builder = [[] for i in range(9)] + for lineNumber in range(len(raw)): + line = raw[lineNumber] + for position in [x.start() for x in re.finditer('\[', line)]: + sign = line[position + 1] + builder[position // 4].append(sign) + + return builder + + +def buildOperations(raw: [str]) -> [Operation]: + builder = [] + + for currentOperation in raw: + currentOperation = currentOperation.replace("move ", "").replace("from ", "").replace("to ", "") + amount, src, dest = map(int, currentOperation.split(" ")) + builder.append(Operation(amount, src, dest)) + + return builder + + +def performOperation(stacks: [[str]], op: Operation) -> [[str]]: + for i in range(op.amount): + stacks[op.dest].insert(0, stacks[op.src][0]) + stacks[op.src] = stacks[op.src][1:] + + return stacks + + +def buildSolutionString(stacks: [[str]]) -> str: + sol = "" + + for stack in stacks: + sol += stack[0] + + return sol + + +def performOperationVariant2(stacks: [[str]], op: Operation) -> [[str]]: + for i in range(op.amount): + stacks[op.dest].insert(i, stacks[op.src][0]) + stacks[op.src] = stacks[op.src][1:] + + return stacks + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + rawstacks, rawoperations = f.read().split("\n\n") + + stacks = buildStacks(rawstacks.split("\n")) + operations = buildOperations(rawoperations.split("\n")) + + for operation in operations: + stacks = performOperation(stacks, operation) + + print(f"Solution 1: {buildSolutionString(stacks)}") + + stacks = buildStacks(rawstacks.split("\n")) + + for operation in operations: + stacks = performOperationVariant2(stacks, operation) + + print(f"Solution 2: {buildSolutionString(stacks)}") diff --git a/2022/Day5/Day5_temp.py b/2022/Day5/Day5_temp.py deleted file mode 100644 index 95178ca..0000000 --- a/2022/Day5/Day5_temp.py +++ /dev/null @@ -1,79 +0,0 @@ -import re - - -class Operation: - amount: int - src: int - dest: int - - def __init__(self, amount: int, src: int, dest: int): - self.amount = amount - self.src = src - 1 - self.dest = dest - 1 - - -def buildStacks(raw: [str]) -> [[str]]: - builder = [[] for i in range(9)] - for lineNumber in range(len(raw)): - line = raw[lineNumber] - for position in [x.start() for x in re.finditer('\[', line)]: - sign = line[position + 1] - builder[position // 4].append(sign) - - return builder - - -def buildOperations(raw: [str]) -> [Operation]: - builder = [] - - for currentOperation in raw: - currentOperation = currentOperation.replace("move ", "").replace("from ", "").replace("to ", "") - amount, src, dest = map(int, currentOperation.split(" ")) - builder.append(Operation(amount, src, dest)) - - return builder - - -def performOperation(stacks: [[str]], op: Operation) -> [[str]]: - for i in range(op.amount): - stacks[op.dest].insert(0, stacks[op.src][0]) - stacks[op.src] = stacks[op.src][1:] - - return stacks - - -def buildSolutionString(stacks: [[str]]) -> str: - sol = "" - - for stack in stacks: - sol += stack[0] - - return sol - - -def performOperationVariant2(stacks: [[str]], op: Operation) -> [[str]]: - for i in range(op.amount): - stacks[op.dest].insert(i, stacks[op.src][0]) - stacks[op.src] = stacks[op.src][1:] - - return stacks - - -if __name__ == '__main__': - with open("input.txt", "r") as f: - rawstacks, rawoperations = f.read().split("\n\n") - - stacks = buildStacks(rawstacks.split("\n")) - operations = buildOperations(rawoperations.split("\n")) - - for operation in operations: - stacks = performOperation(stacks, operation) - - print(f"Solution 1: {buildSolutionString(stacks)}") - - stacks = buildStacks(rawstacks.split("\n")) - - for operation in operations: - stacks = performOperationVariant2(stacks, operation) - - print(f"Solution 2: {buildSolutionString(stacks)}") diff --git a/2022/Day5/input-sprechtlPC2.txt b/2022/Day5/input-sprechtlPC2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/2022/Day6/Day6.py b/2022/Day6/Day6.py index e69de29..1f96cbc 100644 --- a/2022/Day6/Day6.py +++ b/2022/Day6/Day6.py @@ -0,0 +1,12 @@ +def findFirstUniquePackage(signal: str, numberOfUniques: int) -> int: + for offset in range(len(signal) - numberOfUniques): + if len(set(signal[offset:offset + numberOfUniques])) == numberOfUniques: + return offset + numberOfUniques + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + signal = f.read() + + print(f"Solution 1: {findFirstUniquePackage(signal, 4)}") + print(f"Solution 2: {findFirstUniquePackage(signal, 14)}") diff --git a/2022/Day6/Day6_temp.py b/2022/Day6/Day6_temp.py deleted file mode 100644 index 1f96cbc..0000000 --- a/2022/Day6/Day6_temp.py +++ /dev/null @@ -1,12 +0,0 @@ -def findFirstUniquePackage(signal: str, numberOfUniques: int) -> int: - for offset in range(len(signal) - numberOfUniques): - if len(set(signal[offset:offset + numberOfUniques])) == numberOfUniques: - return offset + numberOfUniques - - -if __name__ == '__main__': - with open("input.txt", "r") as f: - signal = f.read() - - print(f"Solution 1: {findFirstUniquePackage(signal, 4)}") - print(f"Solution 2: {findFirstUniquePackage(signal, 14)}") diff --git a/2022/Day6/input-sprechtlPC2.txt b/2022/Day6/input-sprechtlPC2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/2022/Day7/Day7.py b/2022/Day7/Day7.py index e69de29..e55233c 100644 --- a/2022/Day7/Day7.py +++ b/2022/Day7/Day7.py @@ -0,0 +1,99 @@ +class File: + def __init__(self, name: str, fileSize: int): + self.name = name + self.size = fileSize + + def __str__(self) -> str: + return f"{self.name} - {self.size}" + + +class Directory: + subdiretories: [] + files: [File] + + def __init__(self, name: str, parent): + self.name = name + self.parent = parent + self.subdiretories = [] + self.files = [] + + def size(self) -> int: + total = 0 + for sub in self.subdiretories: + total += sub.size() + + for file in self.files: + total += file.size + + return total + + def addSub(self, other): + self.subdiretories.append(other) + + def addFile(self, file: File): + self.files.append(file) + + def __str__(self) -> str: + rv = f"Dir: {self.name} - {self.size()}\n" + for file in self.files: + rv += f"\t File: {file}\n" + + for sub in self.subdiretories: + rv += f"\t {sub}\n" + + return rv + + +def checkAllowedDirs(currDir: Directory): + for sub in currDir.subdiretories: + if sub.size() < 100000: + allowedDirs.append(sub) + + checkAllowedDirs(sub) + + +def checkDeletable(currDir: Directory): + for sub in currDir.subdiretories: + if sub.size() >= SPACENEEDEDTOBECLREAED: + possibleDeletes.append(sub) + checkDeletable(sub) + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + raw = [line.replace("\n", "") for line in f.readlines()] + + currentlyLS = False + + fileSystem = Directory("ROOT", "") + currentDir: Directory = fileSystem + + for line in raw: + if line.startswith("$"): + if "cd" in line: + where = line.split(" ")[2] + if where == "..": + currentDir = currentDir.parent + else: + createdDir = Directory(where, currentDir) + currentDir.addSub(createdDir) + currentDir = createdDir + else: + size, currentName = line.split(" ") + if size.isnumeric(): + currentDir.addFile(File(currentName, int(size))) + + allowedDirs = [] + checkAllowedDirs(fileSystem) + print(f"Solution 1: {sum([allowedDir.size() for allowedDir in allowedDirs])}") + + possibleDeletes = [] + + TOTALSPACE = 70000000 + SPACEREQUIRED = 30000000 + USEDSPACE = fileSystem.size() + SPACENEEDEDTOBECLREAED = SPACEREQUIRED - (TOTALSPACE - USEDSPACE) + + checkDeletable(fileSystem) + + print(f"Solution 2: {min([possibleDelete.size() for possibleDelete in possibleDeletes])}") diff --git a/2022/Day7/input-sprechtlPC2.txt b/2022/Day7/input-sprechtlPC2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/2022/Day7/input.txt b/2022/Day7/input.txt new file mode 100644 index 0000000..f37c67b --- /dev/null +++ b/2022/Day7/input.txt @@ -0,0 +1,1046 @@ +$ cd / +$ ls +149291 cgc.vzv +dir cmcrzdt +dir hwdvrrp +26925 hwqvsl +dir lsmv +dir ngfllcq +dir ngnzzmpc +dir pwhjps +dir rgwnzttf +260556 tcglclw.hsn +dir trvznjhb +dir wgcqrc +68873 whpnhm +$ cd cmcrzdt +$ ls +dir chqllfw +95243 hjpf +108868 hwqvsl +115004 jpppczvz.mtp +dir lnsgfnbr +dir pdtjlb +dir rqfzvwts +dir trvznjhb +$ cd chqllfw +$ ls +56623 cgs.hbt +134804 zqb.grc +$ cd .. +$ cd lnsgfnbr +$ ls +dir jtzw +dir ngfllcq +dir sdm +dir wlsg +$ cd jtzw +$ ls +dir nfz +$ cd nfz +$ ls +255427 hwqvsl +94147 tmnjbqq.fzh +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +110661 cdgqtwcv.lzn +208050 dpf +$ cd .. +$ cd sdm +$ ls +dir dhwm +dir ngfllcq +125983 rfdz.vqm +24227 tzn +41909 tzn.vnr +dir zdzq +$ cd dhwm +$ ls +dir clr +dir lhv +dir ncvmgn +212499 ngfllcq.dcr +191108 nggnj +dir pdtjlb +dir pwhjps +dir sqqbthdp +dir trvznjhb +$ cd clr +$ ls +dir lnbc +87079 npwhncc +109530 pfqhpr.tzl +249566 tmnjbqq.fzh +dir zgmgztcd +$ cd lnbc +$ ls +62635 ftshngp.vbj +$ cd .. +$ cd zgmgztcd +$ ls +149111 pwhjps.fjm +$ cd .. +$ cd .. +$ cd lhv +$ ls +dir phzfwl +$ cd phzfwl +$ ls +dir gmzcjzm +$ cd gmzcjzm +$ ls +263161 vsptqdv +$ cd .. +$ cd .. +$ cd .. +$ cd ncvmgn +$ ls +245840 hjpf +21272 pbcjtbg +dir stm +$ cd stm +$ ls +dir hnbrd +$ cd hnbrd +$ ls +102906 lftjtq.gdt +45082 vsptqdv +$ cd .. +$ cd .. +$ cd .. +$ cd pdtjlb +$ ls +171382 hwqvsl +$ cd .. +$ cd pwhjps +$ ls +75342 cgc.vzv +185458 hwqvsl +254359 ngfllcq.jzd +dir pdtjlb +200999 slnlws.sgh +91174 vqqbcb +dir zmc +$ cd pdtjlb +$ ls +39001 ngfllcq +$ cd .. +$ cd zmc +$ ls +dir cjqmc +$ cd cjqmc +$ ls +257668 ctsfdprp +889 mzr.hnp +$ cd .. +$ cd .. +$ cd .. +$ cd sqqbthdp +$ ls +154217 pwhjps.jtn +$ cd .. +$ cd trvznjhb +$ ls +105431 hwqvsl +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +183850 dcppzj.lmm +131039 hbpn.zlp +110398 hjpf +dir pwhjps +251784 rqgslj.sqg +dir szqf +150728 vsptqdv +$ cd pwhjps +$ ls +dir pzrtwv +156616 rpbh.ftj +dir tzn +$ cd pzrtwv +$ ls +197890 tzn +$ cd .. +$ cd tzn +$ ls +121296 pdtjlb.nmg +$ cd .. +$ cd .. +$ cd szqf +$ ls +dir ngfllcq +dir qtrhn +$ cd ngfllcq +$ ls +dir vnfcczg +$ cd vnfcczg +$ ls +86691 cgc.vzv +189290 hjds.lwf +230265 hwqvsl +dir jbmvmzn +223129 ngfllcq.mdw +dir rpcbpjvm +215119 tmnjbqq.fzh +$ cd jbmvmzn +$ ls +dir flrszsrr +175047 hjpf +dir jrzf +dir ngfllcq +$ cd flrszsrr +$ ls +163007 zdvfmqr.pfq +$ cd .. +$ cd jrzf +$ ls +32641 qbnz +$ cd .. +$ cd ngfllcq +$ ls +dir dlcvcd +dir gcpftfm +183962 tzn.mjh +$ cd dlcvcd +$ ls +260612 mhf +$ cd .. +$ cd gcpftfm +$ ls +227489 hwqvsl +$ cd .. +$ cd .. +$ cd .. +$ cd rpcbpjvm +$ ls +dir tnwzgrvw +$ cd tnwzgrvw +$ ls +dir trvznjhb +$ cd trvznjhb +$ ls +127767 pdtjlb.qjw +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qtrhn +$ ls +81716 dngdll +76367 tdj +180116 tmnjbqq.fzh +$ cd .. +$ cd .. +$ cd .. +$ cd zdzq +$ ls +192339 bqcmzm.vzw +dir cplvj +dir drpmlmf +92165 mcthl.dzw +dir qccnln +$ cd cplvj +$ ls +dir gmqddf +71720 hjpf +220700 hwqvsl +260353 lgw.msr +$ cd gmqddf +$ ls +36587 dmdgjrs +$ cd .. +$ cd .. +$ cd drpmlmf +$ ls +4896 hjpf +dir ngfllcq +65712 pwhjps.mng +67097 tmnjbqq.fzh +$ cd ngfllcq +$ ls +248967 swvf.prt +$ cd .. +$ cd .. +$ cd qccnln +$ ls +dir tzn +$ cd tzn +$ ls +81833 vsptqdv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wlsg +$ ls +181214 nmglzcds.hcg +195698 pdtjlb.vbr +dir trvznjhb +77162 vsptqdv +$ cd trvznjhb +$ ls +237856 trvznjhb +$ cd .. +$ cd .. +$ cd .. +$ cd pdtjlb +$ ls +101237 hwqvsl +dir jssl +dir ngfllcq +dir pvlqvdrw +dir pwhjps +dir tzn +115255 vsptqdv +$ cd jssl +$ ls +76335 smmjjrp +$ cd .. +$ cd ngfllcq +$ ls +102639 cgc.vzv +55243 fjfhdtr.ltc +$ cd .. +$ cd pvlqvdrw +$ ls +38570 pwhjps.qgq +191322 scnbjgg.gww +$ cd .. +$ cd pwhjps +$ ls +dir ghfwwj +dir vtr +$ cd ghfwwj +$ ls +109461 mdtp.ztw +$ cd .. +$ cd vtr +$ ls +dir fmtpdc +$ cd fmtpdc +$ ls +42101 bcdbqcs.lhp +$ cd .. +$ cd .. +$ cd .. +$ cd tzn +$ ls +dir pdtjlb +$ cd pdtjlb +$ ls +154813 vsptqdv +$ cd .. +$ cd .. +$ cd .. +$ cd rqfzvwts +$ ls +250112 hwqvsl +63241 tzn +149460 tzn.pph +$ cd .. +$ cd trvznjhb +$ ls +784 bdptcbl.ntt +108339 cgc.vzv +dir hnpdrdsm +dir mnnwcmd +dir ngfllcq +dir pbsnd +dir pdtjlb +261083 rhl.cjh +dir trvznjhb +103421 wjftfs +$ cd hnpdrdsm +$ ls +253895 pwhjps.nps +36928 ssjhl +235679 tmnjbqq.fzh +38049 trvznjhb.dzs +$ cd .. +$ cd mnnwcmd +$ ls +218411 fvzhntq.rwm +78694 gwlcbbtm +243270 hjpf +15610 trvznjhb.wdj +$ cd .. +$ cd ngfllcq +$ ls +dir fmhlq +dir fwbdttbj +dir hccstwh +$ cd fmhlq +$ ls +142240 rbrwv.hjl +dir tjpwvb +256604 tmnjbqq.fzh +dir trvznjhb +$ cd tjpwvb +$ ls +83436 sfrpt +$ cd .. +$ cd trvznjhb +$ ls +44433 trvznjhb +$ cd .. +$ cd .. +$ cd fwbdttbj +$ ls +4127 hwqvsl +$ cd .. +$ cd hccstwh +$ ls +dir cbd +243765 lvzsrqlw.llc +$ cd cbd +$ ls +158372 vzgtjqbd.tmd +$ cd .. +$ cd .. +$ cd .. +$ cd pbsnd +$ ls +172548 cgc.vzv +261836 pwhjps +$ cd .. +$ cd pdtjlb +$ ls +73184 cgc.vzv +dir mdbjwvh +dir mgt +dir nbrvvghc +98702 ngf.gtb +dir ngfllcq +224788 pdtjlb +191754 tmnjbqq.fzh +189444 tnqwbmzm.vlq +dir tzn +dir ztzsg +$ cd mdbjwvh +$ ls +135602 nvt.rjh +$ cd .. +$ cd mgt +$ ls +dir pbrtf +dir whflvwv +$ cd pbrtf +$ ls +dir tnnnllg +$ cd tnnnllg +$ ls +269436 hjpf +$ cd .. +$ cd .. +$ cd whflvwv +$ ls +185562 ngfllcq +dir rdl +150984 trvznjhb +$ cd rdl +$ ls +231952 mqjcttf +$ cd .. +$ cd .. +$ cd .. +$ cd nbrvvghc +$ ls +dir pdtjlb +$ cd pdtjlb +$ ls +40347 hjpf +dir vwl +$ cd vwl +$ ls +124408 tzn.hjw +$ cd .. +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +54894 bvgf +$ cd .. +$ cd tzn +$ ls +41506 vnhlvqqw.cvd +$ cd .. +$ cd ztzsg +$ ls +216433 fzsnpr.vrd +dir grrngq +dir hcmvbhp +dir lbmnq +19985 ngfllcq +dir pqqjgbvj +dir zsnggz +$ cd grrngq +$ ls +dir cqcvb +dir ngfllcq +dir shrhb +$ cd cqcvb +$ ls +125712 cgc.vzv +69800 fpszwd +160009 rbbwsszz +dir trvznjhb +33640 tzghd.fjp +$ cd trvznjhb +$ ls +dir gtjfll +dir mrncfvnp +dir pwt +dir trvznjhb +173974 tzn +$ cd gtjfll +$ ls +126840 cgc.vzv +180163 fswwvhwn +dir gnpcbvmt +122192 ngfllcq.snb +$ cd gnpcbvmt +$ ls +127188 crhvwb.pct +218972 mwg +$ cd .. +$ cd .. +$ cd mrncfvnp +$ ls +216569 phlbdl +$ cd .. +$ cd pwt +$ ls +119692 tmnjbqq.fzh +$ cd .. +$ cd trvznjhb +$ ls +203464 nltqsvd.fhc +$ cd .. +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +31226 rdwczp.hfq +$ cd .. +$ cd shrhb +$ ls +246035 bnbg +98513 hjpf +$ cd .. +$ cd .. +$ cd hcmvbhp +$ ls +dir cbb +201230 cgc.vzv +dir grmmpz +220707 hjpf +dir jnr +dir psv +dir trvznjhb +134184 trvznjhb.ghp +228507 vsptqdv +$ cd cbb +$ ls +17897 hwqvsl +$ cd .. +$ cd grmmpz +$ ls +214171 spsnch.drs +$ cd .. +$ cd jnr +$ ls +82130 bhjqplbc.rth +$ cd .. +$ cd psv +$ ls +215898 pwhjps +$ cd .. +$ cd trvznjhb +$ ls +dir dfcn +98111 gwt.fmw +20948 hjpf +dir pwhjps +dir rnlrgd +$ cd dfcn +$ ls +dir fqm +179114 mbcrjb +dir trvznjhb +dir vfrrzdb +$ cd fqm +$ ls +dir frgwsrdh +$ cd frgwsrdh +$ ls +142027 hhpwsl +$ cd .. +$ cd .. +$ cd trvznjhb +$ ls +dir nbbb +34253 ngfllcq.src +dir qgqmmvg +dir tfgwmlc +11919 trvznjhb.qgz +dir tzn +24383 zvfzhb.dcw +$ cd nbbb +$ ls +260947 pwhjps.bdq +$ cd .. +$ cd qgqmmvg +$ ls +67028 wjvhq.tdz +$ cd .. +$ cd tfgwmlc +$ ls +dir rmcgqpb +dir wdtmdtz +$ cd rmcgqpb +$ ls +263786 nsmcndc.bjs +$ cd .. +$ cd wdtmdtz +$ ls +37751 lnspfqv.tpp +$ cd .. +$ cd .. +$ cd tzn +$ ls +265035 nqsgm.dhm +$ cd .. +$ cd .. +$ cd vfrrzdb +$ ls +dir pzbtsnd +dir srpdb +$ cd pzbtsnd +$ ls +72770 pdtjlb +$ cd .. +$ cd srpdb +$ ls +231540 dzgsf +dir ngfllcq +dir sjv +$ cd ngfllcq +$ ls +26488 cgc.vzv +195815 dfjss +119177 lbjtjqr +$ cd .. +$ cd sjv +$ ls +225677 msgjj +228113 ngfllcq +92448 tzn.rbp +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd pwhjps +$ ls +171613 nzqd.rzh +$ cd .. +$ cd rnlrgd +$ ls +132964 hjpf +146636 hwqvsl +187596 mlrllbbb.wmh +92535 trvznjhb +$ cd .. +$ cd .. +$ cd .. +$ cd lbmnq +$ ls +142963 qfpjgvll.ncb +$ cd .. +$ cd pqqjgbvj +$ ls +dir dfhhzwp +253570 jjbr.cgf +dir lchljrwb +dir pdtjlb +$ cd dfhhzwp +$ ls +dir bqp +$ cd bqp +$ ls +122939 hjpf +$ cd .. +$ cd .. +$ cd lchljrwb +$ ls +259475 fqmppdtd.tjm +$ cd .. +$ cd pdtjlb +$ ls +199658 vsptqdv +$ cd .. +$ cd .. +$ cd zsnggz +$ ls +117242 hjpf +$ cd .. +$ cd .. +$ cd .. +$ cd trvznjhb +$ ls +dir bgvqct +160709 dtq +dir fldlwj +dir ndq +221408 tmnjbqq.fzh +69148 zvfzt.rjm +$ cd bgvqct +$ ls +66024 cmjrmfn.lpt +40153 fdlvqgn.dbt +135848 tmnjbqq.fzh +$ cd .. +$ cd fldlwj +$ ls +172275 ngfllcq.gbb +$ cd .. +$ cd ndq +$ ls +117311 bbhlcn.qll +dir dtzmzgw +123263 hsb +dir jnthg +111208 pdtjlb +200860 pjq +$ cd dtzmzgw +$ ls +dir tzn +$ cd tzn +$ ls +249561 pszf.zcn +$ cd .. +$ cd .. +$ cd jnthg +$ ls +17013 pwhjps.gpp +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd hwdvrrp +$ ls +dir fgvqft +dir fwc +dir sfhsb +dir tzn +dir wbtf +$ cd fgvqft +$ ls +215710 wzh +$ cd .. +$ cd fwc +$ ls +184576 dmvqc.tsr +dir hgznwf +dir lfjtqz +dir ngfllcq +53748 ngfllcq.vgl +dir pgpvcp +$ cd hgznwf +$ ls +51012 tmnjbqq.fzh +$ cd .. +$ cd lfjtqz +$ ls +96666 fwttv.qrp +203264 nhc.lgd +dir pwhjps +213570 tzn +$ cd pwhjps +$ ls +69941 frqq.jnv +136814 pqmsc.dgz +185821 rww.trv +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +97361 zcw.zrq +$ cd .. +$ cd pgpvcp +$ ls +834 nwv.mtw +$ cd .. +$ cd .. +$ cd sfhsb +$ ls +78513 pdtjlb +$ cd .. +$ cd tzn +$ ls +dir lpf +$ cd lpf +$ ls +242317 bngfvvgq.ptp +82304 ngfllcq.qdz +dir wsvqtcb +$ cd wsvqtcb +$ ls +32176 vrwlnphn.nnv +$ cd .. +$ cd .. +$ cd .. +$ cd wbtf +$ ls +53446 jvvdpn +41661 ngfllcq.vhl +dir pwhjps +231151 tzn +241080 vdzdhdtb.dgj +dir vlqmz +$ cd pwhjps +$ ls +200296 hdds.lsw +$ cd .. +$ cd vlqmz +$ ls +166538 pwhjps.mnq +$ cd .. +$ cd .. +$ cd .. +$ cd lsmv +$ ls +dir dtjjv +87897 hjpf +216417 hwqvsl +dir ngfllcq +dir pdtjlb +dir qlnlbcdv +230724 vsptqdv +177119 vvzvnn +$ cd dtjjv +$ ls +218742 hjpf +$ cd .. +$ cd ngfllcq +$ ls +38560 cgc.vzv +257037 fbttg.jlc +29948 pwhjps.bvj +1253 trvznjhb.nzl +241388 tzn.vdb +dir wlmtj +$ cd wlmtj +$ ls +51957 hjpf +27480 pwhjps.hgj +dir qdjfgz +dir shb +182077 tclmtwh.wzr +dir trvznjhb +103119 twlf.rnl +31950 tzn.zfm +$ cd qdjfgz +$ ls +238882 hpms.gll +dir qpbsmmp +184633 trvznjhb.nsb +130374 vsptqdv +$ cd qpbsmmp +$ ls +60269 spsbz +$ cd .. +$ cd .. +$ cd shb +$ ls +140111 vsptqdv +$ cd .. +$ cd trvznjhb +$ ls +dir qjqzppj +$ cd qjqzppj +$ ls +203246 hjpf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd pdtjlb +$ ls +41982 hjpf +245930 hwqvsl +dir mmnhtmr +42314 ngfllcq.tcn +68269 pdtjlb +103066 vhtjp.grt +$ cd mmnhtmr +$ ls +dir zqjjgvj +$ cd zqjjgvj +$ ls +263209 nvhflpng.ngd +$ cd .. +$ cd .. +$ cd .. +$ cd qlnlbcdv +$ ls +dir jmd +58921 pdtjlb.mwb +dir pzjgmm +dir qqvrvcw +79958 rrqmn.zwv +18158 swjpt.trv +dir trvznjhb +dir tzn +92135 zjb.nns +268795 zspzsb.szp +$ cd jmd +$ ls +137766 pwhjps +$ cd .. +$ cd pzjgmm +$ ls +1704 tzn.rhf +66307 tzn.zll +116623 vrfvctv.clb +$ cd .. +$ cd qqvrvcw +$ ls +179302 zrqf.fcn +$ cd .. +$ cd trvznjhb +$ ls +265026 qfzlgccf.hvz +dir rbbmmcc +$ cd rbbmmcc +$ ls +dir rtr +$ cd rtr +$ ls +dir dtw +$ cd dtw +$ ls +249472 svs.tgj +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tzn +$ ls +80112 pdtjlb.thm +$ cd .. +$ cd .. +$ cd .. +$ cd ngfllcq +$ ls +228868 ggcfwgr.mwh +10205 gztwg.pwz +136188 hjpf +141381 hwqvsl +250522 pdtjlb.dwg +dir pwhjps +dir qcwvfl +dir tzn +dir zgwcwqr +$ cd pwhjps +$ ls +19881 tmrljtw +$ cd .. +$ cd qcwvfl +$ ls +63317 fcjsw.jcj +dir gvvfsq +272464 lvqc +148216 nwppjnwc.sdg +121107 tzn.ppw +dir vwfb +$ cd gvvfsq +$ ls +80607 jplds.mjz +$ cd .. +$ cd vwfb +$ ls +dir gtlfdvjz +$ cd gtlfdvjz +$ ls +228623 jbbplpz +dir shf +$ cd shf +$ ls +120966 cgc.vzv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tzn +$ ls +215528 cgc.vzv +112331 gtzcl.rzp +128653 mqd.dcz +dir ngfllcq +dir vmfgbzmw +$ cd ngfllcq +$ ls +207193 qchb.hmv +$ cd .. +$ cd vmfgbzmw +$ ls +16152 vtlgffn +$ cd .. +$ cd .. +$ cd zgwcwqr +$ ls +dir pdtjlb +110033 vsptqdv +$ cd pdtjlb +$ ls +9746 cgc.vzv +8010 jdvjpps +$ cd .. +$ cd .. +$ cd .. +$ cd ngnzzmpc +$ ls +116647 gmsnm +157873 hwqvsl +$ cd .. +$ cd pwhjps +$ ls +96321 cgc.vzv +dir lcds +dir tzn +$ cd lcds +$ ls +134975 wcfv.gpd +$ cd .. +$ cd tzn +$ ls +95149 hjpf +55950 pwhjps.rpq +166540 tdt.pgw +236704 trvznjhb.ccn +$ cd .. +$ cd .. +$ cd rgwnzttf +$ ls +122721 hjpf +$ cd .. +$ cd trvznjhb +$ ls +106424 zvqz +$ cd .. +$ cd wgcqrc +$ ls +87367 hjpf +63133 lld +234148 pwhjps.lcr +dir rjnnz +19538 tzn +233765 zlvznnwj +$ cd rjnnz +$ ls +258856 gpgdm \ No newline at end of file diff --git a/2022/Day8/Day8.py b/2022/Day8/Day8.py index e69de29..ae7ca2c 100644 --- a/2022/Day8/Day8.py +++ b/2022/Day8/Day8.py @@ -0,0 +1,73 @@ +from numpy import transpose + + +class Tree: + def __init__(self, height: int): + self.height = height + self.seen = False + + +def heightCheck(currentRow: [Tree]) -> int: + visible = 0 + currentmax = -1 + for currentTree in currentRow: + if currentTree.height > currentmax: + if not currentTree.seen: + visible += 1 + currentTree.seen = True + currentmax = currentTree.height + + return visible + + +def checkSmaller(pos: Tree, direction: [Tree]) -> int: + distance = 0 + for currTree in direction: + if currTree.height < pos.height: + distance += 1 + if currTree.height >= pos.height: + distance += 1 + break + + return distance + + +if __name__ == '__main__': + with open("input.txt", "r") as f: + raw = f.readlines() + + area = [] + for i, row in enumerate(raw): + row = row.replace("\n", "") + area.append([]) + for tree in row: + area[i].append(Tree(int(tree))) + + verticalArea = transpose(area) + visibleTrees = 0 + for row in area: + visibleTrees += heightCheck(row) + visibleTrees += heightCheck(row[::-1]) + + for column in verticalArea: + visibleTrees += heightCheck(column) + visibleTrees += heightCheck(column[::-1]) + + print(f"Solution 1: {visibleTrees}") + + bestScenic = 0 + for y, row in enumerate(area): + for x, tree in enumerate(row): + left = row[:x][::-1] + right = row[x + 1:] + up = verticalArea[x][:y][::-1] + down = verticalArea[x][y + 1:] + + scenicCore = checkSmaller(tree, left) + scenicCore *= checkSmaller(tree, right) + scenicCore *= checkSmaller(tree, up) + scenicCore *= checkSmaller(tree, down) + if scenicCore > bestScenic: + bestScenic = scenicCore + + print(f"Solution 2: {bestScenic}") diff --git a/2022/Day8/input-sprechtlPC2.txt b/2022/Day8/input-sprechtlPC2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/2022/Day8/input.txt b/2022/Day8/input.txt new file mode 100644 index 0000000..d478f8b --- /dev/null +++ b/2022/Day8/input.txt @@ -0,0 +1,99 @@ +313213123212200312011243203120214010202554420335045116203101005212525131015305511140012431022113113 +222021333112322244231542054023354511304431216312534453560105660253445311020244233130144313440030322 +200012220300132310233100025524032003355144536126232161330106115213441450552235514000243120210031130 +102111124044033113241415155401056014506203413216651520206613342353052505445000321043121021430440021 +221134021010031320101542213340113552161113350123516154134654046250223033000413443321231233142213010 +112241233114245202523201433013460320664034202602144006022621253536213222400131120345151014014131133 +132211130114141401325141212460540656525106651152012063404633651340223361443201520054113541144043031 +323140320024314005210155316202152552621415660063112177564603241212312025036551350313225504314404112 +014013242041230510442265205625331115540222744516266167254216354043533020346502032534231121044441220 +233414030101315255335126055263144512111777464611565216157441673706100506241423030403420343112342030 +133144314412553330012446404244433465434666762135116677765213463444460612511131340332552424201204120 +010320402332512110363213044530335655613562223756572424746437567672262256431540210005310544243444101 +324403411232230200215144254550257275144535323452276762234354361552536153612012260502425410505314212 +044143021304533036524115200363122146144443357746134567133417572143572217253466665420004544002052304 +031301205442313664253200353721523337451137554555385833341715227554331566151244334446363035232422032 +412021132254126340642250212415471513377143653545744364662761514364426436251422450305502445230351142 +423013525424334650512351242132544127615655738268233852527877887577454317715373566210510633013145020 +314013042244622602006117664713652263528475833433263846468763678447134716635345050225504112315124312 +210530032555051320514661111414734263472852682724485772623266565822423365264512541061226540103142223 +202523210140346233027372362557125436368725536228624865344774378537888747171665564143331101501212340 +312102150200503360534132445517484678583587678756766763747725475724228724317675166660536246102044404 +014501150514404506226424155762432386227846258625478334768375862827476433553651311460116133631440213 +145345025402132601222234271268834838244287765994936689397836424284644676342577451356463132062234232 +030520533600060465674743543832435622275594666933473957864637427284284528866426734257033413611153542 +111125222126126664625217555874224623337857863456948836785373353757744683247375632677514312554402024 +454344234313551645731724622525365832657894545768964536939387863978465673442253722125752553236132004 +141351656653224237252122854224855258938593946648537669944575478986734723225856761571634036114323202 +301354130411223555466416844555847677853855433636774857897563386873392265447728545634555234214003555 +324351500351156142554654722557458488698547355994463766454687489898485753473777574124613414652504004 +000202526603566624271288867428799685358698759656849978553895836996388433252545546266753551322305123 +142140450656776227714466585833798874975635767795445874946645465477849772464684527525213236023524220 +324262353505673315724236445748536388973668654588599896854469535494838643744387872721615221063235321 +552206463167666154577658258569744567339446596474586868848866645743399869362886626547344767533546153 +352323434663437355725427826449799477395999565764668865854945787936654594832633678767541225131001503 +440166362233562667478335763956389857755767497475848959778498799895595785387844464757513162265652640 +104122124642766642664452283555537376598457767558647554969995685645795999475473687336165523560052001 +255352243015641217534667849769975859955778464876555786747474774794864778373768452562637255330444232 +456220432747476336866782246873698697677699688678997975678548856759743777979632262638565415133210633 +354641641663166247236463863687744889449497969668886767686756898498698544578857834482516366746042103 +125201564115437683566423743488648645944969969766988857659599646944656843556585768447477145122536100 +565166453317161563746425435958546648857589858689866779576599554476785965354884443284615264253254316 +121246126671552573824643637663796768749697876859599686798755755668478994537789677336675255111501306 +360355134677155672632437676667797548778989878956585555755888869798448799556895227877387243567410342 +201045427623176635776469999883749944896899977995889968875595559556975886998744463243563112165201326 +352250115546124536536769454447786744475757988989886986985776968688899563536676844455461472345336201 +444012305276547277522595375654994558855859877987996678887769879954854599865599846623773465534004160 +003621673437674224248486547979885878957565757686996887766986595599447858644667462254244517674205046 +045265132276456334554365893935749649965989576778789869677576755756899986563778785582684657425224532 +256151375615717542563666894835779554876779596976976699887778577957456866545674477228666746346403631 +161152464371764263643334333389748956969597666797767878866755966565484647664843525828682412373755454 +502011544714165463843278447485479797867666888668797796768977767569575788836334565474627531473704246 +151460364232447443233565968759985868786557997798976867676959589967898874545836432537554441566122314 +325354014323767722264889584534897666569996596668678778968696799996649764974489874252576563221244356 +300165663442414468382638967476995984959988868887699967676597986577798947648889527728225341345144126 +523044146537227284236854867884546566896896589678689877799567996884747789569869374746443236356121631 +623520016256236672238393557665746588457977578897867867689877778857948885353767526367472655634211324 +513112323743777428355697564974758755988785986568979868979685685997847967586943842248473255451053311 +450020506764535784366644976997588757498856779786876686775868855996746554394579645638756632417635430 +333302106653766675873339799535474646879996789788987875587977755587884588498366525263657241244563411 +021603345313213632267754575346995947848565695878969885767869775868759846376874235783854235221066060 +451051105676415353834239879477689664878678578559658579558858859685656646333643282578751361221450043 +323133151167312457234657559765757999468467698869969666865897797857485499569838464565771443341433624 +351226435216677645378442636393858569688464696659679658777559879978765539986842833528347477142364355 +312522015134552576843564246393479975856585945659576986575979678487794748787843877358147735663364153 +436221405132742616333723774335457748498747869445768557777496645469557694497322763335217424704452516 +531453464276746646458848784658447874499485559877948986585644748765566863496685884585514544145343261 +124004035175455643547236885494794479865464946999998568586788689967343377758845738571672264321061003 +200155306351543777457257657968974568856495865454798449784799858884637386375422526864243565062364102 +445601414321444235648773664866559437996644487476459565964785659539635568456223755627145663416360463 +450034302502443262354377457789598776596746648495968457946465588399656898646426472411777146341644150 +023146264504256441756645634487555664987468946766784647877558359936934483654774826324735714633603030 +333342045300642417421427522458538378785933374679488696549488964673985948667688553344343522163201010 +455545402043235615564685485576228935958544883643955984493945756635487843653852747147246556553523510 +521503005555124536565566284723484688885348465998948435535997783785742684873228712152117622054235215 +312504066020457274731625463858577544637764966338466339435677364997568623562286441516367015430243140 +205031053461063473777474186844553532897797357638539497889554739476455778658267742121765420506102155 +234254241452503617412556672484735427269749864873783849964559983463526474536714377341620430652445005 +005122256601541121767617243673775345873688335643477574686454362545566824655271216641353663405312143 +433412443503526366274346321587248483458325774873734889987843368227357425636513234740304061623033442 +150425005143315445343366357776572258884478742563678357783845862235758564513525337622046146253440425 +225155323264631456635462325511885764326675428846268646575225734474437376612544667111053406332354205 +035014011000365630427277363261244836668367562448734772533252234588746775752633154601553624254020455 +012332415442566650666617225747354638747746384682743326746678826728355131225614470132623462424342514 +013524113311511615516563562155256314453777643324383464236254565752742637247411046651633511302344051 +212122212430404140032134131564756752725322885466434352224875446515552517267614410524244004301240143 +311400235445132520254065617566464245641623888587556667385287735312776421161334445544251524420400232 +440215452341344043062300567544524332733611636552822742567416277354477557756312354353622415135520342 +212430430313114143406656305336551452762327233736172563224242725162751616161102623013055041203553040 +321010353433305435042151016603142762425754273737777221111751751754217734105034366116400050235001301 +141012030043441152515110066520525231112547624256173331346341451761472053411546323404310404443302411 +133133034522454043232213312145664546126452755453724144154261454733124054403605004150535010413000334 +331412441152240551104612131344064131112564126362561532523311462604061151623121543003234021543312303 +010301442302500534021525552205536466144454523741535255444641345430402356234514221410435324321440211 +222301014410242404221240250563134040056104626021173454550103400400616550340400310015454450242211021 +233412422204111420244300456264320032401430366334634641441411125102262216452333414201235210001133200 +132244430320123233143125240232350142156620032556633233042303530460352401020133104323414224314240333 +003213243020203044035550441012322051645661162162123160565554312321050133555533333123214002014231123 +000032030402033315113220225514041611664662663525144303562161423513133325130431534323303033322212313 +101211324120322333355055001035515221630532526633042003421442155144120444232152535003241233413001002 \ No newline at end of file