Son zamanlarda Solitaire Chess olarak bilinen bir bulmaca oyunuyla tanıştım . Buradaki kuralları özetleyeceğim:
- Tahta 4x4 dama tahtasıdır.
- Tüm parçalar aynı renktedir (takım yok) ve tüm parçalar başka herhangi bir parçayı yakalayabilir.
- Her hareket bir yakalama olmalıdır. Boş karelere hareket yok.
- Sonunda tam olarak bir parça kalmalıdır.
- Tüm parçalar tek bir değişiklikle satrançta olduğu gibi hareket eder: piyon herhangi bir diyagonal yönde yakalayabilir (teknik olarak onu ferz yapar ). Bilmeyenler yararına hareket diyagramları ekledim.
- Diğer satranç kurallarının hiçbiri (çek, rıhtım, vb.) Burada geçerli değildir. Her şey yakalamalarla ilgili.
Kral (K)
K * . . | * K * . | * * * .
* * . . | * * * . | * K * .
. . . . | . . . . | * * * .
. . . . | . . . . | . . . .
Kraliçe (Q)
Q * * * | * Q * * | * * * .
* * . . | * * * . | * Q * *
* . * . | . * . * | * * * .
* . . * | . * . . | . * . *
Kale (R)
R * * * | * R * * | . * . .
* . . . | . * . . | * R * *
* . . . | . * . . | . * . .
* . . . | . * . . | . * . .
Fil (B)
B . . . | . B . . | * . * .
. * . . | * . * . | . B . .
. . * . | . . . * | * . * .
. . . * | . . . . | . . . *
Şövalye (N)
N . . . | . N . . | . . . *
. . * . | . . . * | . N . .
. * . . | * . * . | . . . *
. . . . | . . . . | * . * .
Piyon (P)
P . . . | . P . . | * . * .
. * . . | * . * . | . P . .
. . . . | . . . . | * . * .
. . . . | . . . . | . . . .
Giriş çıkış
Referans olarak, Solitaire Chess web sayfasındaki örnek bulmaca kullanılacaktır:
. . . .
. B . .
R P . .
. . . N
Çözüm, piyonu şövalye ile almak, sonra şövalyeyi kale ile almak ve son olarak piskoposu kale ile almaktır.
Giriş
Girdi üç formdan birinde olmalıdır; sizin için en uygun olanı seçmekte özgürsünüz.
- Yeni
.....B..RP.....N
satırlı veya satırsız gibi bir karakter dizisi . Boş bir alanı temsil eden karakter, biri olmayan herhangi bir karakter olabilirKQRBNP
. - Öğelerin karakter veya sayı olduğu listelerin (veya düzleştirilmiş bir listenin) listesi, örneğin:
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
veya[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
. Birincisi için, boş bir alanı temsil eden karakter, biri olmayan bir şey olabilirKQRBNP
. İkincisi için, daha önceki hamle listemdeki sıralamalarına karşılık gelen sayıyı verdim (1
bir kral,4
bir piskopos,6
bir piyon vb.). Numaralandırmayı değiştirmekte özgürsünüz. - Her bir eleman formuna sahip bir koordinat listesi
[x, y, 'c']
, bu gibi:[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
.
Liste tabanlı giriş biçimlerinden birini seçerseniz, ayırıcılar ve sınırlayıcılar makul ve anlaşılır karakterler olabilir.
Çıktı
Çıktı bir dizi hamle veya bir dizi tahta durum olmalıdır. Bazı bulmacaların birden fazla çözümü vardır; bunlardan birini veya hepsini çıktısını alabilirsiniz. Bir kart durumu dizisi çıkarmayı seçerseniz, her kartın üç giriş biçiminden birinde olması ve aralarında makul bir ayırıcı (satırsonu gibi) olması gerekir.
Eğer çıktı hamle bir dizi tercih iseler, gibi koordinat çiftleri çiftlerinin bir listesi olarak ifade edilmelidir: [[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
. [0,0]
sol alt köşeyi temsil eder ve yine karakterleri ayırmak ve sınırlamak makul bir seçim olabilir.
Belirli bir kart çözülemezse, herhangi bir yanlış değeri ( 0
, boş dize vb.) Çıktılayın . Verilen bir tahtanın ikiden az parçası varsa, davranış tanımsızdır.
Test Durumları
Not: çıktılar yalnızca koordinat çiftleri listesi olarak verilir, çünkü diğer formatların doğruluğunu kontrol etmek oldukça kolaydır (ve tüm olası çıktı formatlarını yazmak gibi hissetmedim). Ayrıca, birden fazla çözümü olan bulmacalar için sadece bir olasılık sağlanmıştır.
Giriş 1:
. . . N
. . . .
. R . .
. . B .
...N.....R....B.
[['.', '.', '.', 'N'], ['.', '.', '.', '.'], ['.', 'R', '.', '.'], ['.', '.', 'B', '.']]
[[0, 0, 0, 5], [0, 0, 0, 0], [0, 3, 0, 0], [0, 0, 4, 0]]
[[3, 3, 'N'], [1, 1, 'R'], [2, 0, 'B']]
Çıkış 1:
[[[2,0], [1,1]], [[1,1], [3,3]]]
Giriş 2:
. . . .
. B . .
R P . .
. . . N
.....B..RP.....N
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
Çıkış 2:
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
Giriş 3:
. N R .
B . . .
N . . B
. . P .
.NR.B...N..B..P.
[['.', 'N', 'R', '.'], ['B', '.', '.', '.'], ['N', '.', '.', 'B'], ['.', '.', 'P', '.']]
[[0, 5, 3, 0], [4, 0, 0, 0], [5, 0, 0, 4], [0, 0, 6, 0]]
[[1, 3, 'N'], [2, 3, 'R'], [0, 2, 'B'], [0, 1, 'N'], [3, 1, 'B'], [2, 0, 'P']]
Çıkış 3:
[[[2,0], [3,1]], [[0,1], [1,3]], [[0,2], [1,3]], [[2,3], [1,3]], [[3,1], [1,3]]]
Giriş 4:
. . . N
. . . R
R B B .
N P P .
...N...RRBB.NPP.
[['.', '.', '.', 'N'], ['.', '.', '.', 'R'], ['R', 'B', 'B', '.'], ['N', 'P', 'P', '.']]
[[0, 0, 0, 5], [0, 0, 0, 3], [3, 4, 4, 0], [5, 6, 6, 0]]
[[3, 3, 'N'], [3, 2, 'R'], [0, 1, 'R'], [1, 1, 'B'], [2, 1, 'B'], [0, 0, 'N'], [1, 0, 'P'], [2, 0, 'P']]
Çıkış 4:
[[[2,1], [3,2]], [[1,1], [3,3]], [[3,2], [1,0]], [[3,3], [0,0]], [[0,1], [0,0]], [[0,0], [1,0]], [[1,0], [2,0]]]
Giriş 5:
P . . .
. R . .
R . R .
. R . .
P....R..R.R..R..
[['P', '.', '.', '.'], ['.', 'R', '.', '.'], ['R', '.', 'R', '.'], ['.', 'R', '.', '.']]
[[6, 0, 0, 0], [0, 3, 0, 0], [3, 0, 3, 0], [0, 3, 0, 0]]
[[0, 3, 'P'], [1, 2, 'R'], [0, 1, 'R'], [2, 1, 'R'], [1, 0, 'R']]
Çıktı 5:
[[[0,3], [1,2]], [[1,2], [2,1]], [[2,1], [1,0]], [[1,0], [0,1]]]
Giriş 6:
. P . N
K . . .
. . B .
. . R Q
.P.NK.....B...RQ
[['.', 'P', '.', 'N'], ['K', '.', '.', '.'], ['.', '.', 'B', '.'], ['.', '.', 'R', 'Q']]
[[0, 6, 0, 5], [1, 0, 0, 0], [0, 0, 4, 0], [0, 0, 3, 2]]
[[1, 3, 'P'], [3, 3, 'N'], [0, 2, 'K'], [2, 1, 'B'], [2, 0, 'R'], [3, 0, 'Q']]
Çıkış 6:
[[[3,0], [2,0]], [[2,0], [2,1]], [[3,3], [2,1]], [[2,1], [1,3]], [[0,2], [1,3]]]
[["R", [2, 0], [1, 1]], ["N", [1, 1], [3, 3]]]