Düzenli ifadelerle uygulanmış minimax satranç motoru
(nicholas.carlini.com)2-katmanlı minimax satranç motoru
-
Satranç ve düzenli ifadeler: Yazar, yalnızca düzenli ifadeler kullanarak satranç oynatan bir program geliştirdi. Bu program, satranç tahtasını girdi olarak alır ve geçerli hamleler üreten 84.688 düzenli ifadeden oluşur.
-
Düzenli ifade CPU tasarımı: Düzenli ifadeleri kullanarak koşulsuz yürütme ve tek komutlu çoklu veri (SIMD) komut seti tasarlandı. Bu sayede satranç oynatan bir program yazılabiliyor.
-
Veri yapısı: Bilgisayarın geçerli durumu, program "yığın"ını ve tüm değişkenleri içeren tek bir dizeden oluşur. Her komut ya yığındaki değişkenleri düzenler ya da belirli bir değişkende okuma/yazma işlemi yapar.
-
Temel yığın işlemleri:
- Push komutu: Yığının en üstüne bir değer ekler.
- Pop komutu: Yığının en üstündeki öğeyi çıkarır.
-
Değişken <-> yığın komutları:
- Değişken okuma: Değişken içeriğini yığının en üstüne yükler.
- Değişken atama: Değişkene bir değer atar; değişken varsa günceller, yoksa yenisini oluşturur.
-
Koşul ifadeleri: Koşul ifadeleriyle program akışı kontrol edilir. Koşullara göre programın belirli bölümleri etkinleştirilir veya devre dışı bırakılır.
-
Döngü eksikliği: Yalnızca düzenli ifadeler kullanılarak döngü uygulanamadığından, tüm tekrarlı hesaplamalar önceden açılmalıdır.
-
Çoklu iş parçacığı çalıştırma: Düzenli ifadelerin global değiştirme özelliği kullanılarak birden fazla iş parçacığı aynı anda çalıştırılabilir.
-
Satranç motorunun yazılması: Satranç motoru, diğer programlama dillerindeki gibi yazılır ve paralel işleme sayesinde hızlı çalışır.
-
Tur oynama:
- Oyuncu hamlesinin okunması: Girilen hamle okunur ve geçerliliği doğrulanır.
- Bilgisayarın yanıt üretmesi: Olası tüm yanıtlar üretilir ve en iyi hamle seçilir.
-
Minimax araması: Derinlik 2 minimax araması ile en iyi hamle seçilir. Bu süreç paralel işleme ile verimli biçimde gerçekleştirilir.
Bu proje, düzenli ifadelerin benzersiz kullanımını merkeze alarak bir satranç motorunun nasıl uygulanabileceğini gösteren ve düzenli ifadelerin gücü ile yaratıcı bilgisayar tasarımını ortaya koyan bir örnektir.
1 yorum
Hacker News Yorumu
Bu geliştirici, printf()'nun Turing tamlığını kanıtlayan ve 13kB JavaScript ile birinci şahıs nişancı oyunu yazan kişidir
Bu proje, birden fazla olası konumu eşzamanlı hesaplama açısından gerçekten sıra dışı
Blog yazısının sonucuna özel bir şey eklemiyorum, ama bu tür anlamsız görünen projelerin daha fazla kişi tarafından denenmesini isterdim
Satranç oyununda "geçersiz hamle, kayıp" şeklinde bir hata var
84.688 düzenli ifadeyle satranç oynamaktan, tek bir düzenli ifadeyle satranç oynamanın daha ürkütücü olduğunu düşünüyorum
Bu tür projelere saygı duymak isterim
a-dosya hamlesiyle ilgili hata düzeltildi
Bu proje yalnızca bir satranç motoru değil; sadece düzenli ifadelerle kurulu bir bilgisayar ve bir assembly dilidir
Daha önce sed ile yapılmış bir satranç projesi vardı
a2a4 ile başlangıçta bu kadar hızlı kaybetmiyor
Net bir "üretken" hedef olmadan bir şeyler denemenin yeni yöntemler keşfetmeye ve yeniliği tetiklemeye yardımcı olabileceğini gösteriyor
Yenilikçi olmaya ve üretken kalmaya çalışıyor