Example #1
0
        static void Main(string[] args)
        {
            HanoiTower hanoi = new HanoiTower();

            Console.WriteLine("Enter number of discs: ");
            int n = Convert.ToInt32(Console.ReadLine());

            hanoi.moveDiscs(n, "Peg A", "Peg C", "Peg B");  // had to swap Peg B and C...
        }
Example #2
0
        static void Main(string[] args)
        {
            _columnSize = Math.Max(6, GetDiscWidth(DISCS_COUNT) + 2);
            HanoiTower algorithm = new HanoiTower(DISCS_COUNT);

            algorithm.MoveCompleted += Algorithm_Visualize;
            Algorithm_Visualize(algorithm, EventArgs.Empty);
            algorithm.Start();
            Console.Read();
        }
Example #3
0
        private static char[][] InitializeVisualization(HanoiTower algorithm)
        {
            char[][] visualization = new char[algorithm.DiscsCount][];

            for (int i = 0; i < visualization.Length; i++)
            {
                visualization[i] = new char[_columnSize * 3];
                for (int j = 0; j < _columnSize * 3; j++)
                {
                    visualization[i][j] = ' ';
                }
            }
            return(visualization);
        }
Example #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Problem hanojskih stolpov - Jernej Žagar");


            Console.WriteLine();
            byte i = 1;

            foreach (string stolp in Enum.GetNames(typeof(Tower)))
            {
                Console.WriteLine("     " + i + "   " + stolp);
                i++;
            }

            Console.WriteLine();
            Console.WriteLine("Izberi številko problema in pritisni Enter.");
            string izbira = Console.ReadLine();

            Console.WriteLine("Izberi število diskov in pritisni Enter.");
            string stDiskov = Console.ReadLine();
            int    discs    = Convert.ToInt32(stDiskov);

            Console.WriteLine("Izberi začetni stolp in pritisni Enter.");
            string startPeg = Console.ReadLine();
            byte   start    = Convert.ToByte(startPeg);

            Console.WriteLine("Izberi končni stolp in pritisni Enter.");
            string endPeg = Console.ReadLine();
            byte   final  = Convert.ToByte(endPeg);

            HanoiTower vrstaStolpa = HanoiTowerFactory.GetHanoiTower(izbira, discs, start, final);

            byte[] zacetnoStanje = ConvertNumbers.SetPosition(vrstaStolpa.Start, vrstaStolpa.Discs);


            Console.WriteLine("Začetek");
            DateTime dtStart = DateTime.Now;

            vrstaStolpa.DolzinaNajkrajsePoti(zacetnoStanje);

            DateTime dtEnd = DateTime.Now;

            Console.WriteLine("Konec");
            Console.WriteLine($"Čas izvajanja= {(dtEnd - dtStart).TotalSeconds}");
        }
Example #5
0
        private static void Algorithm_Visualize(object sender, EventArgs e)
        {
            Console.Clear();
            HanoiTower algorithm = (HanoiTower)sender;

            if (algorithm.DiscsCount <= 0)
            {
                return;
            }

            char[][] visualization = InitializeVisualization(algorithm);
            PrepareColumn(visualization, 1, algorithm.DiscsCount, algorithm.From);
            PrepareColumn(visualization, 2, algorithm.DiscsCount, algorithm.To);
            PrepareColumn(visualization, 3, algorithm.DiscsCount, algorithm.Auxiliary);

            Console.WriteLine(Center("FROM") + Center("TO") + Center("Auxiliary"));
            DrawVisualization(visualization);
            Console.WriteLine();
            Console.WriteLine($"Number of moves: {algorithm.MovesCount}");
            Console.WriteLine($"Number of dics: {algorithm.DiscsCount}");

            Thread.Sleep(DELAY_MS);
        }