Example #1
0
        public static object[] Unflatten(int[] flatArray)
        {
            var list  = new List <object>();
            var stack = new Stack <int>(flatArray.Reverse());

            while (stack.Count > 0)
            {
                var number = stack.First();
                if (number < 3)
                {
                    list.Add(number);
                    stack.Pop();
                }
                else
                {
                    if (number > stack.Count)
                    {
                        number = stack.Count;
                    }
                    list.Add(stack.Take(number).ToArray());
                    for (int i = 0; i < number; i++)
                    {
                        stack.Pop();
                    }
                }
            }

            return(list.ToArray());
        }