using BibliotekaTuringa;

namespace MaszynaTuringa
{
    internal class Program
    {        
        static void Main(string[] args)
        {
            foreach (string arg in args)
            {
                Console.WriteLine(arg);
            }
            
            Turing t = Turing.Load("taśma.txt", "program.txt");
            t.PolecenieWykonane += polecenieWykonane;
            t.WykonajProgram();
            t.ZapiszStanMaszyny("wynik.txt");

            Console.WriteLine("Historia stanów:");
            foreach(string s in t.HistoriaStanów)
                Console.WriteLine(s);
        }

        private static void polecenieWykonane(object? sender, Turing.PolecenieWykonaneEventArgs e)
        {
            //Console.WriteLine($"stan głowicy: {e.StanGłowicy}, pozycja głowicy: {e.PołożenieGłowicy}, taśma: {e.TaśmaAsString}");            
            Console.WriteLine(e);
        }
    }
}
