Bei dieser Herausforderung musst du das Schachbrett unten zeichnen und Züge zulassen.
1. Zeichnen
Jedes weiße Quadrat hat 5x9 Felder.
Jedes schwarze Quadrat hat 5x9 Doppelpunkte.
Das Brett ist von einem Rand aus Doppelpunkten umgeben.
Die Teile sind 5 Zeichen breit und befinden sich in der unteren Reihe des Quadrats in der Mitte.
Die Bauern sind 4 Zeichen breit. Sie sitzen etwas außerhalb der Mitte rechts, mit 3 leeren Quadraten links und 2 leeren Quadraten rechts. Sie sitzen eine Zeile über dem unteren Rand des Platzes.
Außerhalb des Bereichs der Tafel darf kein Leerzeichen vorhanden sein, mit Ausnahme einer optionalen nachgestellten Newline.
Das Brett und die Schachfiguren sind genau wie gezeigt zu zeichnen, außer dass:
Sie können
:
die schwarzen Quadrate und den Rand durch ein anderes Symbol ersetzen@
und die schwarzen Teile durch ein anderes Symbol ersetzen (jedoch nicht das gleiche Symbol, das für die schwarzen Quadrate verwendet wird).Wenn Sie möchten, können Sie die Bauern um einen Charakter nach links verschieben.
.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2. Bewegen
Die Spalten sind von links nach rechts mit AH und von unten nach oben mit 1 bis 8 gekennzeichnet. Der Benutzer muss in der Lage sein, einen Zug in folgender Form einzugeben:
<start column><start row><space><destination column><destination row>
Zum Beispiel B1 C3
bedeutet, den Ritter auf das Feld vor dem Bauern des Bischofs zu bewegen (vorausgesetzt, das Spiel hat gerade erst begonnen).
Alternativ kann das ICCF-System verwendet werden, bei dem die Spalten mit 1 bis 8 anstelle von A bis H gekennzeichnet sind. So wird der oben erwähnte Ritterzug 21 33
.
Das folgende Bild ( Quelle ) verdeutlicht beide Systeme:
Der Zug soll ausgeführt und die neue Tafel angezeigt werden. Jede resultierende Erfassung muss erfolgen, indem der sich bewegende Schachspieler den Schachspieler auf dem Zielfeld vom Brett entfernt.
Es ist nicht erforderlich, nach einem legalen Schachzug zu suchen, da dies in anderen Herausforderungen behandelt wurde: Kleinstes Schachprogramm und kleinster Schachschiedsrichter Wenn der Benutzer versucht, sich von einem leeren Feld zu bewegen, sollte Ihr Programm oder Ihre Funktion den Zug ignorieren. Wenn der Benutzer versucht, ein freundliches Teil zu erfassen, können Sie entweder die Bewegung ignorieren oder zulassen, dass das stationäre Teil erfasst wird.
Es besteht keine Notwendigkeit, en passant oder Rochade zu unterstützen.
Sie können davon ausgehen, dass die Eingabe gut geformt ist, dh immer in dem oben beschriebenen Format. Briefe werden immer im selben Fall sein, Sie können entscheiden, welcher Fall das ist.
3. Wertung und Boni
Das ist Code Golf. Der kürzeste Code gewinnt.
-10% Bonus, wenn Ihr Programm oder Ihre Funktion Werbung ermöglicht. Der Benutzer gibt eine dritte Eingabe ein, diesmal einen der folgenden Buchstaben: QBR N. Dies sollte nur zulässig sein, wenn der Zug mit einem Bauern in der letzten Zeile endet. Der Bauer wird gegen das genannte Stück ausgetauscht. QBRN.
-10% Bonus, wenn Ihr Programm oder Ihre Funktion einen speziellen "Rückgängig" -Zug für die Umkehrung von Zügen implementiert (ggf. bis zum Beginn des Spiels). Offensichtlich können Amateurspieler illegale Züge ausführen, und sie möchten dies möglicherweise um sie rückgängig zu machen. Sie können die Eingabe definieren, die der Benutzer für diesen "Rückgängig" -Zug geben muss (sie muss immer gleich sein). Das Verhalten ist undefiniert, wenn der Benutzer versucht, über den Beginn des Spiels hinaus rückgängig zu machen.
Die Bonussumme, dh wenn Sie sich für beide Boni entscheiden, erhalten Sie -20%.
quelle
Antworten:
Oktave,
776688 Bytes688:
{'foo','bar'}{i}
anstelle von etwas länger['foo';'bar'](i,:)
Immer noch keiner der Boni implementiert.
Verwendet das ICCF-System.
Es dürfen keine führenden Leerzeichen in der Bewegung Beschreibung und die Quell- und Zielfeld durch einen einzelnen Leerzeichen getrennt werden müssen, so
42 44
richtig ist, während42 44
und42 44
sind es nicht.Etwas ungolfed Version:
quelle
Rubin,
715696693683 BytesDies ist eine ziemlich unordentliche Lösung, aber ich habe im Moment nicht die Geduld, sie weiter aufzuräumen.
Keiner der Boni gemacht.
Verwendet das ICCF-System.
quelle
Python,
1136890753 BytesEntschuldigung für die teilweise Antwort, aber ich bin ein Neuling und ich habe diese Herausforderung wirklich genossen. Ich weiß, dass es wahrscheinlich sehr ausführlich ist, aber hier ist mein grober Entwurf:
quelle
=
, und wenn einfor
oder einif
nur eine Zeile enthält, kann alles auf derselben Zeile stehen. Schauen Sie sich Tipps zum Golfen in Python an .