Dice Cricket ist ein Spiel, das ich als Kind kennengelernt habe und seit Jahren als Zeitvertreib verwende. Ich konnte keine Wikipedia-Seite finden, daher erkläre ich die folgenden Regeln.
Würfel-Kricket-Regeln
Prämisse
Dice Cricket ist ein Spiel , ähnlich wie ein Spiel von Scoring Cricket , wie Sie es sehen , aber anstatt zu beobachten und Aufzeichnen des Ergebnisses, Sie rollen einen Würfel und Aufzeichnen des Ergebnisses.
Die Ergebnisse werden in einer Tabelle aufgezeichnet, die unten angezeigt wird.
Anzeige
Dice Cricket verwendet eine bestimmte Anzeige, um alle Informationen anzuzeigen, die gerade geschehen.
Die Tabelle enthält 11 Zeilen. Jede Reihe repräsentiert einen Teig. Das Layout der Zeile wird unten erläutert.
+------+------------------------------+---------+-----+
| Name | Runs | How Out |Score|
+------+------------------------------+---------+-----+
- Name: Der Name muss eine Zeichenfolge sein, die ausschließlich aus Groß- oder Kleinbuchstaben besteht
- Runs: Ein Schlagmann kann 30 Bälle treffen. Jeder Ball kann einer sein
1 2 4 6 . /
. Dies wird nachfolgend näher erläutert - How Out: So wie der Teig raus war. Kann einer sein von
Bowled, LBW (Leg Before Wicket), Caught, Retired or Not Out
- Punktzahl: Die Summe aller Zahlen in
Runs
Wie das Spiel funktioniert
In einem Spiel befinden sich immer 2 Kämpfer auf dem Spielfeld. Der erste Spieler ist standardmäßig der aktuelle Schlagmann und der zweite der "aus" Schlagmann.
Ein Spiel besteht aus "Bällen": Jeder Ball in einem Cricketspiel wird durch einen Würfelwurf dargestellt. Jede Rolle führt einen anderen Befehl aus:
- 1,2,4 und 6 sorgen dafür, dass der Teig so viele Punkte erzielt. Wenn 1 gewürfelt wird, wird der aktuelle Schlag zum "Aus" Schlag und der "Aus" Schlag wird zum aktuellen Schlag
- 3 ist eine "Punktekugel", was bedeutet, dass nichts passiert. Es wird in der
Runs
Sektion als.
und mit 0 dargestellt. Es0
darf nicht mit A dargestellt werden. - 5 ist ein Wicket. Wenn 5 gewürfelt wird, ist der aktuelle Schlag "out". Dies bedeutet, dass a
/
zu den Läufen hinzugefügt wird und der Schlag von da an keine Läufe mehr erzielen kann. Der Schlagmann wird dann gegen den nächsten Schlagmann getauscht, der nicht geschlagen hat. DerHow Out
Abschnitt ist eine zufällige Auswahl der möglichen Auswege:Bowled, LBW, Caught
Beispiel für ein Wicket (dies dient nur der Übersichtlichkeit, es wird nicht so ausgegeben)
player a is on 4,6,2,6,4
player b is on 6,4,2,6,6
player c hasn't batted
player a is current batter
WICKET!!!
player a is on 4,6,2,6,4,/
player b in on 6,4,2,6,6
player c is on NOTHING
player c is current batter
Alle 6 Bälle wechseln die beiden Schläger; Der aktuelle Teig wird zum "aus" Teig und der "aus" Teig wird zum aktuellen Teig
Wenn der Runs
Abschnitt gefüllt ist (30 Bälle), ist der Teig leer und der How Out
Abschnitt ist auf eingestellt Retired
. A /
steht nicht am Ende der Runs
Box.
Tatsächliche Herausforderung (ja, all das waren die Spielregeln)
Ihre Herausforderung besteht darin, eine vollständige Tabelle (wie das Beispiel am Ende) mit einer Liste von Namen auszugeben. Der Inhalt der Ausgabe sollte nur die Tabelle und / oder führende oder nachfolgende Leerzeichen enthalten.
Regeln
- Standardlücken sind nicht zulässig
- Alle 11 Spieler sollten etwas in der
Runs
Sektion haben. - Es kann nur 1 Spieler sein
Not Out
. Jeder andere Spieler, der nicht im Ruhestand ist, sollte keine Wahl haben[Bowled, LBW, Caught]
- Die Namen können eine beliebige Länge zwischen 1 und 6 haben, die dem regulären Ausdruck entspricht
A-Za-z
- Die letzte Zeile in der Tabelle sollte die Gesamtzeile sein (siehe Beispiel)
- Sie müssen den Text in der Tabelle in keiner Weise ausrichten, aber die Zeilen- und Spaltentrennzeichen müssen ausgerichtet sein.
Beispiel
Input:
['Fred', 'Sonya', 'David', 'Ben', 'Cody', 'Hazel', 'Nina', 'Kim', 'Cath', 'Lena', 'Will']
Output:
+------+------------------------------+---------+-----+
| Name | Runs | How Out |Total|
+------+------------------------------+---------+-----+
|Fred |.662/ | Caught | 14 |
+------+------------------------------+---------+-----+
|Sonya |1164/ | Caught | 12 |
+------+------------------------------+---------+-----+
|David |/ | LBW | 0 |
+------+------------------------------+---------+-----+
|Ben |424/ | LBW | 10 |
+------+------------------------------+---------+-----+
|Cody |62/ | Bowled | 8 |
+------+------------------------------+---------+-----+
|Hazel |/ | LBW | 0 |
+------+------------------------------+---------+-----+
|Nina |161.6226166..44261442/ | Caught | 64 |
+------+------------------------------+---------+-----+
|Kim |11/ | Caught | 2 |
+------+------------------------------+---------+-----+
|Cath |6.21/ | LBW | 9 |
+------+------------------------------+---------+-----+
|Lena |/ | Bowled | 0 |
+------+------------------------------+---------+-----+
|Will |2 | Not Out | 2 |
+------+------------------------------+---------+-----+
| Total Runs | 121 |
+-----------------------------------------------+-----+
Antworten:
Python 3 ,
650621582572588 BytesProbieren Sie es online!
Nun, es ist schon über 24 Stunden her und ich habe ungefähr eine Stunde gebraucht, um hochzukommen, also hoffe ich, dass ich niemanden mehr verpasse und seit einiger Zeit nicht mehr in Python Golf gespielt habe das zweite Mal habe ich eine meiner eigenen Fragen mit einer langen Python-Antwort beantwortet)
Bitte zögern Sie nicht, Golf-Vorschläge zu posten, Python ist nicht meine beste Sprache zum Golfen.
-68 Bytes dank FlipTack !
-8 Bytes dank Mr. Xcoder
+16 Bytes aufgrund eines Fehlers
quelle
print
anstelle vonP
. 2)sum
kann einmap
Objekt direkt aufnehmen , ohne es in eine Liste umwandeln zu müssen. 3) Anstattyield x
zweimal zu schreiben , warum nichtyield x
und dann bei Bedarf pausieren? 4)T=0
könnte in den Funktionsheader eingefügt werden. 5) In Ihrer letzten Funktion haben Sie mehrere Zeilenumbrüche verwendet, in denen Sie nur eine Zeile mit Semikolons verwenden konnten, z. B. die ersten drei Anweisungen, die letzten drei Anweisungen und die Anweisungen in der for-Schleife.s
erheblich Golf spielen ...def s(i=30):
und dannwhile i:x=choice('12.4/6');yield x;i=('/'!=x)*~-i
. Außerdem rufen Sie nuro()
einmal auf, sodass Sie es nicht einmal deklarieren müssen. Verwenden Sie einfach die Anweisung direkt.b
^^Kohle ,
277255 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Lesen Sie die 11 Namen ein (Eingabe ist flexibel: JSON, durch Leerzeichen oder Zeilenvorschub getrennt) und erstellen Sie ein Array
q
von 11 Battern, die durch ihre Bälle (als Array), Status (als Ganzzahl) und Namen dargestellt werden.Erstellen Sie eine umgekehrte Kopie der Batters
h
. Dies ist die Darstellung der nicht ausgefallenen Batters. Die letzten beiden Elemente sind die Off- und Current-Batters.Wiederholen, solange mindestens zwei Batters verfügbar sind.
Extrahieren Sie den aktuellen Teig zu
i
.Erzeugen Sie einen zufälligen Ball in
z
.Fügen Sie es mithilfe der vordefinierten leeren Liste zur Gesamtliste der Bälle hinzu
u
.Fügen Sie es zu den Bällen des aktuellen Teigs hinzu.
Wenn der Ball ein ist
/
, wird ein zufälliger Status generiert.2..4
Wenn dies der 30. Ball des Schlägers ist, wird der Status auf "1
Sonst" gesetzt0
.Wenn der Teig leer ist, speichern Sie den Status des Teigs, andernfalls setzen Sie den Teig wieder ein.
Wenn noch mindestens zwei Batters übrig sind und der Teig ausgefallen ist oder 6 Bälle gespielt wurden, dann ...
... nehmen Sie die aus und aktuellen Batters und legen Sie sie in umgekehrter Reihenfolge zurück.
Drucken Sie die Kopfzeile.
Schlinge dich über die Zweige.
Drucken Sie den Namen des Teigs.
Drucken Sie die Kugeln des Teigs.
Drucken Sie den Batteriestatus aus, indem Sie die Zeichenfolge indizieren, die
Not OutRetiredBowled Caught LBW
in Teilzeichenfolgen der Länge 7 unterteilt ist.Drucken Sie die Punktzahl des Teigs aus.
Gehen Sie zum Anfang der übernächsten Zeile.
Gesamtsumme drucken.
Zeichne Kästchen um alles.
quelle