Algoritmanın matematiği

Bilgisayar sayını nasıl buluyor?

Bilgisayar, mümkün olan her sayıyı bir hipotez olarak ele alır. Her cevap, aynı puanı veremeyen hipotezleri eler.

1. İlk aday kümesini oluştur

Gizli sayı, 1000 ile 9999 arasında dört basamaklı bir sayıdır. Bu nedenle ilk aday kümesinde 9.000 sayı bulunur.

S0 = {1000, 1001, ..., 9999}

Aynı rakam birden fazla kez kullanılabilir. Örneğin 1171 ve 9009 geçerli adaylardır.

2. Bir tahmin seç

Bilgisayar, daha çok farklı rakam içeren adayları tercih eder. Dört farklı rakamlı bir tahmin, dört rakam değerini aynı anda sınar.

Birden fazla adayın farklı rakam sayısı eşitse bilgisayar en büyük sayıyı seçer. Bu kural, seçimin her zaman aynı olmasını sağlar.

Bu seçim kuralı bir kestirim yöntemidir. Puan hesabı, tekrarlanan rakamlar için yine kesin sonuç verir.

3. Yeşil rakamları say

Tahmin ile bir adayı konum konum karşılaştır. İki rakam eşitse o konum yeşildir.

Tahmin1 2 3 4
Aday7 2 8 1
Sonuç1 yeşil

İkinci konum yeşildir çünkü iki sayıda da bu konumda 2 vardır. Algoritma, sarı rakamları saymadan önce tüm yeşil konumları çıkarır.

4. Kalan rakamların sıklığını hesapla

Tekrarlanan rakamlar için sıklık hesabı gerekir. Farklı rakamlardan oluşan bir küme, tekrarları sildiği için yeterli değildir.

Yeşil konumlar çıkarıldıktan sonra tahminde kalan her rakamı say. Ardından adayda kalan her rakamı say.

gd, tahminde kalan d rakamının sayısı olsun. cd ise bu rakamın adayda kalan sayısı olsun.

5. Sarı rakamları say

Bir rakam, iki tarafta bulunduğu sayı kadar eşleşebilir. Bu nedenle d rakamının katkısı iki sıklıktan küçük olanıdır.

sarı = Σd=09 min(gd, cd)

Kalan tahminde 1 rakamından üç tane olduğunu düşün. Adayda bir tane 1 varsa bu rakam bir sarı puan verir.

Minimum kuralı, adaydaki tek rakamın tahmindeki birçok rakamla eşleşmesini önler. Tekrarlanan rakamları doğru işleyen adım budur.

6. Yalnızca tam puanla eşleşen adayları tut

Cevabın, yeşil ve sarı değerlerinden oluşan bir hedef çift verir. Bilgisayar her adayı kendi tahminine göre puanlar.

Bir aday, yalnızca iki puanı da cevabına eşitse kümede kalır. Fazladan bir yeşil veya sarı eşleşme adayı eler.

Sr+1 = {x ∈ Sr : puan(tahminr, x) = (yeşil, sarı)}

Bu denklem, sonraki tur için daha küçük bir aday kümesi oluşturur. Gerçek sayı kümede kalır çünkü girdiğin puanı üretmiştir.

7. İşlemi tekrarla

  1. Mevcut aday kümesinden bir tahmin seç.
  2. Oyuncudan yeşil ve sarı değerlerini al.
  3. Her adayın kesin puanını hesapla.
  4. Farklı puan veren her adayı ele.
  5. Daha küçük aday kümesiyle devam et.

Kazandırmayan her geçerli cevap, mevcut tahmini eler. Bu nedenle aday kümesi her geçerli turda küçülür.

8. Oyunu bitir veya çelişkiyi bul

Dört yeşil, tahminin gizli sayıya eşit olduğu anlamına gelir. Oyun bu noktada biter.

Boş aday kümesi, cevapların birbiriyle çeliştiğini gösterir. Sayfa bu cevabı reddeder ve önceki durumu korur.

Örneğin üç yeşil ve bir sarı mümkün değildir. Yalnızca bir konum kaldığı için bu rakam başka bir boş konuma geçemez.

Eski yöntem neden daha yavaştı?

Eski yöntem, rakam gruplarını kümelere dönüştürüyordu. Bu dönüşüm, rakamların kaç kez bulunduğu bilgisini siliyordu.

Yöntem, adayda yeterli sayıda eşleşen rakam değeri bulunup bulunmadığını da sınardı. Her zaman tam sarı sayısını istemezdi.

Bu nedenle bazı geçersiz adaylar kümede kalırdı. Yeni yöntem, kesin puan denklemiyle bu adayları eler.

Oyunu oyna