From 23ba664e9d4ed546f1e7a70e5ec4cb0f101593a9 Mon Sep 17 00:00:00 2001 From: neogeek23 Date: Sun, 8 Oct 2017 20:00:22 -0500 Subject: [PATCH] Update Dimension.cs --- N Space/Dimension.cs | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/N Space/Dimension.cs b/N Space/Dimension.cs index ef6db5e..97ac47c 100644 --- a/N Space/Dimension.cs +++ b/N Space/Dimension.cs @@ -1,7 +1,8 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace N_Space { - class Dimension { + public class Dimension { private readonly int _index; private Dimension _parent; //These are the dimensional parents so in (1,2) the dimension that has the index=1 would be the parent of the dimention that has the index=2 private List _child; @@ -39,8 +40,43 @@ namespace N_Space { return _child; } + public Dimension GetChild(int? n) { + if (n == null) { + return null; + } + return _child[System.Convert.ToInt32(n)]; + } + public Location GetLocation() { return _location; } + + public int? GetChildIndexOf(int n) { + if (_child.Count > 0) { + return FindChildIndexOf(n, _child, 0); + } + return null; + } + + private int? FindChildIndexOf(int n, List list, int indexHoldOver) { + int breakpoint = list.Count / 2; + List part = new List(); + if (n > list[breakpoint].GetIndex() && list.Count > 1) { + for (int i = breakpoint; i < list.Count; i++) { + part.Add(list[i]); + } + return FindChildIndexOf(n, part, breakpoint + indexHoldOver); + } else if (n < list[breakpoint].GetIndex() && list.Count > 1) { + for (int i = 0; i < breakpoint; i++) { + part.Add(list[i]); + } + return FindChildIndexOf(n, part, indexHoldOver); + } else if (n == list[breakpoint].GetIndex()) { + return breakpoint + indexHoldOver; + } + else { + return null; + } + } } }