Exemple #1
0
 public Neuron(Pole n1, Pole n2, int s, int i)
 {
     wierzch1 = n1;
     wierzch2 = n2;
     stan = s;
     impuls = i;
 }
Exemple #2
0
        // oblicza sumę impulsów pochodzących od neuronów stykających się w danym polu
        private static int ImpulsySasiadow(Pole w, ref Neuron[] Siec)
        {
            int suma = 0;
            for (int j = 0; j < IloscNeuronow; j++)
            {
                if (((Siec[j].wierzch1.x) == w.x) && ((Siec[j].wierzch1.y) == w.y)) suma = suma + Siec[j].impuls;
                if (((Siec[j].wierzch2.x) == w.x) && ((Siec[j].wierzch2.y) == w.y)) suma = suma + Siec[j].impuls;
            }

            return suma;
        }
Exemple #3
0
        // sprawdza, czy udało się zamknąć sieć ruchów
        public int SprawdzSciezkeH(Neuron[] Siec)
        {
            bool jest;
            int start = 0;
            Pole p = new Pole();
            Pole ps = new Pole();
            Pole pb = new Pole();
            int n = 0;
            int liczba = 1;

            // szukamy pustej końcówki
            for (int i = 0; i < IloscNeuronow; i++)
            {
                if (Siec[i].impuls == 1) // znajdujemy pierwszy neuron z jednej strony nie podłączony
                    if ((ImpulsySasiadow(Siec[i].wierzch1, ref Siec) == 1)||(ImpulsySasiadow(Siec[i].wierzch2, ref Siec) == 1))
                    {
                        start = i;
                        if (ImpulsySasiadow(Siec[i].wierzch1, ref Siec) == 1) p = Siec[i].wierzch2;
                        else p = Siec[i].wierzch1;
                        break;
                    }
            }
            if (start == -1) { n = 0; p.x = 0; p.y = 0; }
            n = start;
            ps = p;
            // this.textBox1.AppendText("Pierwszy neuron: " + p.x + "," + p.y + "\n");

            do
            {
                jest = false;
                for (int i = 0; i < IloscNeuronow; i++)
                {
                if ((Siec[i].impuls == 1)&& (i != start) && (i != n) &&(((Siec[i].wierzch1.x==p.x)&&(Siec[i].wierzch1.y==p.y))||((Siec[i].wierzch2.x==p.x)&&(Siec[i].wierzch2.y==p.y))))
                {
                    if ((Siec[i].wierzch1.x==p.x)&&(Siec[i].wierzch1.x==p.x))
                    {
                        pb.x=Siec[i].wierzch2.x;
                        pb.y=Siec[i].wierzch2.y;
                    }
                    else
                    {
                        pb.x=Siec[i].wierzch1.x;
                        pb.y=Siec[i].wierzch1.y;
                    }
                    jest = true;
                    p.x = pb.x;
                    p.y = pb.y;
                    n = i;
                    liczba++;
                    break;
                }
            }

            // do  // pauza po każdym kroku
            // {
            //    Thread.Sleep(Convert.ToInt16(kontrPauza.Value));
            //    Application.DoEvents();
            //}
            // while (!pauza);
            // pauza = true;
            // if (jest) this.textBox1.AppendText("Kolejny neuron: " + p.x + "," + p.y + "\n");
            }
            while (jest == true);

            return liczba;
        }