Sorun:
Satrançta, tekrar ile beraber çekme konusunda iyi bilinen bir kural vardır. Aynı pozisyon 3 kez (veya daha fazla) tekrarlanırsa, bu tekrarlamaya neden olacak hamleyi yapmak isteyen oyuncu berabere kalabilir.
Bazen, son birkaç hamle sadece ileri ve geri hareket eden oyuncularsa, bir hakemin fark etmesi kolay bir iştir. Bazen parçalar tekrarlanan pozisyonlar arasında önemli ölçüde hareket ettiğinde daha az önemsizdir.
Bu meydan okumadaki sorun, talep edilen konum tekrar ile çizilirse (3 kez veya daha fazla görülmüşse) doğruluk değeri ve talep edilen konum tekrarla çizilmiyorsa, bir koordinat gösterimi, koordinat gösterimindeki hareketlerin bir listesi verilir aşağıda açıklandığı gibi veya seçtiğiniz herhangi bir gösterim (ancak test senaryolarını dönüştürmeniz gerekir).
Konum nedir?
Gerçek bir dünya senaryosunda, pozisyon bir oyuncunun kale yapıp yapamayacağı veya en-passant'ın mümkün olup olmadığı gibi şeylerden etkilenecektir; Eğer gereken değil sorununa da çözüm bu düşünün. Bu problemde, bir pozisyon basitçe tahtadaki parçaların konfigürasyonu ile tanımlanır. Bu nedenle, bu sorunun amaçları için, her iki karttaki her bir kare aynı renkteki aynı türden bir parça tarafından işgal edilirse, iki konumun aynı olduğu görülür. Bu, örneğin beyaz şövalyelerin kareleri değiştirebileceği tam bir parça olmak zorunda değildir ve diğer tüm parçalar kriterleri karşılarsa, yine de aynı pozisyonda olacaktır.
Geçerli bir gösterim neye benziyor?
Koordinat gösterimini açıklamaya devam etsem de, seçtiğiniz bir gösterim sistemi tarafından girdi almakta özgürsünüz. Şartıyla:
- Gösterimdeki her bir öğe aşağıdakilerden herhangi birini veya tümünü açıklar: ilgili parça / parçalar; çek, şah mat, çift çek, şah mat veya çıkmaz teslim edilip edilmediği; en-passant yakalama gerçekleşmişse; başlangıç pozisyonu; son pozisyon.
- Sen olabilir değil sizin gösterimde tekrarı hakkında bilgi sahibi.
Bu kriterler karşılandığı sürece, cevabınızda belirttiğiniz sürece, gösterim sisteminizi kabul etmekten mutluluk duyuyorum. Bu, örneğin 0 dizinli satır, sütun tuplleri veya programınız için anlamlı olan herhangi bir şey olabilir.
Koordinat Gösterimi
Koordinat gösterimi, yalnızca hareketleri bir koordinat sistemi olarak tanımlayan bir göstergedir.
Bir hareket önce kümeden ilk koordinat, {A1-H8}
sonra aynı kümeden tekrar hedef koordinat olarak tanımlanır. Bu yüzden Kralın Gambiti (bir dizeler koleksiyonu olarak)
{"E2-E4","E7-E5","F2-F4"}
Bu sorun için kullanmak için en iyi gösterim olduğuna inanıyorum, çünkü kontrolün gerçekleşip gerçekleşmediği veya parça hareketinin türü gibi yabancı bilgilerle dolmuyor. Daha önce de belirtildiği gibi, gösterim sizin tercihiniz olabilir, bu nedenle başka bir gösterimi kullanabilirsiniz, örneğin cebirsel gösterimi veya bu gösterimi uyarlayabilirsiniz (örneğin tireleri kaldırın veya tuples listesi olarak alın)
Kurallar:
- Sen gerektiğini değil o tekrarını neden sadece olsun, bir pozisyon ya da hareket geçerli olup olmadığını düşünün
- Göreceksin o rok ve piyon terfi varsayabiliriz değil oluşabilir.
- Girdi olarak dizelerin bir listesini almalı ve son hamlede üçüncü (veya daha fazla) tekrarın gerçekleşip gerçekleşmediğine karşılık gelen bir doğruluk veya falsey değeri çıkarmalısınız.
- Oyun her zaman satranç için standart başlangıç konumunda başlar. Başlangıç pozisyonu tekrarlamaya sayılabilir.
- Eğer pozisyon son hamleyle tekrarlanmazsa tekrar ile çizim yapılmadı
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Varsayılan I / O kuralları ile cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyonlar / yöntem uygun parametreler ve dönüş tipi, tam programlar ile kullanılabilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için bir test içeren bir bağlantı ekleyin (örn. TIO ).
- Ayrıca, cevabınız için bir açıklama eklemeniz önemle tavsiye edilir.
Test Durumları
Aşağıdakiler için doğruluk değerleri döndürmelisiniz:
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"}
{"B1-C3","B8-C6","D2-D4","D7-D5","D1-D3","D8-D6","C3-B1","C6-B8","B1-C3","B8-C6","D3-D1","D6-D8","D1-D3","D8-D6"}
{"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-E6","E2-F3","E6-D4","F3-D1","D4-C6","D1-E2","C6-D4","E1-D1","D4-C6","D1-E1","C6-D4"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3"}
Ve falsey değerleri:
{}
{"E2-E4","E7-E5","F2-F4"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","F2-F4","F7-F5"}
{"E2-E4","E7-E5","G1-F3","B8-C6","F1-C4","G8-F6","F3-G5","D7-D5","E4-D5","F6-D5","G5-F7"}
{"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-C6","E2-D1","C6-D4","D1-E2","D4-C6","E2-D1"}
{"B1-C3","B8-C6","C3-B5","C6-B4","B5-D4","B4-D5","D4-C6","D5-C3","C6-B8","C3-B1","B8-C6","B1-C3","C6-B8","C3-B1"}
{"E2-E4","E7-E5","D1-E2","E8-E7","E1-D1","D8-E8","E2-E1","E7-D8","E1-E2","E8-E7","E2-E1","E7-E8"}
C6-B8
başlangıç pozisyonu üç kez meydana geldi.