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

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

Kural motoru 1.527 bayt düz kaynak. Kural doğruluğu ve FIDE uyumluluğu bakımından dünyanın en eksiksiz motorlarından biri; bayt başına işlev oranında ise açık ara birinci — projenin temel iddiası da bu. Tarayıcıda çalışır, JavaScript ile yazılmıştır; kütüphane, kurulum ve sunucu istemez. İddianın sergi sürümü 2,4 KB'lık tek bir HTML dosyası: bütün kurallar, tıklanabilir tahta ve canlı saatle tarayıcısı olan her cihazda çalışır — aşağıda oynanan da indirilen de o.

dcebaecd∅899999999∅800000000∅800000000∅800000000∅800000000∅811111111∅854632645∅8

Başlangıç pozisyonunun tamamı, motorun dizisinde: 64 onaltılık basamak (0–9 ve a–f ile yazılan, 16 tabanlı sayı), a1'den h8'e sırayla; yatayların arasında 8'er boş göz. Her basamak bir kare; şeritteki her renk bir taş türünü gösteriyor; beyaz taşın kodu siyahınkinin 8 fazlası. Motorun tahta temsili bu.

Boş 0Piyon 1/9Şah 2/aVezir 3/bAt 4/cKale 5/dFil 6/e

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

İndeks onaltılık okunuyor: üst hane yatay, alt hane dikey — a1 00, h8 77. Alt hanesi 8–f olan gözler tahtanın dışında; sağdaki soluk sütun her yatayın bu sekiz gözünü tek hücrede gösteriyor. Bu düzenin motora ne kazandırdığı “Motorun kendisi” sekmesinde.

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

Golfstack

Kodun kendisi, değeri ve Golfstack sanatı

Turnuva standartlarında eksiksiz bir satranç hakemi, 1.527 baytlık tek bir JavaScript dosyasına sığdı. Oynanabilir tek bir HTML dosyası olarak boyutu 1,7 ile 2,7 KB arasında (KB, dosya boyutu birimi; 1 KB = 1024 bayt). Bu fark, arayüzün neler sunduğundan ve HTML yazımının eski mi modern mi olduğundan geliyor. FideLite, en küçük boyutta en çok işlevi sunmayı hedefleyen bir mühendislik çalışması; code golf ile yazıldı — işleve dokunmadan, gereksiz dolgu olan her şeyi yontarak. Bu çalışma biçimine Golfstack diyorum.

Ana sürümlerde iki oyuncu aynı cihazda karşılıklı oynar. Motor hamle önermez, oyunu yönetir; harici hiçbir kütüphaneye de ihtiyaç duymaz.

Kural tarafında kestirme yok. Hangi maddenin nasıl işlediğini “Kurallar ve uygulanışı” sekmesinde madde madde bulabilirsin. 50 hamle ve üçlü tekrarın talep akışı, anlaşmalı beraberliğin teklif–kabul–düşme mekaniği kitapçıktaki gibi işliyor: talep oynanacak hamle üzerinden kurulabiliyor, teklif, rakip kabul etmeden hamlesini yaptığında düşüyor, mat bütün otomatik beraberlik koşullarının önüne geçiyor. Terk ve süre bitiminin, rakibin mat edemediği pozisyonlarla karşılaştığı çetrefil senaryolarda karar 5.1.2 ve 6.9'un sorduğu soruya göre veriliyor. Büyük platformların çoğu bu maddelerde kendi kısayolunu uyguluyor.

Teknik özellikler

  • Modern bir siteye yakın arayüz. Varsayılan sürümlerde seçili kare ve geçerli hedefler işaretlenir, terfi seçici açılır, şah ve bekleyen beraberlik teklifi göstergelerden okunur; her hamleden sonra tahta sıradaki oyuncunun bakış açısına döner. Taş glifleri, saat işareti ve göstergeler Unicode'dan geliyor — tek bir görsel dosyası, font indirmesi ya da dış sunucu isteği olmadan. Daha yalın sürümler tahtayı metin karakterleriyle çiziyor, bir kısmı hiç çizmiyor.
  • Fischer zaman kontrolü ve okunaklı saat. Saat taşıyan sürümlerde varsayılan tempo 10+5: oyuncu başına 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 biçimde eklenir. Bayrak düştüğü anda sonuç kendiliğinden belirlenir.
  • Hamle üretimi ve sağlamlık. Motor satranç mantığı bakımından tuhaflık yapmaz: geçerli olmayan hamle geçmez, geçerli olan reddedilmez, sonuç kodu yanlış pozisyonda üretilmez. İddia ölçüme dayanıyor: motor, satranç programlamanın standart test takımlarını makul derinliklere kadar hatasız geçiyor.
  • Kural doğruluğu ve bitişler. Motor oyun bittiğinde “berabere” deyip geçmez; on beş sonucun hangisi geldiyse onu adıyla verir. Kodlar iki karakterlik olmasına rağmen akılda kalıcı — 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ı, üçlü tekrar mı, ölü pozisyon mu: belirsiz kalmaz.
  • Beraberliğin zor yarısı. Federasyonların kitabında çoğu uygulamanın atladığı ya da en basit hâliyle geçiştirdiği maddeler var; motor onları olduğu gibi uygulamayı deniyor. Özellikle FIDE'nin meşhur 6.9 ve 5.2.2 maddeleri es geçilmeden, olabildiğince algoritmaya dahil edildi. Kazancı somut: haksız sonuçların büyük bölümünün önüne geçiliyor. Ayrıntısı burada.
  • Modüler yapı. Kural katmanı bir yanda durur, arayüzün yaptığı işler öbür yanda. Beraberlik teklifini, saati ya da otomatik beraberlik sınırlarını çıkarırsan geri kalan aynen çalışmaya devam eder; başlangıç dizilişi — istersen bir FEN'den — ve süre ayarlanabilir. Code golf satranç projelerinde bu ayrım genellikle yoktur: kuralın nerede bitip oyun oynamanın nerede başladığı okunamaz hâle gelir.
  • Okunabilirlik ve akılda kalıcılık. Kaynak okunmak için değil çalışmak için yazıldı: tek harfli isimler, tek satır, gömülmüş fonksiyonlar. Yine de isimlendirme rastgele değil — bayt bütçesinin izin verdiği her yerde adlar İngilizce karşılıklarını çağrıştırıyor. 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, ama beraberliğin zor yarısında motor gerçekten ileriye bakıyor — üstelik yalnızca testte değil, oyunun içinde de, bayrak düştüğü ya da oyuncu terk ettiği anda. Hız bu yüzden süs değil. Hızın önem taşıdığı ikinci yer testler: perft (bir pozisyondan çıkan, belirli uzunluktaki bütün hamle dizilerini sayan standart doğruluk sınaması) milyonlarca düğüm sayıyor. İkisine de motorun hızlı varyantı hizmet ediyor: aynı kurallar, 117 bayt daha uzun, mantıksal olarak birebir aynı. Ölçümler ayrı bir başlıkta. Hızın önem taşıdığı üçüncü yer bot: motorun üstüne kurulan arama onu her düğümde yeniden çağırıyor, bu yüzden botun aynı sürede ne kadar derine bakabileceğini motorun hızı belirliyor.
  • Bot ayrı bir katman. İddia bayt başına düşen işlev üzerine kurulu; bot şart değil ve üstüne eklenmesi kural eşdeğerliğini bozmuyor. Botlu sürümler iddianın dışında; gerekçesi aşağıda, ölçümleri Varyantlar sekmesinde.

Asıl iddia tek tek bu maddeler değil, oranın kendisi: bayt başına düşen işlev. Kuralların tamamı tek bir dosyada duruyor — elmas kadar sert, kara delik kadar yoğun. Bu hâliyle zanaatkâr ve sanatkâr egomun da bir yansıması. ;)

Motor geliştirme aşamasında uç durumlar dahil binlerce kez sınandı ve bilinen hataların tamamı ayıklandı. Yine de kendi prensiplerimi bozmadan daha da sertleştirmeye her zaman açığım: bir baytı daha nasıl söküp atacağıma dair bir fikrin varsa, ya da daha tehlikelisi bir hata, çökme veya yanlış hüküm gördüysen cuneytinan37@gmail.com üzerinden yaz.

Canlı sergi

Sürümü seç, oyna

Tek oyun değil, bir sergi. Depoda doğrudan tarayıcıda oynanabilen 36 dosya var ve çeşitlilik üç yönde açılıyor: kurallarda yalnızca geçerliliği bilen sürümden tam FIDE hakemine, arayüzde tıklanabilir tahtadan UCI notasyonuna ve hiç tahta çizmeyen körleme sürümlere, özel sürümlerde de botlara, daha özenli arayüzlere ve Lichess ile Chess.com kurallarını uygulayan eşdeğerlere kadar. Bu çeşitlilik Theseus'un Gemisi'nden esinlendi: tam satrancın nerede bitip daha azının nerede başladığı tartışılsın ve düşünülsün diye. Kuralları dinamik olarak ekleyip çıkarabilen üreticiye de bu yüzden Chesseus diyorum!

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

Önce kural seviyesini, sonra sürümü seç. Her seviyenin ilk sürümü, default, o seviyenin ana dosyası. L3 tam hakem: bütün sürümlerinde kural tarafı aynı, değişen yalnızca hamleyi nasıl girdiğin, tahtanın nasıl çizildiği ve hangi göstergelerin bulunduğu. L1 ve L2 kural seviyesi daha düşük olanlar; ikisi de iddianın dışında. special ayrı bir katman: çoğu bu seviyelerden türemiş ama hiçbirine tam uymayan, kimi zaman projenin kendi ilkelerine ters düşen çok çeşitli sürümler. Ayrıntısı Varyantlar sekmesinin sonundaki Özel sürümler bölümünde. L1, L2 ve L3'teki nonbrowser bir terminal sürümü: tarayıcıda çalışmadığı için burada oynanamaz, ama kodunu gösterebilir ya da indirip node ile çalıştırabilirsin.

Tahta çizen sürümlerde tahta küçük geliyorsa tarayıcının yakınlaştırmasını kullan — Ctrl +, macOS'ta ⌘ +; Ctrl 0 (macOS'ta ⌘ 0) eski hâline döndürür. prompt() penceresi açan sürümlerde tarayıcın iletişim kutularını engelliyorsa hiçbir şey açılmaz; dosyayı indirip aç ya da iletişim kutularına izin ver.

Seviye
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 baytla 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ç oyunu en az kaç bayta sığabilir?

Cevabı aşağıda. Ama bu soruyu sorabilmek için önce neyin “eksiksiz” sayılacağına karar vermek gerekiyordu.

Neyi çıkarırsak hâlâ satranç kalır? (Chesseus problemi)

Motoru yazarken kendimi bir anda Theseus'un Gemisi paradoksunun ortasında buldum: bir satranç oyunundan neleri söküp atabiliriz ki geriye yine satranç kalsın?

Burada kaçınılmaz bir kimlik sorusu doğuyor. Ortaçağ satrancını başlangıç noktası almadım — o oyunda fil çapraz iki kare sıçrıyor, vezirin atası tek kare çapraz gidiyor; rok ve piyonun çift adımı henüz yerleşik değil. 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 (rok hariç), şah çekme, 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 alt 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 teoride hamle sayacı, pratikte saat engelliyor; ikisi de 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 talebi, bayrak düşmesi, terk. Tahtadaki hamlelerden değil, oyunculardan ve saatten gelen hakem 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. Yapım sürecinde karşılaştığım dönüm noktalarını — hangi kuralın neyi kırdığını, hangi keşfin neyi baştan yazdırdığını — Ayrıntılı teknik sekmesinde anlatıyorum.

Yontma nerede biter

Michelangelo'ya heykellerini nasıl yaptığı sorulduğunda şöyle cevap verdiği anlatılır:

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 koddaki her fazlalığı yontmaktı.

Bu yontmanın nerede biteceğini söyleyen kavramın adı Kolmogorov karmaşıklığı: bir nesneyi üretebilen en kısa programın uzunluğu. Code golf tam olarak o sınıra doğru yürümektir; sınırın kendisi ise kanıtlanmış biçimde hesaplanamaz — yani nerede duracağını kimse önceden söyleyemez, ölçerek yürürsün. Buradaki ek kısıt, yontmanın kayıpsız olmak zorunda olması: kuralların gerektirdiği mantıktan tek bir madde bile düşerse elde kalan şey daha küçük bir satranç olmaz, eksik bir satranç olur.

Sorunun cevabı bu yüzden tek bir sayı: 1.527 bayt. engine.js, iki insan oyuncu arasındaki resmî bir oyunu baştan sona yönetiyor; bir arayüzle birleşip oynanabilir tek bir dosya olduğunda, arayüzüne ve eski ya da modern HTML yazımına göre 1.715 ile 2.744 bayt arasında kalıyor.

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ı, boyut iddiasını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 tür dönüşümü sayesinde tahtanın sayısal kodlaması hiçbir yerde açık bir dönüşüm 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. Dil, kendi kendini açan paketleyicilere de doğal olarak elverişli; 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.527 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 rekor denemeleri her 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, pakete katılan ya da eklenen hiçbir kütüphane yok.

“Dünyanın en küçüğü” iddiası bu iki ö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 dilde. İ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 zor: bu sayfada botlu sürümler duruyorken, iddia neden onları hiç saymıyor?

Alışılmış yol 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, üç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 geçerli 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. Ölçü eksik kapsamada bile net: motorun ilan ettiği her beraberlik gerçek (soundness), kaçırdığı gerçek beraberlikler olabilir (completeness) — ve kaçırdıkları, pratik tabloda kabaca 2,2 milyonda bir oyuna düşüyor; kaçırılan bir beraberlik sonucu yalnızca bayrak düştüğünde ya da terkte değiştirebiliyor. Birkaç maddede kapsamayı %100'e çıkarmak zor, ama bu bile bayt başına getirisi hesaplanabilen kesin bir kavram; botun tanımı değil. 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 ya da onu aramayla iç içe geçirmek kural eşdeğerliğini bozmuyor. Bu motorun üstündeki botlu sürümler tam olarak böyle çıktı: aynı kurallar, saat ve oyuncular arası etkileşimler dışarıda, üstünde arama. Bitmiş saymıyorum, çünkü bir botu iddianın içine almak için kendime koyduğum ölçüt hakem motorununkiyle aynı: kalite/bayt oranında bir ş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 kazandırdığı kalıyor: bu motor beraberliğin zor yarısında büyük platformların çok ilerisinde. Bu konuda iddialıyım — en titiz duranlar bile kitapçığa birebir bağlanmak yerine materyal testiyle yetiniyor: tahtada mat etmeye yetecek taş var mı. Pozisyonun kendisine bakan taraf, yani bayrak düştüğünde mat kurulup kurulamayacağı ve kilitli pozisyonların tespiti, yaygın değil. Bunun bir de ölçüsü var: Miguel Ambrona'nın CHA-Solver'ı Lichess açık veritabanında haksız sonuçlanmış 204.060 oyun saydı; bu motor onların %98'inden fazlasını doğru karara bağlıyor. Chess.com'un FIDE–USCF karması gibi bilinçli tercihler de var; buradaki tercih başka: tek kitap, tek ölçü.

Baytların ötesinde

Code golf dünyasındaki satranç projeleri genellikle 50 hamle sınırından, üç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 FIDE kitabının tamamını FideLite'tan daha az bayta sığdıran bir hakem motoru yok — ve FideLite, büyük platformların hiçbirinde rastlamadığım kilitli pozisyon tespitini de taşıyor.

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 yapay zekâ modellerinden 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 ölçüde kısalttım. Kararlar bana ait kaldı, kazandığım şey hız oldu.

Çehov kardeşine yazdığı mektupta “kısalık yeteneğin kardeşidir” diyor. 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 oluşuyor: 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 düz ışın
  • Fil — sekiz leylak kare, dört çapraz ışın
  • Vezir — kale ve fil karelerinin tümü
  • Şah — bordosarı çerçeve, bir adımlık erim
  • Piyon — tek karelik ilerlemesinin düştüğü kare: FIDElite yazısı