Exemplo n.º 1
0
        public void FindSequence()
        {
            var numbers = new Queue<Node>();
            var firstNode = new Node(this.start, null);
            numbers.Enqueue(firstNode);

            while (numbers.Count > 0)
            {

                var currentNode = numbers.Dequeue();

                if (currentNode.Value < this.end)
                {
                    numbers.Enqueue(new Node(currentNode.Value + 1, currentNode));
                    numbers.Enqueue(new Node(currentNode.Value + 2, currentNode));
                    numbers.Enqueue(new Node(currentNode.Value *2, currentNode));
                }

                if (currentNode.Value == this.end)
                {
                    this.PrintSequence(currentNode);
                    return;
                }
            }

            Console.WriteLine("(no solution)");
        }
Exemplo n.º 2
0
        private void PrintSequence(Node currentNode)
        {
            var element = currentNode;
            var result = new Stack<int>();

            while (element != null)
            {
                result.Push(element.Value);
                element = element.PrevNode;
            }

            Console.WriteLine(string.Join(" -> ", result));
        }