Beispiel #1
0
        }   // Hedef sayının kendisini bulma metodu

        bool FarkIslemListe(List <int> sayilar, int hedef)
        {
            /*Bu metod IslemLıste metodu ile aynı çalışır
             * fakat while döngüsüne her girildiğinde hem hedef sayının fark sayısı kadar fazalasına
             * hem de fark sayısı kadar ekiğine bakılır*/
            /*Döngü fark 10 dan küçük olana kadar fark her seferinde 1 artırılarak devam eder
             * ilk önce hangi DortIslem metodu true değerini verirse onun cevabı yazılır metoddan çıkılır*/
            int fark = 1;

            while (fark < 10)
            {
                foreach (int sayi in sayilar)
                {
                    List <int> islemliste = new List <int>(sayilar);
                    islemliste.Remove(sayi);
                    Sonuc fazlasonuc = DortIslem(islemliste, sayi, (hedef + fark));
                    Sonuc eksiksonuc = DortIslem(islemliste, sayi, (hedef - fark));
                    if (fazlasonuc.kontrol)
                    {
                        label8.Text     = ($"Hedef Sayinin {fark} fazlasi bulundu!");
                        Sonuclabel.Text = (sayi.ToString() + fazlasonuc.islem + " = " + hedef + " + " + fark);
                        return(true);
                    }
                    if (eksiksonuc.kontrol)
                    {
                        label8.Text     = ($"Hedef Sayinin {fark} eksigi bulundu!");
                        Sonuclabel.Text = (sayi.ToString() + eksiksonuc.islem + " = " + hedef + " - " + fark);
                        return(true);
                    }
                }
                fark++;
            }
            /*Eğer hedef sayının 9 fazlası veya 9 eksiği dahi bulunamamışsa false değer döndürülür*/
            return(false);
        }   // Hedef sayının fazla/eksik bulma metodu
Beispiel #2
0
        }   // Bruteforce dört islem metodu

        bool IslemListe(List <int> sayilar, int hedef)
        {
            /*Bu döngü hedef sayı bulununcaya kadar sayilar listesindeki
             * her sayı için DortIslem metodunu çağırır*/

            /*Eğer hedef sayı bulunduysa metod gerekli işlemi
             * Sonuclabel a yazar ve true değerini verir*/
            foreach (int sayi in sayilar)
            {
                List <int> islemliste = new List <int>(sayilar);
                islemliste.Remove(sayi);
                Sonuc sonuc = DortIslem(islemliste, sayi, hedef);
                if (sonuc.kontrol)
                {
                    label8.Text     = "Hedef Sayi Bulundu!";
                    Sonuclabel.Text = (sayi.ToString() + sonuc.islem + " = " + hedef);
                    return(true);
                }
            }
            /*Eğer hedef sayının kendisi bulunamadıysa FarkIslemListe metodu çağırılır*/
            return(FarkIslemListe(sayilar, hedef));
        }   // Hedef sayının kendisini bulma metodu
Beispiel #3
0
        // 1 ISLEM FONKSİYONLARINI GERÇEKLEŞTİREN METODLAR
        static Sonuc DortIslem(List <int> sayilar, int ortasayi, int hedef)
        {
            /*Bu algoritma Bruteforce dört işlem algoritmasıdır
             * listedeki sayılar biribirleri içinde 4 işlemden geçirilir
             * her işlemden sonraki sonuç ortasayi adlı int olarak 1 sayıymış gibi devam eder
             * hedef sayıya ulaşıncaya veya olabilecek bütün işlemler yapılıncaya kadar*/

            /*Yapılan işlemler 2.000.000 adetten fazladır
             * i7 8750h işlemci ve 16gb ram bulunan bir bilgisayarda
             * hedef sayıya ulaşılması yaklaşık 0,08 saniye sürmektedir*/

            Sonuc ortasonuc = new Sonuc();

            if (ortasayi == hedef)
            {
                ortasonuc.kontrol = true;
                ortasonuc.islem   = "";
                return(ortasonuc);
            }
            foreach (int sayi in sayilar)
            {
                List <int> TempList = new List <int>(sayilar);
                TempList.Remove(sayi);
                if (TempList.Count == 0)
                {
                    if (ortasayi - sayi == hedef)
                    {
                        ortasonuc.kontrol = true;
                        ortasonuc.islem   = "-" + sayi;
                        return(ortasonuc);
                    }
                    if (ortasayi + sayi == hedef)
                    {
                        ortasonuc.kontrol = true;
                        ortasonuc.islem   = "+" + sayi;
                        return(ortasonuc);
                    }
                    if (ortasayi * sayi == hedef)
                    {
                        ortasonuc.kontrol = true;
                        ortasonuc.islem   = "*" + sayi;
                        return(ortasonuc);
                    }
                    if (ortasayi / sayi == hedef)
                    {
                        ortasonuc.kontrol = true;
                        ortasonuc.islem   = "/" + sayi;
                        return(ortasonuc);
                    }
                    ortasonuc.kontrol = false;
                    ortasonuc.islem   = "f" + sayi;
                    return(ortasonuc);
                }
                else
                {
                    ortasonuc = DortIslem(TempList, ortasayi - sayi, hedef);
                    if (ortasonuc.kontrol)
                    {
                        ortasonuc.islem = "-" + sayi + ortasonuc.islem;
                        return(ortasonuc);
                    }
                    ortasonuc = DortIslem(TempList, ortasayi + sayi, hedef);
                    if (ortasonuc.kontrol)
                    {
                        ortasonuc.islem = "+" + sayi + ortasonuc.islem;
                        return(ortasonuc);
                    }
                    ortasonuc = DortIslem(TempList, ortasayi * sayi, hedef);
                    if (ortasonuc.kontrol)
                    {
                        ortasonuc.islem = "*" + sayi + ortasonuc.islem;
                        return(ortasonuc);
                    }
                    ortasonuc = DortIslem(TempList, ortasayi / sayi, hedef);
                    if (ortasonuc.kontrol)
                    {
                        ortasonuc.islem = "/" + sayi + ortasonuc.islem;
                        return(ortasonuc);
                    }
                }
            }
            return(ortasonuc);
        }   // Bruteforce dört islem metodu