示例#1
0
        public SolverProcess solveSkrzyzowanie(Skrzyzowanie skrzyzowanie)
        {
            int lightChanges           = 0;
            SwiatlaGenerator sw        = new SwiatlaGenerator();
            Walidator        walidator = new Walidator();
            SolverProcess    process   = new SolverProcess(skrzyzowanie);

            for (int i = 0; i < wektor.Length; i++)
            {
                wektor[i] = true;
            }
            while (!skrzyzowanie.isEmpty())
            {
                bool[] nextSwiatlaState = sw.generateNextVec(12);

//              nextSwiatlaState = wywalNiepotrzebneOtware(nextSwiatlaState);

                while (!walidator.walidacja(nextSwiatlaState))
                {
                    nextSwiatlaState = sw.generateBasingOnPrevious(wektor);
//                    nextSwiatlaState = wywalNiepotrzebneOtware(nextSwiatlaState);
                }

                Tuple <int, int, int> modificationValues = skrzyzowanie.modifyState(nextSwiatlaState);
                process.addStep(new SolverStep(nextSwiatlaState, modificationValues));

                lightChanges++;
                zmienWektor(nextSwiatlaState);
            }
            return(process);
        }