Ich habe mir die Snooker-Weltmeisterschaft angeschaut und mich gewundert ..
Snooker-Wertung
Im Snooker-Spiel gibt es bestimmte Regeln, die Sie ebenfalls einhalten müssen:
- Wenn sich rote Bälle auf dem Tisch befinden, müssen Sie in Ihrem Zug zuerst einen roten Ball werfen
- Nachdem Sie jede rote Kugel eingetopft haben, müssen Sie eine farbige (nicht rote) Kugel eintopfen (die eingetopfte farbige Kugel wird dann wieder auf den Tisch gelegt).
- Nachdem alle roten Kugeln aufgebraucht sind (es gibt 15), können Sie zuerst eine farbige Kugel auswählen und dann mit der Kugel mit der niedrigsten Punktzahl beginnen und sich bis zur Kugel mit der höchsten Punktzahl vorarbeiten (diese wird nicht ersetzt).
- Wenn Sie zu keinem Zeitpunkt eintopfen, ist Ihr Zug beendet.
- Punkte pro Ball
- Rote Kugel: 1 Punkt
- Gelbe Kugel: 2 Punkte
- Grüner Ball: 3 Punkte
- Braune Kugel: 4 Punkte
- Blaue Kugel: 5 Punkte
- Rosa Ball: 6 Punkte
- Schwarzer Ball: 7 Punkte
Die Frage
Sie beginnen mit einem Tisch mit allen noch darauf befindlichen Bällen - 15 roten und jeweils einem der anderen farbigen Bälle - und erhalten nach ihrem ersten Zug die Punktzahl eines Spielers im Snooker. Wie hätten sie dies erreichen können? Ergebnis?
Die Eingabe erfolgt als Punktzahl zwischen 1 und 147. Sie können wählen, ob es sich um eine Ganzzahl oder eine Zeichenfolge handelt. Die Ausgabe sollte die unterschiedliche Anzahl von Kombinationen sein, mit denen Sie jede Kugel eingetopft haben.
Testfälle:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
Regeln:
- Sie können wählen, ob Sie die durch eine neue Zeile oder ein Trennzeichen geteilten Möglichkeiten ausgeben möchten (/ ,; | \ oder sogar andere, die mir fehlen).
Das ist Codegolf, also gewinnt der kürzeste Code.
"5r 3b 2g"
also ausgegeben werden als[5,0,2,0,3,0,0]
(solange dies konsistent ist)?b
für Braun undbl
für Blau; alsobk
für schwarz? Können wir verwendenn
,e
undk
(letzter Buchstaben) für diese drei? Wie wäredleruna
es, alle acht Farben zu identifizieren (jeweils 3. Buchstabe)?Antworten:
Jelly , 66 Bytes
Nun, für TIO ist es jetzt zu langsam!
... also hier ist eine Auswahl der 2636 Möglichkeiten, um genau 100 offline zu produzieren.
... und hier ist eine Version, die dort mit nur sechs Rottönen läuft (maximale Pause = 75)
Gibt ein Zahlenraster aus, wobei jede Zeile eine durch Leerzeichen getrennte Liste von Kugelwerten darstellt (z. B. drei rote und zwei grüne in einer Zeile
1 1 1 3 3
).Für eine Version mit Wertegruppen, die Zählzeilen zusammen mit den vollständigen Namen der Bälle mit 102 Bytes ausgibt:
Wie?
quelle
JavaScript (ES7),
188180178 BytesGibt ein Array von Arrays zurück (von rot nach schwarz sortiert).
Kommentiert
Hinweis : Diese Version enthält nicht die letzte Optimierung von
p
(jetzt auf 7 initialisiert), was das Verständnis der Logik erschwert.Beispielausgabe
Unten ist die Ausgabe für n = 140:
Demo
Dies ist zu langsam für einen Ausschnitt. Sie können es stattdessen hier versuchen . (Möglicherweise erhalten Sie ein oder zwei nicht reagierende Skriptwarnungen, die jedoch möglicherweise abgeschlossen werden sollten.)
quelle