diff --git a/2018_08/Program.cs b/2018_08/Program.cs index 3cbc13d..6914e3b 100644 --- a/2018_08/Program.cs +++ b/2018_08/Program.cs @@ -12,8 +12,8 @@ namespace _2018_08 { static void Main(string[] args) { - //string[] resTab = File.ReadAllText(@"..\..\..\Data\Adventofcode_181208\2018_08_data.txt").Split(' '); - string[] resTab = @"2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2".Split(' '); + string[] resTab = File.ReadAllText(@"..\..\..\Data\Adventofcode_181208\2018_08_data.txt").Split(' '); + //string[] resTab = @"2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2".Split(' '); int[] numbers = new int[resTab.Length]; for (int i = 0; i < resTab.Length; i++) { @@ -25,8 +25,12 @@ namespace _2018_08 var pgm = new Program(); int x = pgm.CalculateMetaData(numbers); + WriteLine(); + WriteLine($"summa = {x}"); + ReadKey(); } + private int CalculateMetaData(int[] numbers) { int tempSum = 0; @@ -36,31 +40,43 @@ namespace _2018_08 int headEnd = 0; int firstAnt = strtNode.AntChilds; - TreeNode nxt = new TreeNode(strtNode.HeaderStart+2, numbers); + TreeNode nxt = new TreeNode(strtNode.HeaderStart + 2, numbers); for (int i = 0; i < firstAnt; i++) { headEnd = this.SubProc(nxt, numbers, llT); if (i < firstAnt - 1) { - nxt = new TreeNode(headEnd , numbers); - llT.AddLast(nxt); + nxt = new TreeNode(headEnd, numbers); + //llT.AddLast(nxt); } } + strtNode.PrepMetatab(headEnd - strtNode.NodeEnd + strtNode.AntMetaEntries); + WriteLine(); + foreach (var ll in llT) + { + Write($"Obj Nr: {ll.ObjNr} ({ll.HeaderStart},{ll.NodeEnd});"); + foreach (int x in ll.MetaTab) + { + Write($"{x}, "); + tempSum += x; + } + WriteLine(); + } + return tempSum; } private int SubProc(TreeNode tn, int[] numbers, LinkedList ll) { + ll.AddLast(tn); int nEnd = 0; if (tn.AntChilds > 0) { var tnx = new TreeNode(tn.HeaderStart + 2, numbers); - ll.AddLast(tnx); - nEnd = SubProc(tnx, numbers, ll); - + nEnd = SubProc(tnx, numbers, ll) - tnx.HeaderStart; } tn.PrepMetatab(nEnd); @@ -71,6 +87,7 @@ namespace _2018_08 public class TreeNode { + public int ObjNr { get; set; } public int HeaderStart { get; set; } public int AntChilds { get; set; } public int AntMetaEntries { get; set; } @@ -78,8 +95,11 @@ namespace _2018_08 public int NodeEnd { get; set; } public int[] NumberTab { get; set; } + static int nr; public TreeNode(int treeNodeStart, int[] NumTab) { + TreeNode.nr++; + ObjNr = TreeNode.nr; NumberTab = NumTab; HeaderStart = treeNodeStart; AntChilds = NumberTab[HeaderStart];