From 55e4e202c856ebfe3db622f47843b5ecf8e7d9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sun, 23 Dec 2018 12:50:11 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Rullar=20igenom=20och=20kalkylerar,=20med?= =?UTF-8?q?=20f=C3=B6rmodligen=20kommer=20det=20flera=20omg=C3=A5ngar=20so?= =?UTF-8?q?m=20inte=20har=20f=C3=B6rv=C3=A4ntats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2018_08/Program.cs | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) 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]; From abaaf01763bb6612dd2a5d6711fd0c1a835be8db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sun, 23 Dec 2018 18:59:54 +0100 Subject: [PATCH 2/2] =?UTF-8?q?f=C3=A5nga=20alla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2018_08/Program.cs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/2018_08/Program.cs b/2018_08/Program.cs index 6914e3b..bd1a5a5 100644 --- a/2018_08/Program.cs +++ b/2018_08/Program.cs @@ -34,25 +34,30 @@ namespace _2018_08 private int CalculateMetaData(int[] numbers) { int tempSum = 0; + int omgStart = 0; LinkedList llT = new LinkedList(); - TreeNode strtNode = new TreeNode(0, numbers); - llT.AddLast(strtNode); - int headEnd = 0; - int firstAnt = strtNode.AntChilds; - - TreeNode nxt = new TreeNode(strtNode.HeaderStart + 2, numbers); - - for (int i = 0; i < firstAnt; i++) + while (omgStart < numbers.Length) { - headEnd = this.SubProc(nxt, numbers, llT); - if (i < firstAnt - 1) + TreeNode strtNode = new TreeNode(omgStart, numbers); + llT.AddLast(strtNode); + int headEnd = 0; + int firstAnt = strtNode.AntChilds; + + TreeNode nxt = new TreeNode(strtNode.HeaderStart + 2, numbers); + + for (int i = 0; i < firstAnt; i++) { - nxt = new TreeNode(headEnd, numbers); - //llT.AddLast(nxt); + headEnd = this.SubProc(nxt, numbers, llT); + if (i < firstAnt - 1) + { + nxt = new TreeNode(headEnd, numbers); + //llT.AddLast(nxt); + } } + strtNode.PrepMetatab(headEnd - strtNode.NodeEnd + strtNode.AntMetaEntries); + omgStart= strtNode.NodeEnd; } - strtNode.PrepMetatab(headEnd - strtNode.NodeEnd + strtNode.AntMetaEntries); WriteLine(); foreach (var ll in llT) {