summaryrefslogtreecommitdiff
path: root/2018/aoc2018-d08.py
diff options
context:
space:
mode:
Diffstat (limited to '2018/aoc2018-d08.py')
-rw-r--r--2018/aoc2018-d08.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/2018/aoc2018-d08.py b/2018/aoc2018-d08.py
new file mode 100644
index 0000000..0dc174a
--- /dev/null
+++ b/2018/aoc2018-d08.py
@@ -0,0 +1,52 @@
+#advent of code 2018
+#day 08
+#part 1 and 2
+
+
+f = open("08.in", 'r');
+myinput = eval(f.read().replace(" ",","));
+f.close();
+
+#part 1
+def NodeAnalysis_1(License, index):
+ NumberOfChilds = License[index[0]];
+ index[0] += 1;
+ NumberofEntries = License[index[0]];
+ index[0] += 1;
+ for child in range(NumberOfChilds):
+ NodeAnalysis_1(License, index);
+ for entry in range(NumberofEntries):
+ index[1] += License[index[0]];
+ index[0] += 1;
+
+#part 2
+def NodeAnalysis_2(License, index):
+ NodeVal = 0;
+ NumberOfChilds = License[index[0]];
+ index[0] += 1;
+ NumberofEntries = License[index[0]];
+ index[0] += 1;
+ ListOfEntries = [];
+ ListOfChilds = [];
+ for child in range(NumberOfChilds):
+ ListOfChilds.append(NodeAnalysis_2(License, index));
+
+ for entry in range(NumberofEntries):
+ ListOfEntries.append(License[index[0]]);
+ index[0] += 1;
+ if(NumberOfChilds == 0):
+ NodeVal = sum(ListOfEntries);
+ else:
+ for e in ListOfEntries:
+ if (e == 0 or e >NumberOfChilds):
+ continue;
+ NodeVal+= ListOfChilds[e-1];
+ index.append(NodeVal);
+ return NodeVal;
+
+i = [0,0];
+
+NodeAnalysis_1(myinput, i);
+print("part 1 =", i[-1]);
+part2 = NodeAnalysis_2(myinput, [0,0]);
+print("part 2 =", part2);