4 puan yazan GN⁺ 2025-01-08 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2025-01-08
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ışı

    • Düzenli ifadeler kullanılarak birden fazla iş parçacığı aynı anda çalıştırılabiliyor
  • 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

    • Eğlenceli; bitiş süresi ya da başarılı olup olmayacağı konusunda baskı yaratmıyor ve bilgisayar biliminin çeşitli alanlarında çok şey öğrenmeyi sağlıyor
  • Satranç oyununda "geçersiz hamle, kayıp" şeklinde bir hata var

    • Örnek oyunda, geçersiz olmayan bir hamleye rağmen oyun sona eriyor
  • 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ı

    • Sed sürümü kontrol akışı komutlarını kullanıyordu ve sadece 1 ply derinliğinde arama yapıyordu
  • 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

    • Motor oyunun başında taş kaybediyor
    • Büyük harf girdiğinizde geçersiz hamle olarak işaretleniyor
  • Yenilikçi olmaya ve üretken kalmaya çalışıyor