FideLite.ArtFideLite.Art code golf · satranç hakemi · bayt · FIDE · JavaScript · tek dosya

Her resmî kuralı uygulayan, dünyanın en küçük satranç oyunu.

2,7 KB'tan 1.815 bayta kadar inen farklı arayüz varyantlarıyla. Tarayıcıda çalışır, JavaScript ile yazılmıştır; kütüphane, kurulum ve sunucu istemez. İndirdiğiniz tek bir HTML dosyası neredeyse her akıllı cihazda açılır.

5d37b3d59999999900000000000000000000000000000000888888884c26a2c4

Başlangıç pozisyonunun tamamı: 64 onaltılık (0–9 ve a–f ile yazılan, 16 tabanlı sayı) basamak, a1'den h8'e sırayla. Her basamak bir kare, her renk bir taş türü. Motorun tahta temsili bundan ibaret.

boş 0Fil 2/3Kale 4/5Vezir 6/7Piyon 8/9Şah a/bAt c/d

“Mükemmelliğe, ekleyecek bir şey kalmadığında değil, çıkarılacak bir şey kalmadığında ulaşılır.”Antoine de Saint-Exupéry

Her karede dört şey var: kare adı, taşın onaltılık kodu, glifi (taşın Unicode simgesi — ♞, ♛), ve motorun kullandığı indeks.

İndeks a1'de sıfırdan başlar, soldan sağa artar, h1'den sonra bir üst yatayın a sütununa geçer ve h8'de 63'te biter. Bu düzenin motora ne kazandırdığı motorun kendisi sekmesinde.

L3 numerical sürümde kullanıcı sezgisine daha uygun olsun diye indeksler +1 artırılmıştır, yani indeksin bir fazlası: a1 = 01, e4 = 29, h8 = 64.

Golfstack

Kodun kendisi, değeri ve Golfstack sanatı

2,7 KB'lık (bir dosyanın diskte kapladığı yerin ölçüsü; 1 KB = 1024 bayt) tek bir HTML dosyasına, turnuva standartlarında eksiksiz bir satranç hakemi sığdırıldı. Golfstack konseptiyle geliştirilen bu proje, kod optimizasyonunun sınırlarını zorlayarak en küçük boyutta en çok işlevi sunmayı hedefleyen bir mühendislik çalışması.

İki oyuncunun aynı cihaz üzerinden karşılıklı oynadığı bu motor, harici hiçbir kütüphaneye ihtiyaç duymadan tam donanımlı bir satranç deneyimi sağlar.

Kural tarafında eksik yok. FIDE kitabının tamamı uygulanıyor. Hangi maddenin nasıl işlediğini Resmî oyun kuralları sekmesinde madde madde bulabilirsiniz. Terk ve süre bitiminin yetersiz materyalle karşılaştığı o çetrefil senaryolarda bile karar 5.1.2 ve 6.9'a birebir uyuyor. 5.2.2'nin kilitli pozisyon dalında motorun verdiği her karar doğru: ölü dediği pozisyon gerçekten ölüdür. Ölçülen kapsama %93; kaçan %7, içinde fil bulunan uç örnekler. Tanımadığı her durumda motor oyunu sürdürüyor, yani hata payı hep güvenli tarafta kalıyor.

Teknik özellikler

  • Modern siteye yakın arayüz. L3 (tahtanın tıklanarak oynandığı sürüm) sürümünde tahta tıklanabilir, seçili kare ve legal hedefler işaretlenir, terfi seçici açılır, şah göstergesi durum satırında, beraberlik teklifi beraberlik düğmesinde görünür. Hamleden sonra tahta sıradaki oyuncunun perspektifine döner — bu döndürme L3 input ve L3 prompt sürümlerinde de var. L3'un taş glifleri, saat işareti ve göstergeleri Unicode'dan geliyor — tek bir görsel dosyası, font indirmesi ya da CDN isteği olmadan. Öbür sürümler tahtayı ASCII ya da tam genişlik karakterlerle çiziyor; körleme sürümüyle L3 numerical hiç çizmiyor.
  • Fischer zaman kontrolü ve hoş saat gösterimi. Tempo 10+5: on dakika, artı her hamlede oyuncunun süresine eklenen beş saniye. İki saat ekranda emojisiyle birlikte DAKİKA : SANİYE biçiminde işler, artış her hamlede görünür şekilde biner. Bayrak düştüğü anda sonuç kendiliğinden doğar.
  • Hamle üretimi. Motor satranç mantığı bakımından tuhaflık yapmaz: legal olmayan hamle geçmez, legal olan reddedilmez, sonuç kodu yanlış pozisyonda doğmaz. İddia ölçüme dayanıyor — bilinen satranç programlama testleri makul derinliklere kadar hatasız geçildi: CPW pozisyonları, van Kervinck'in zor listesi, 6.838 pozisyonluk Vajolet külliyatı.
  • Kural doğruluğu ve oyun sonları. Oyun bittiğinde “berabere” deyip geçmez; on beş sonucun hangisi geldiyse onu adıyla bildirir. Kodlar iki karakterlik olmasına rağmen mnemonik — hangi harfin neye karşılık geldiği bir bakışta oturuyor — ve on beşi FIDE kitapçığındaki maddelerle birebir örtüşüyor. Pat mı, 3'lü tekrar mı, ölü pozisyon mu: belirsiz kalmaz.
  • Beraberliğin zor yarısı. Bir hakemin, sıradan hamle üretiminin dışında cevaplaması gereken iki soru var: bu pozisyonda mat artık hiç kurulabilir mi? ve bayrak düştüğünde ya da bir taraf çekildiğinde rakip mat edebilecek durumda mıydı? İkisinin de ucuz bir yarısı var, bir de zor yarısı. Ucuz yarı materyali saymak: tahtada mat etmeye yetecek taş kaldı mı. Yaygın olan bu, ve motor da yapıyor.
  • Zor yarı taşları saymakla çıkmıyor. Bir pozisyon, materyal fazlasıyla yeterliyken de ölü olabilir: piyonlar birbirini kilitlemiştir, hiçbir taş oynayamaz, iki taraf iş birliği yapsa bile mat kurulamaz. Bayrak düştüğünde de asıl soru “rakibin yeterli taşı var mı” değil, “bu tahtada bir mat pozisyonu kurulabiliyor mu”dur — kaybeden taraf kendi şahının kaçış karelerini kendi taşlarıyla kapatarak yardım edebildiği için savunanın taşları da hesaba giriyor. Motor iki yarıyı da uyguluyor.
  • Ve zor yarının maliyeti sanıldığı kadar yüksek değil. Kilitli pozisyon hamle araması istemiyor; tahtanın statik resminden çıkıyor — piyonların ve şahların ulaşabildiği kareler doyana kadar büyütülüyor, hiçbiri büyümüyorsa pozisyon ölüdür. Ölçülen kapsama %93, ve kaçırdıklarının tamamı fil içeren uç örnekler; motor tanımadığı hiçbir pozisyona “ölü” demiyor, yalnızca bazılarını görmüyor. Yani pratikte karşılaşılan kilitli pozisyonların neredeyse tamamı, çok küçük bir maliyetle yakalanabiliyor (1 KB daha vererek filli pozisyonların da neredeyse tamamını dahil etmek, yani %93'ü %99,94'e çıkarmak mümkün; çizgiyi şimdilik burada çekmeye karar verdim).
  • Bozulmazlık. Ne bug ne geçersiz girdi ne de kasıt motoru yoldan çıkarabiliyor. L3'da hatalı girdi zaten doğmuyor; hamle tıklayarak yapılıyor ve yalnızca legal kareler işaretleniyor. Metin girişli sürümlerde motor kabul etmediği her şeyi reddedip aynı soruyu tekrar soruyor — boş, saçma ya da kasten bozuk girdiler dahil. Oyun kilitlenmiyor, durum bozulmuyor; notasyonu doğru ama terfi harfi geçersiz bir girişte taş otomatik vezire terfi ediyor.
  • Modüler yapı. Parçalar birbirine yapışık değil: kural katmanı bir yanda durur, arayüzün yaptığı işler öbür yanda. Beraberlik teklifini, saati ya da terk düğmesini çıkarmak istersen çıkarırsın, geri kalan aynen çalışmaya devam eder; 5'li tekrar ve 75 hamle gibi otomatik beraberlik sınırları için de aynısı geçerli. Başlangıç dizilişi — istersen bir FEN'den — süre, hatta tekrar sayacının eşiği bile ayarlanabilir. Code golf satrançlarında bu ayrım genellikle yoktur: şah kontrolü ayrı bir sınama değildir, hamle üretimiyle değerlendirme iç içe geçer, ve kuralın nerede bitip oyun oynamanın nerede başladığı okunamaz hâle gelir.
  • Okunabilirlik ve mnemonik. Kaynak okunmak için değil koşmak için yazıldı: tek harfli isimler, tek satır, gömülmüş fonksiyonlar. Yine de isimlendirme rastgele değil — bayt bütçesi izin verdiği sürece her değişken ve fonksiyon adı İngilizce karşılığını çağrıştıracak şekilde seçildi. Bunun için gerçekten özen gösterildi: büyük-küçük harf ayrımına kadar, golfstack'in izin verdiği her yerde okunabilirlik gözetildi. Ne olup bittiği satır satır ayrı bir bölümde açılıyor.
  • Hız ve derinlik. Hakemin işinin büyük kısmı tek bir yarım hamlede biter: sıradaki oyuncunun legal hamleleri ve pozisyonun bitip bitmediği. Beraberliğin zor yarısı bunun dışında kalıyor — orada motor gerçekten ileriye bakıyor, üstelik testte değil, oyunun içinde, bayrak düştüğü anda. Hız bu yüzden süs değil. İkinci yer test: perft (bir pozisyondan çıkan bütün hamle dizilerini sayan standart doğruluk sınaması) milyonlarca düğüm sayar, orada saniyeler dakikaya döner. engine_4x ikisi için de var — aynı kuralları uygulayan, 48 bayt daha uzun ve mantıksal olarak birebir aynı bir varyant; hamle üretiminde iş yüküne göre 2,4× ile 9,7× arası, hüküm katmanında çok daha fazlası. Baytın nereye gittiği ve ölçümler ayrı bir başlıkta.
  • Bot ayrı bir katman. Ana sürümde oyunu iki insan oynuyor; motor hamle önermiyor, oyunu yönetiyor. İddia bayt başına kural yoğunluğunda olduğu için bot şart değil — iki insanın oynadığı yapı, rastgele hamle seçen bir bottan bile ucuza çıkıyor. Kural katmanı ayrı durduğu için üstüne arama koymak da çekirdeği bozmuyor: saati ve oyuncular arası etkileşimleri dışarıda bırakıp kural tarafını yerinde tutan, botlu ayrı bir sürüm var. Ölçülen gücü 2400 civarında; dayanakları, testleri ve başka bot varyantları ayrıca gelecek. Sıradaki soru, kurallar ve arayüz dahil 10 KB'lık tek bir HTML'e makul bir işlemci bütçesiyle kaç elo sığdığı — hedef 3000, sonuç ne çıkarsa ayrıntısıyla yayımlanacak.

Asıl iddia tek tek bu maddeler değil, oranın kendisi: hizmet başına düşen bayt. Yukarıdakilerin tamamı, indirilebilir tek bir 2,7 KB'lık dosyanın içinden çıkıyor.

Motor geliştirme aşamasında uç durumlar dahil binlerce kez sınandı ve bilinen hataların tamamı ayıklandı. Yine de oyun sırasında gözünüze çarpan bir şey olursa bildirin; geri bildirim motoru doğrudan iyileştirir.

Oyna

Sürümü seç, başlat

Her sürüm kendi penceresinde çalışır, saatler ancak başlattığında işlemeye başlar. Sürüm değiştirmek çalışan oyunu kapatır.

L3 ve L3 input sürümlerinde tahta küçük geliyorsa tarayıcının yakınlaştırmasını kullan — Ctrl +, macOS'ta +. Oyun pencerenin içinde birlikte ölçeklenir; Ctrl 0 eski hâline döndürür.

Sekiz sürümden ikisi — L3 prompt ve L3 numerical — hamleleri prompt() penceresiyle alıyor ve oyun sonucunu alert() ile bildiriyor. Tarayıcın bu pencereleri engelliyorsa — çoğu tarayıcı ikinciden sonra “bu sayfanın iletişim kutularını engelle” seçeneği sunar — oyun sessizce durur. Engellediysen sayfayı yenile ve kutuları geri aç. Kalan altı sürüm hiç iletişim kutusu kullanmaz.

Sürüm

Seçili sürüm L3. Oyunu başlat ya da kodunu göster.

Hazır

Hikâye

Mermeri yontmak — baytlara sığdırılan satranç evreni

Code golf, bir programı işlevinden, kurallarından ve mantıksal doğruluğundan hiçbir ödün vermeden mümkün olan en az karakterle yazma sanatı. Kısıt tek: davranış aynı kalacak, hacim küçülecek.

Bu proje baştan sona tek bir sorunun peşindeydi:

Baştan sona hiçbir kuralı atlamayan, %100 FIDE uyumlu eksiksiz bir satranç maçı en az kaç bayt olabilir?

Cevabı aşağıda. Ama bu soruyu sorabilmek için önce “eksiksiz” kelimesinin nerede başladığına karar vermek gerekiyordu.

Neyi çıkarırsak hâlâ satranç kalır

Motoru yazarken kendimi bir anda Theseus'un Gemisi paradoksunun ortasında buldum: bir satranç oyunundan neleri söküp atarsak, o oyun hâlâ satranç kalmaya devam eder?

Burada kaçınılmaz bir kimlik sorusu çıkıyor. On beşinci yüzyıl öncesinin satrancını başlangıç noktası almadım — orada fil yalnızca iki kare atlıyor, vezir tek kare çapraz gidiyor, rok ve piyonun çift adımı yok. Aynı adı taşısalar da o oyunla bugün oynadığımız oyun temelde iki ayrı kimlik; onu taban kabul etmek, sorunun cevabını başka bir oyun için vermek olurdu.

Başlangıç noktası olarak şunu aldım: bugünkü taş hareketleri, şah, mat ve pat, piyonun tek kare ilerlemesi, otomatik vezir terfisi. Çıkarılabilecek ne varsa çıkarıldığında geriye kalan çekirdek bu. Buradan bir madde daha eksiltmek oyunu satranç olmaktan çıkarıyor.

Çekirdek eldeyken tek yön kalmıştı: eklemek.

Çekirdekten tam hakemliğe

Motor tek seferde doğmadı, üst üste binen turlarla büyüdü.

Önce seçimli terfi geldi; piyon vezire mahkûm olmaktan çıktı, at, fil ve kale de birer seçenek oldu. Ardından piyonun iki kare ilerlemesi ve onunla birlikte gelmek zorunda olan geçerken alma — ikisi ayrılamaz, çünkü ikincisi birincisinin açtığı boşluğu kapatır. Sonra rok. Bu noktada tahtada olup biten artık bugünkü satrancın kendisiydi.

Sonrasında tahtanın dışına çıktım. Oyunun sonsuza kadar sürmesini engelleyen iki teorik sınır, 50 hamle kuralı ve saat, motora bu aşamada girdi.

Normalde orada bırakacaktım. Ama bu kadar ilerlemişken kural kitabının geri kalanını da tamamlamak istedim: pozisyon tekrarı, yetersiz materyal, beraberlik teklifi ve iddiası, bayrak düşmesi, oyundan çekilme. Hakemin tahtaya hiç bakmadan verdiği kararlar da böylece işin içine girdi.

Bu yolun düz bir çizgi olduğunu söyleyemem. Sık sık, daha önce eklediğim bir kuralın FIDE'ye tam uymadığını ya da belirli bir pozisyonda yanlış davrandığını fark edip geri dönmem gerekti. Bazen yeni bir keşif, o ana kadar yazdığım çözümün tamamını çöpe attırdı. Her geri dönüş yapısal bir revizyon, arkasından da yeni bir bayt optimizasyonu demekti; kod büyüdü, sonra yeniden küçüldü.

Uzun ve öğretici bir süreç oldu, hem kodlama hem satranç mantığı tarafında. Hangi kuralın neyi kırdığını, hangi keşfin neyi baştan yazdırdığını ayrı bir “Yapım süreci” bölümünde adım adım ve çok daha ayrıntılı anlatacağım.

Yontma nerede biter

Michelangelo'ya heykeli nasıl yaptığını sorduklarında verdiği meşhur cevap şudur:

Heykel zaten mermer bloğun içinde tamamlanmış hâldedir. Ben sadece gereksiz kısımları yontup atıyorum.Michelangelo

Golfstack'te yaptığım da buydu. Kuralların ne olduğu baştan belliydi; iş, o kuralları anlatan her fazlalığı yontmaktı.

Claude Shannon'ın bilgi teorisi bu yontmanın nerede biteceğini söylüyor: her mesajın kayıpsız sıkıştırılabileceği bir alt sınır var, ve o sınırın altındaki tasarruf artık tasarruf değil, bilgi kaybıdır. Code golf tam olarak o sınıra doğru yürümek. Buradaki fark, sıkıştırmanın kayıpsız olmak zorunda olması: kuralların gerektirdiği mantıksal veriden tek bir madde bile düşerse elde kalan şey daha küçük bir satranç olmaz, satranç olmayan bir şey olur.

Sorunun cevabı bu yüzden tek bir sayı: 1.815 bayt. numerical_packed.html, iki insan oyuncu arasındaki resmî bir maçı baştan sona yönetiyor.

Neden tarayıcı ve JavaScript

Akla gelen ilk sorulardan biri şu: neden tarayıcı, neden JavaScript?

Cevabın ilk yarısı erişimle ilgili. Hangi cihazda, hangi işletim sisteminde, hangi ortamda açılabildiğine bakılırsa tarayıcı açık ara birinci sırada. Derleyici yok, çalışma zamanı kurulumu yok, paket yöneticisi yok; indirilen dosyaya çift tıklamak yetiyor. Üstelik HTML görsel katmanı neredeyse bedavaya veriyor — tahta, saat ve göstergeler için ayrı bir arayüz altyapısı yazmak gerekmiyor, dahası <html>, <head>, <body> hiç yazılmasa bile dosya açılıyor. Motorun oyuncuya ulaşmak için kat etmesi gereken mesafe bu kadar kısa olmasaydı, 2,7 KB'lık iddianın pratikte bir karşılığı olmazdı.

İkinci yarısı dilin kendisiyle ilgili. JavaScript golfstack'e beklenenden çok daha elverişli: değişken bildirim anahtar kelimesi istemiyor, giriş noktası ve içe aktarma gibi zorunlu bir iskeleti yok, örtük dönüşüm sayesinde tahtanın sayı kodlaması tek bir tip çevrimi yazdırmıyor. Ok fonksiyonu, üçlü operatör ve virgül operatörü birlikte çalışınca bütün bir fonksiyon süslü parantez ve return olmadan tek ifadeye sığıyor. Kendi kendini açan paketleyiciler de bu dile özgü; motorun paketlenmiş hâli doğrudan buna dayanıyor.

Buradan bir itiraz doğuyor: tarayıcı yüzlerce megabayt, JavaScript motorunu da çalışma zamanını da o veriyor. Öyleyse 1.815 bayt kelime oyunu değil mi?

Sıfır taban diye bir şey yok. C ile yazsam libc ve bir işletim sistemi gerekirdi, assembly ile yazsam bir komut kümesi ve bir makine. Çalışma zamanını da sayan ölçünün duracağı bir yer yok; öyle ölçülürse hiçbir dilde boyut iddiası kurulamaz. Code golf bu yüzden çizgiyi hep aynı yere çeker: yazılan kod ile dışarıdan eklenen kütüphaneler sayılır, ortam ve taban sayılmaz. Tarayıcı da işletim sistemi de işlemci de kimsenin hanesine yazılmaz. Diller arası karşılaştırma bu ölçüyle yapılır, ve her rekor denemesi istenen dile açıktır.

Son kullanıcının gözünden bakıp daha sıkı bir ölçü isteyen de haklıdır: aynı ortam, aynı dil, sıfır kütüphane. İkisi de meşru, ve ikisinde de çizginin bu yanında tek bir dosya duruyor — indirilen, paketlenen, eklenen hiçbir şey yok.

“Dünyanın en küçüğü” iddiası bu ölçüye dayanıyor. Uzunca bir süredir arıyorum ve her resmî kuralı uygulayan daha küçüğüne rastlamadım, ne JavaScript'te ne başka bir yerde. İddia çürütülebilir, öyle de olmalı: biri daha küçüğünü çıkarırsa düşer. Çıkana kadar duruyor.

Kural katmanı ayrı, bot ayrı

İkinci soru daha sert: neden ana sürümde bir yapay zekâ rakip yok?

Alışılmış hat belli. Ekrana bir tahta çizilir, taşlar dizilir, oyuncu rastgeleden biraz daha iyi oynayan bir botla kapışır; bugüne kadarki denemelerin büyük çoğunluğu bu çizgide ilerledi. Code golf dünyasında birkaç yüz bayta sığdırılmış satranç botları var, ama yer açmak için rok, geçerken alma, 50 hamle, 3'lü tekrar gibi oyunun belkemiğini oluşturan kuralların neredeyse hepsini feda ediyorlar. Bot mantığı kodu ciddi biçimde şişirir; iki insanın oynadığı yapı bayt bütçesi açısından çok daha ucuz. Üstelik bir bot eklemek FIDE uyumluluğuna hiçbir şey katmıyor.

Asıl mesele ölçülebilirlik. Botun tanımı belirsiz: 100 baytın altına sığan, rastgele ama legal hamle yapan şey bot mudur? Materyal sayan bot mudur, yoksa eşik daha yukarıda mı? Bunu kim söyleyecek? Kurallar öyle değil, kesin ve net. Bir kodun kuralı uygulayıp uygulamadığı bakıldığında görünüyor, tartışmaya yer bırakmıyor. Süreç boyunca ben de bot yazmayı denedim; sonra bütün enerjimi ölçülebilir olan tarafa verdim.

İkisi kodda da ayrı duruyor, ve bu tesadüf değil. Motor çekirdeği sürücüden hiçbir şey bilmiyor; üstüne bir arama koymak kural tarafına dokunmuyor. Botlu sürüm tam olarak böyle çıktı: aynı kural katmanı, saat ve oyuncular arası etkileşimler dışarıda, üstünde arama. Ölçülen gücü 2400 civarında. Bitmiş saymıyorum, çünkü bir botu buraya taşımak için kendime koyduğum ölçüt hakem motorununkiyle aynı: bayt/kalite oranında şaheser olması. Bu daha uzun sürecek bir iş, ama çok keyif aldığım bir hobi olduğu için o tarafta da somut bir rekor denemesi yapacağım.

Geriye ölçülebilir tarafın ne satın aldığı kalıyor: 1.815 baytlık bu yapı, beraberliğin zor yarısında büyük platformların ilerisinde. Yaygın olan, saf FIDE uygulayan yerlerde bile, materyal testiyle yetinmek: tahtada mat etmeye yetecek taş var mı. Pozisyonun kendisine bakan taraf — bayrak düştüğünde mat pozisyonunun kurulup kurulamayacağı, ve kilitli pozisyonların tespiti — yaygın değil. Bunun bir de ölçüsü var: CHA-Solver büyük bir açık oyun veritabanını baştan sona tarayıp 200 bin civarında yanlış sonuçlanmış oyun saydı — 50 bini kilitli pozisyonlardan, kalan 150 bini bayrak düşmesinde sorulmayan sorudan. Chess.com bazı maddelerde FIDE-USCF hibriti uyguluyor; eksiklik değil tercih, iki federasyonun kurallarını bilerek harmanlıyorlar. Buradaki tercih başka: tek kitap, tek ölçü. Aynı maddelerde motor bu yüzden FIDE'ye daha sıkı bağlı.

Baytların ötesinde

Code golf dünyasındaki satranç projeleri genellikle 50 hamle sınırından, 3'lü tekrardan, yetersiz materyalden, çoğu zaman rok ve geçerken almadan taviz verip yalnızca temel çekirdeğe odaklanıyor. Ben kimsenin pek uğramadığı tarafa baktım; projenin özgünlüğü de galiba tam olarak oradan doğdu. Bildiğim kadarıyla Golfstack, %100 FIDE standardını bu kadar dar bir bayt alanına sığdırabilen dünyanın en küçük tam hakem motoru.

Ticari bir ürün değil, öyle bir iddiası da yok. Ama satrancın bütün kurallarını bu şekilde katmanlandırıp en az bayta sığdırmak, kod tarafında sınır zorlayan katıksız bir mühendislik işi.

Bu noktaya gelirken Claude ve Gemini gibi modellerden ciddi destek aldım. Normalde aylar sürecek hata ayıklama, kod optimizasyonu ve tarayıcı davranışlarını didikleme işini bu araçlarla inanılmaz kısalttım. Kararlar bana ait kaldı, kazandığım şey hız oldu.

Çehov'un dediği gibi: uzun yazmak kolaydır, asıl zor olan kısa yazmaktır. Ben de bu projede satrancın o devasa dünyasını, işlevinden hiçbir şey kaybetmeyen en kısa hâline dönüştürmeye çalıştım.

FideLite — adın ve logonun anlamı

FideLite logosu: beş kare eninde bir ızgarada, ortadaki kareden çıkan taş hamleleri renklerle işaretli FideLite logosu: beş kare eninde bir ızgarada, ortadaki kareden çıkan taş hamleleri renklerle işaretli

Ad iki parçadan: FIDE + Lite. Birleşince Fransızca fidélité okunuşuna düşer — sadakat, bağlılık. Anlattığı da bu: dosya küçülürken kural kitabına bağlılığın küçülmemesi. “Lite” hafiflik, “Fide” federasyon; ikisi bir arada, hafiflik uğruna hiçbir maddenin atılmadığı bir hakem.

Logo tek bir karenin etrafına kurulu. Ortadaki kare başlangıç, geri kalan yirmi dört kare o kareden hareket eden taşların gidebileceği yerler.

  • Başlangıç — ortadaki tek kare
  • At — sekiz nötr kare, L sıçramaları
  • Kale — sekiz turkuaz kare, dört ışın
  • Fil — sekiz leylak kare, iki köşegen
  • Vezir — kale ve fil karelerinin tümü
  • Şah — bordo çerçeve, bir adımlık erim
  • Piyon — tek karelik ilerlemesinin düştüğü kare: FIDElite yazısı