Schreiben Sie den kürzesten Code, der alle möglichen (legalen) Züge des aktuellen Spielers aus einer bestimmten FEN-Zeichenfolge berechnet. Was ist FEN-String? (Wikipedia)
- Kürzester Code gewinnt, Sprache spielt keine Rolle.
- Ausgabebewegungen müssen den Schachbewegungsregeln entsprechen, mit Ausnahme von En-Passant- , Rochade- und Bauernförderung.
- Ignoriere Schach, Schachmatt und Patt, König kann auch nicht gefangen genommen werden.
Sie können Ausgänge unterschiedlich eingestellt , wie Sie (zum Beispiel: wollen A2-A4
, A2A4
, a2a4
, a2->a4
...)
Testfälle:
# EINGANG 1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq - 0 1
# AUSGABE 1 A2-A4, A2-A3, B2-B4, B2-B3, C2-C4, C2-C3, D2-D4, D2-D3, E2-E4, E2-E3, F2-F4, F2-F3, G2-G4, G2-G3, H2-H4, H2-H3, B1-A3, B1-C3, G1-F3, G1-H3
# EINGABE 2 7k / 8/8/8/8/8 / PP6 / Q1q4K w - - 0 1
# AUSGABE 2 A1-B1, A1-C1, A2-A3, A2-A4, B2-B3, B2-B4, H1-H2, H1-G1, H1-G2
Antworten:
C - 391 Bytes
Übernimmt Eingaben als Befehlszeilenargumente und druckt mit den Quadraten von 0 bis 63 auf stdout.
OK, ich hatte ein paar Minuten Zeit und habe versucht, alle Bits zu löschen, die sich auf die Erkennung von Schecks beziehen. Ich denke, es ist jetzt aber nicht sehr effizient ...
478-Byte-Prüferkennungsversion
quelle
also here is how test case input boards look like
) veröffentlicht wurde. Angesichts der Position im Bild war die ursprüngliche Testfallausgabe gemäß den Regeln korrekt.Java 1455
quelle
Python 553
649678Der Tabulatorzeichen-Einzug mit zwei Leerzeichen spart 5 Byte.
Mir fällt ein, dass man es wahrscheinlich dazu bringen kann, vernünftige Züge zu einem anständigen Spiel zu machen und es unter 1024 Bytes zu halten :) Ich fing an, durch anderes Schach zu schauen Fragen, aber es scheint nicht zu einem codegolf Schachengine Frage zu sein ...
quelle
B1C3
undH2H3
im ersten Beispiel in der Frage gezeigt.H2H3
, ich meinteG1H3
- mit anderen Worten, Ihre weißen Ritter biegen nur nach links ab.Python
638637 (482?) BytesHinweis: Nach dem
def O(y):
Zeilenumbruch steht ein Tabulatorzeichen vor dem Zeilenumbruchif
Hinweis: Mit dem zlib-Modul können Sie einen gültigen Python-Quellcode von 482 Bytes erhalten, indem Sie einfach die eigentliche Quelle komprimieren:
quelle
JavaScript (E6) 481
492 550Bearbeiten Es wurde ein böser Fehler beim Bewegen von Rittern behoben. Eine Menge Arbeit, um die Anzahl der Bytes gleich zu halten.
(Aus Gründen der Lesbarkeit werden führende Leerzeichen und Zeilenumbrüche nicht berücksichtigt.)
Weniger Golf
Test in der FireFox / FireBug-Konsole
Ausgabe
quelle
JAVA
631599594Es wurde ein Fehler in der 599-Byte-Version behoben (danke Jack, dass Sie darauf hingewiesen haben!) Und der Code auf 594 Byte verkürzt.
Kompilieren:
javac F.java
Ausführen:
java F 6pk/6pp/8/8/8/p7/PP4pp/Q2p2pK w - - 0 1
Ausgabe:
B2B3 B2B4 B2A3 A1B1 A1C1 A1D1 H1H2 H1G1 H1G2
quelle
3Q4/p4r1k/P4pp1/4P3/5n2/3P4/4BbbP/RN3KN1 w - - 0 0
ich sehe keine BewegungenF1F2
oder kannF1G2
der König sie einfangen?