Cribbage ist ein interessantes Spiel, weil Sie ein bestimmtes Brett benötigen, um Ihr Spiel zu punkten. Ein Cribbage Board sieht so aus:
Beachten Sie, dass sich die erste Spalte beim Hochfahren links befindet, beim Runterfahren rechts und beim Hochfahren wieder links.
Und so sieht eine schlecht gezeichnete gerenderte ASCII-Grafik einer Cribbage-Tafel aus:
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Hier ist Ihre Herausforderung:
Schritt 1: Zeichnen Sie diese ASCII-Grafik einer Cribbage-Tafel. Das nachgestellte Leerzeichen ist in Ordnung, sofern kein sichtbarer Unterschied besteht.
Schritt 2: Zeigen Sie bei drei Ganzzahlen als Eingabe jeden Stift im richtigen Loch an. Die Stifte können 0-indiziert oder 1-indiziert sein. Die Eingaben werden [0-121]
inklusiv sein. Sie können diese Eingaben auf jede vernünftige Weise verwenden, z. B. 3 separate Eingaben, ein Array, Befehlszeilenargumente usw. Hier ist ein Beispiel für die Eingabe (0, 37, 100)
(1-indiziert):
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ 2 * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|3|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
1 * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Schritt 3: Das Ganze ausgeben.
Test IO:
Da jeder von diesen ziemlich hoch ist, werde ich nur 2 einschließen, aber Sie können mehr an diesem Github-Kern sehen .
#Input: (56, 56, 56)
#Output:
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |3|2|1| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
#Input: (120, 89, 23)
#Output:
* * *
----------- -------
/ * \ |1|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|3| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|2|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Es gelten Standardlücken und die kürzeste Antwort in Bytes gewinnt!
Antworten:
Python 3, 496 Bytes
Laufen (oder Import) erstellt der Code eine Funktion , die mit den drei Spielern Noten genannt wird:
f(5, 38, 53)
.Etwas ungolfed version
z
ist eine codierte / komprimierte Version der leeren Cribbage-Karte.subs
Enthält eine durch Kommas getrennte Liste der zu dekodierenden / dekomprimierenden Substitutionenz
. In jeder Ersetzung ist der erste Buchstabe die zu ersetzende Teilzeichenfolge und der Rest der Zeichenfolge die Ersetzung. Diefor y in subs.split(','):
Schleife führt die Substitutionen durch.Z|*|*|*|
Verursacht beispielsweise, dass alle 'Z' durch ersetzt werden|*|*|*|
. Die Komprimierungsmethode wurde wegen ihrer Einfachheit und Effektivität (besser als die stdlib) verwendet. Aber es könnte wahrscheinlich verbessert oder durch etwas Besseres ersetzt werden.Da Python-Strings unveränderlich sind,
b
handelt es sich um eine Liste der Charaktere im Spielplan.R
ist eine Liste, die einen Spieler und eine Punktezahl auf dem ASCII-Spielplan abbildet. Es wird 'L' verwendet. Hierbei handelt es sich um eine Liste oder Zeilennummern, aus denen Zeilennummern für '-------'- Zeilen gelöscht wurden.Ordnet auf ähnliche Weise
C
einen Spieler zu und bewertet eine Spalte auf dem ASCII-Spielplan.Mit
R
undC
kann das richtige Loch im Spielplan auf die Spielernummer eingestellt werden.Zum
print(*b,sep='')
Schluss wird jedes Zeichen gedruckt,b
ohne ein Leerzeichen zwischen benachbarten Zeichen einzufügen. (Spart ein paar Bytes über '' .join)quelle
Matricks ,
1441980 BytesHurra für Esolangs!
Bearbeiten: Komprimiert, indem jede Zahl in einer Schleife eingecheckt wird, um eine Menge Bytes zu sparen. Außerdem wurde der untere Teil "kopiert" (ich brauche eine Umkehrfunktion). Ich habe auch die meisten ASCII-Zeichen durch ihre Rohwerte ersetzt, um ein paar mehr zu sparen. Außerdem habe ich einen Fehler im Interpreter behoben, bei dem die Zahleneingabe nicht richtig funktionierte.
Übernimmt die Eingabe über die Befehlszeile:
python matricks.py <filename> [[]] <num1>,<num2>,<num3> --asciiprint
Matricks ist eine Sprache meiner eigenen Schöpfung. Die Dokumentation befindet sich auf der Github-Seite. Das letzte Update war ein Bugfix, keine neuen Funktionen hinzugefügt oder etwas.
Aufschlüsselung dieser Lösung:
quelle
Python 2, 615 Bytes
Die Funktion wird aufgerufen, indem ein Wörterbuch übergeben wird, das die Ergebnisse enthält. Beispielsweise:
Die Byteanzahl spiegelt das Einrücken der "for x" -Schleife mit Tabulatoren anstelle von Leerzeichen wider.
Erläuterung
Die erste Schleife baut das Board horizontal in eine 57x27-Zeichenfolge mit Spurnummern anstelle von "Löchern" auf.
In der zweiten Schleife wird die Zeichenfolge kopiert und die Zahlen durch Sternchen ersetzt, außer an den Stellen, an denen die Punkte gespeichert sind. Die Zapfenpositionen in den geraden Linien in der Mitte der Spur treten nach hinten aus.
Die dritte Schleife ändert die Ausrichtung in vertikal, korrigiert die Stifte in der mittleren Spur und fügt Zeilenvorschubzeichen hinzu.
Probieren Sie es hier aus
quelle
Batch,
1302109910961079 BytesUngolfed:
quelle
Java,
10591035 BytesUngolfed:
Missbrauch von Formaten (printfs) wie mad, weshalb es wahrscheinlich nicht so klein ist, wie es sein könnte.
quelle