UmmLang ile bir Tic-Tac-Toe yapay zekası geliştirdim.
UmmLang; yalnızca değişkenler, girdi/çıktı, koşul ifadeleri ve satır atlama gibi şeyler sunan, ezoterik bir programlama dilidir.
[ Eoeoeomeoeoeo,,,,,,,, sigeoeoeok Dongtan-eo? Jun. ] şöyle bir görünüme sahiptir.
Döngü veya fonksiyon gibi yaygın kontrol yapıları neredeyse hiç yoktur. Tamsayılar bile yalnızca nokta (.), virgül (,), ve boşluklarla ifade edilmek zorunda olduğu için, genel algoritmaları gerçekleştirmek için oldukça elverişsiz bir ortamdır.
Önce 2×1 Tic-Tac-Toe'yu gerçekleştirerek oyun tahtasının temsili ile yapay zeka uygulama yöntemini doğruladım.
Her hücreyi bir değişkene karşılık gelecek şekilde eşleyip boş hücre, X ve O'yu sırasıyla 0, 1, 2 ile ifade ettikten sonra, mümkün olan tüm durumları Dongtan (IF) ifadeleriyle listeleyerek yapay zekanın nereye koyacağına karar vermesini sağladım.
Bu süreçte oyun tahtası çıktı arayüzünü ve kullanıcı girdisi işleme yapısını da birlikte oluşturdum.
Ardından bunu 3×3 Tic-Tac-Toe'ya genişlettim.
Sorun, yasal oyun durumlarının yaklaşık 4.520 tane olması ve tüm durumları tek tek yazmanın pratikte imkansız olmasıydı.
Bu yüzden Python ile ayrı bir kod üreticisi yazdım.
Üretici, tüm oyun durumları arasından O sayısının X'ten fazla olduğu veya oyunun zaten bitmiş olduğu durumları çıkardıktan sonra, her durum için Tic-Tac-Toe yapay zekasının (minimax tabanlı) en iyi hamlesini hesaplıyor.
Hesaplanan sonuçları UmmLang'in Dongtan koşul ifadesi biçimine otomatik olarak dönüştürüp case.umm dosyasını üretecek şekilde ayarladım.
Son olarak, üretilen binlerce Dongtan dalını ana kaynağa ekleyerek yapay zeka mantığını tamamladım.
Oyuncunun girdiği koordinatlar oyun tahtası değişkenlerine yansıtıldığında, üretilen koşul ifadeleri mevcut oyun durumuyla eşleşen durumu bulup yapay zekanın hamlesini gerçekleştiriyor.
Ardından oyun tahtasını yeniden yazdırıp Jun sözdizimiyle kullanıcı girişi bölümüne atlayarak oyun döngüsünü kurdum.
Yani çalışma anında arama veya hesaplama yapılmadan, yalnızca önceden üretilmiş koşul ifadeleri çalıştırıldığı için, çok optimize olmasa da bir Tic-Tac-Toe yapay zekası gerçekleştirebildim.
GitHub'a, RyuGod sitesinde bunu doğrudan oynama yöntemini de ekledim.
Henüz yorum yok.