Je regardais le championnat du monde de snooker et ça m'a fait me demander ..
Score de snooker
Dans le jeu de snooker, il y a certaines règles que vous devez également respecter:
- Lorsqu'il y a des boules rouges sur la table, pendant votre tour, vous devez d'abord mettre une boule rouge en pot
- Après avoir mis chaque balle rouge en pot, vous devez mettre une balle colorée (pas rouge) en pot (la balle colorée en pot est ensuite replacée sur la table)
- Une fois que toutes les boules rouges sont en place (il y en a 15), vous pouvez d'abord choisir une balle de couleur, puis vous commencez avec la balle ayant le score le plus bas et vous progressez jusqu'à la balle ayant le score le plus élevé (celles-ci ne sont pas remplacées)
- Ne rempoter à aucun moment met fin à votre tour.
- Points par balle
- Boule rouge: 1 point
- Ballon jaune: 2 points
- Boule verte: 3 points
- Balle brune: 4 points
- Boule bleue: 5 points
- Boule rose: 6 points
- Boule noire: 7 points
La question
Vous commencez avec une table avec toutes les boules encore dessus - 15 rouges et une de chacune des autres boules colorées - et vous recevez le score d'un joueur de snooker après son premier tour, comment ont-ils pu y arriver But?
L'entrée sera un score allant de 1 à 147. Vous pouvez choisir s'il s'agit d'un entier ou d'une chaîne. La sortie doit correspondre aux différentes combinaisons de nombre de fois où vous avez mis chaque balle en pot.
Cas de test:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
Règles:
- Vous pouvez choisir d'afficher les possibilités divisées par une nouvelle ligne ou un séparateur quelconque (/ ,; | \ ou même d'autres qui me manquent)
C'est codegolf, donc le code le plus court l'emporte.
"5r 3b 2g"
-être pourrait-il être sorti[5,0,2,0,3,0,0]
aussi longtemps que cela est cohérent?b
pour le brun etbl
pour le bleu; alorsbk
pour le noir? Pourrions-nous utilisern
,e
etk
(dernières lettres) pour ces trois? Que diriez-vousdleruna
d'identifier les huit couleurs (3e lettre de chacune)?Réponses:
Gelée , 66 octets
Eh bien, c'est trop lent pour TIO maintenant!
... voici donc une liste des 2636 façons de produire exactement 100 produites hors ligne.
... et voici une version qui s'y déroulera avec seulement SIX rouges (break maximum = 75)
Imprime une grille de nombres chaque ligne étant une liste de valeurs de balle séparées par des espaces (par exemple, trois rouges et deux verts seraient sur une ligne
1 1 1 3 3
).Pour une version groupée qui imprime des lignes de comptage avec les noms complets des boules, à 102 octets:
Comment?
la source
JavaScript (ES7),
188180178 octetsRenvoie un tableau de tableaux (triés du rouge au noir).
Commenté
Remarque : Cette version n'inclut pas la dernière optimisation
p
(maintenant initialisée à 7), ce qui rend la logique plus difficile à comprendre.Exemple de sortie
Voici la sortie pour n = 140:
Démo
C'est trop lent pour un extrait. Vous pouvez essayer ici à la place. (Vous pouvez recevoir une ou deuxalertes de script qui ne répondent pas , mais elles devraient finir par se terminer.)
la source