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%.
źródło
Odpowiedzi:
Oktawa,
776688 bajtów688:
{'foo','bar'}{i}
zamiast nieco dłuższej['foo';'bar'](i,:)
Nadal żaden z wdrożonych bonusów.
Korzysta z systemu ICCF.
Nie może być żadnych spacje w opisie ruchu i pole źródłowy i docelowy muszą być oddzielone pojedynczym spacji, więc
42 44
jest prawidłowa, natomiast42 44
i42 44
nie są.Nieco golfowa wersja:
źródło
Rubin,
715696693683 bajtyJest to dość niechlujne rozwiązanie, ale w tej chwili nie mam cierpliwości, aby go dalej sprzątać.
Żadna z premii nie została wykonana.
Korzysta z systemu ICCF.
źródło
Python,
1136890753 bajtówPrzepraszamy za częściową odpowiedź, ale jestem nowicjuszem i naprawdę podobało mi się to wyzwanie. Wiem, że to chyba bardzo gadatliwe, ale oto mój wstępny szkic:
źródło
=
, a jeśli afor
lubif
tylko ma jedną linię w środku, wszystko może przejść do tej samej linii. Spójrz na Wskazówki dotyczące gry w golfa w Pythonie .