From 3d1bbf7d8f051a8b8c8473cac699a91f8e87dfda Mon Sep 17 00:00:00 2001 From: b-idea Date: Sat, 15 Jul 2023 22:40:33 +0200 Subject: code update again --- 2018/aoc2018-d08-2.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 2018/aoc2018-d08-2.py (limited to '2018/aoc2018-d08-2.py') diff --git a/2018/aoc2018-d08-2.py b/2018/aoc2018-d08-2.py new file mode 100755 index 0000000..17ce2cc --- /dev/null +++ b/2018/aoc2018-d08-2.py @@ -0,0 +1,51 @@ +currentfilename = "input.txt"; +#currentfilename = "testinput.txt"; #example only + +f = open(currentfilename, 'r'); +myinput = eval(f.read().replace(" ",",")); +f.close(); + +#for i in myinput: +# print(i); + +def NodeAnalysis(License, index): + NodeVal = 0; + NumberOfChilds = License[index[0]]; + index[0] += 1; + NumberofEntries = License[index[0]]; + index[0] += 1; + print(index, " - this node has ", NumberOfChilds, " and ", NumberofEntries); + ListOfEntries = []; + ListOfChilds = []; + for child in range(NumberOfChilds): + ListOfChilds.append(NodeAnalysis(License, index)); + + + for entry in range(NumberofEntries): + ListOfEntries.append(License[index[0]]); + #index[1] += License[index[0]]; + index[0] += 1; + #print("\tcurrent index ", index[0]); + if(NumberOfChilds == 0): + NodeVal = sum(ListOfEntries); + #for entry in range(NumberofEntries): + # NodeVal += License[index[0]]; + # index[0] += 1; + else: + for e in ListOfEntries: + if (e == 0 or e >NumberOfChilds): + continue; + NodeVal+= ListOfChilds[e-1]; + print("now ", NodeVal); + index.append(NodeVal); + return NodeVal; + + +i = [0,0]; + +part2 = NodeAnalysis(myinput, i); +print("input length\t", len(myinput)); +print("final index\t", i[0]); +print("part1 answer\t", i[1]); +print("part2 answer\t", i[1]); +print("part2 answer\t", i[-1]); -- cgit v1.2.3