W tym wyzwaniu musisz narysować szachownicę poniżej i pozwolić na wykonanie ruchów.
1. Rysunek
Każdy biały kwadrat ma 5 x 9 pól.
Każdy czarny kwadrat ma 5 x 9 dwukropków.
Plansza jest otoczona granicą dwukropków.
Elementy mają szerokość 5 znaków i siedzą w dolnym rzędzie kwadratu pośrodku.
Pionki mają szerokość 4 znaków. Siedzą nieco poza środkiem po prawej stronie, z 3 pustymi kwadratami po lewej i 2 pustymi kwadratami po prawej. Siedzą jedną linię nad dolną częścią kwadratu.
Nie będzie białych znaków poza obszarem planszy, z wyjątkiem opcjonalnego końcowego znaku nowej linii.
Planszę i szachy losuje się dokładnie tak, jak pokazano, z tym wyjątkiem, że:
Możesz
:
zastąpić czarne kwadraty i obramowanie innym symbolem, a czarne czarne kwadraty zastąpić@
innym symbolem (ale nie tym samym, co czarny kwadraty).Jeśli chcesz, możesz przesunąć pionki o jedną postać w lewo.
.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2. Przeprowadzka
Kolumny są oznaczone AH od lewej do prawej i od 1 do 8 od dołu do góry. Użytkownik powinien mieć możliwość wprowadzenia przeniesienia w następującej formie:
<start column><start row><space><destination column><destination row>
Na przykład B1 C3
oznacza przesunięcie rycerza na pole przed pionkiem biskupa (zakładając, że gra się właśnie rozpoczęła).
Alternatywnie można zastosować system ICCF, w którym kolumny są oznaczone od 1 do 8 zamiast od A do H. Tak więc staje się wspomniany wyżej ruch rycerza 21 33
.
Poniższy obraz ( źródło ) wyjaśnia oba systemy:
Ruch zostanie wykonany, a nowa tablica wyświetlona. Wszelkie wynikające z tego schwytanie ma miejsce, gdy poruszający się szachista usunie figurę z pola docelowego z planszy.
Nie ma potrzeby sprawdzania legalnego ruchu szachowego, ponieważ został on omówiony w innych wyzwaniach: Najmniejszy program szachowy i Najmniejszy arbiter szachowy Jeśli użytkownik spróbuje przejść z pustego pola, Twój program lub funkcja powinny zignorować ruch. Jeśli użytkownik próbuje schwytać przyjazny element, możesz zignorować ruch lub zezwolić na uchwycenie nieruchomego elementu.
Nie ma potrzeby wspierania en passant ani castlingu.
Możesz założyć, że dane wejściowe będą dobrze uformowane, tj. Zawsze w formacie opisanym powyżej. Listy zawsze będą w tym samym przypadku, możesz zdecydować, który to przypadek.
3. Punktacja i bonusy
To jest kod golfowy. Najkrótszy kod wygrywa.
-10% premii, jeśli twój program lub funkcja pozwala na promocję. Użytkownik wprowadza trzecie wejście, tym razem jedną z następujących liter: QBR N. To powinno być dozwolone tylko wtedy, gdy ruch kończy się pionkiem w ostatnim rzędzie. Pion jest wymieniany na wskazany element. QBRN.
-10% premii, jeśli twój program lub funkcja realizuje specjalny ruch „cofnij” w celu odwrócenia ruchów (w razie potrzeby cofnij się na początek gry). Oczywiście amatorzy mogą wykonywać nielegalne ruchy i mogą chcieć aby je cofnąć. Możesz zdefiniować dane wejściowe, które użytkownik musi podać, aby wykonać ruch „cofnij” (zawsze musi być taki sam). Zachowanie jest niezdefiniowane, jeśli użytkownik spróbuje cofnąć go poza początkiem gry.
Suma bonusów, tzn. Jeśli wybierzesz oba bonusy, otrzymasz -20%.