Meydan okuma
Bir dize girişini işlev parametresi olarak mı yoksa stdin'den alan ve geçerli bir FEN dizesi mi olduğunu belirleyen bir program veya işlev yazın .
Giriş
Girişin yalnızca aşağıdaki karakterleri içereceğini varsayabilirsiniz (büyük / küçük harfe duyarlı)
pkqrbnPKQRBN12345678/
Girişin uzunluğu her zaman en az 1 karakter ve en fazla 100 karakter olacaktır
Çıktı
Çıktı gerçek / falsey bir değer olmalıdır. Bunlar tutarlı oldukları sürece istediğiniz herhangi bir değer olabilir (tüm doğru sonuçlar aynı çıktıya, tüm falsey sonuçları aynı çıktıya sahiptir). Tam olarak iki farklı olası çıktınız olmalıdır.
Geçerli sayılan
Küçük harfler siyah parçaları, büyük harfler beyaz parçaları temsil eder.
Mevcut pozisyondaki parçaların var olabilmesi için bir satranç oyununda mümkün olduğundan emin olmalısınız.
Her oyuncunun her zaman tam olarak 1 kralı (k / K) olacaktır.
Her oyuncunun en fazla 8 piyonu (p / P) olabilir.
Her oyuncunun genellikle en fazla 1 * kraliçesi (q / Q)
olmayacaktır. 2 * rooks (R / R) daha
Her oyuncu, genellikle en fazla 2 * şövalyeleri (n / H) sahip olacak
Her oyuncu, genellikle en fazla 2 * piskoposlarını (b / B) sahip olacaktır
* Bu 'için bir oyuncu için yasal bu dört parçadan herhangi birine bir piyon tanıtmak.
Her oyuncu için toplam piyon, kraliçe, kale, şövalye ve piskopos asla 15'ten fazla olmayacak
Toplam parça sayısı artı boş kareler (sayılarla gösterilir) her bir sıralama için her zaman tam olarak 8'e kadar eklemelidir. Ve her zaman tam bir eğik çizgi ile ayrılmış tam olarak 8 rütbe olmalıdır.
Göz ardı edebileceğiniz şeyler
Belirtilen pozisyonda oynamanın mümkün olup olmadığı ya da pozisyon yasal ise, sadece parçaların verilen miktarlarda var olabileceği konusunda endişelenmenize gerek yoktur.
Oyuncu dönüşü, oyuncu hakları ve geçiş hakkı gibi FEN dizelerinin diğer karmaşıklıklarını göz ardı edebilirsiniz.
Bu kod golf. Bayt cinsinden en kısa program kazanır. Her zamanki boşluklar ve kurallar geçerlidir.
Test Durumları
Giriş rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Çıkışı Doğru
Giriş 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Çıkış Doğru
Giriş r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Çıkışı Yanlış
(siyah 7 piyon ve 4 kaleye sahiptir - imkansız)
Giriş 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Çıkışı Yanlış (sadece 7 sıralama)
Giriş 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Çıkışı Yanlış (9 sıralama)
Giriş 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Çıkışı Yanlış (2. sırada 9 kare / adet var)
Giriş rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
Çıkışı Doğru
Bu durumda açıklık için Feersum ve Arnauld sayesinde (3 + 5 = 8)
FEN nedir?
FEN , parçaların satranç tahtasındaki konumunu kaydetmek için standart bir gösterimdir.
Resim kredisi http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.
Oyuncu piyon sayısı telafi etmek için azaldığı sürece 9 taneye kadar kraliçeye sahip olabilir. Parçaların yasal veya yasadışı olmaları hakkında endişelenmenize gerek yok, sadece parça sayısı.
35
8 boş kareyi tanımlamanın alışılmadık bir yoludur.