Tri tarot pour les gens qui s'ennuient
Posted: 01 Jan 2021, 10:37
La flemme de réexpliquer après avoir perdu mon post dans une erreur sql quelconque donc je colle juste des trucs qui restent dans mon clipboard
Si vous connaissez pas le tarot, allez sur wikipedia
Bon GOG Galaxy met 20 ans à synchroniser mes sauvegardes après que j'aie fait des trucs chelous sur mon ordi donc je rééxplique
Il y a 4 couleurs, cœurs,trèfles,carreaux,piques (hearts,clubs,diamonds,spades). Chacune a les cartes de 1 à 10, ainsi que les figures (faces) valet,cavalier,reine,roi (jack,knight,queen,king).
En plus de ça il y a les atouts (trumps) de 1 à 21, plus l'excuse qu'on va compter comme l'atout 0.
Bref, ordonner ses cartes d'abord par couleur, et les ordonner de manière croissante à l'intérieur des couleurs est pratique mais ça revient à un tri lexicographique comme disait Bisam hier (donc 0 défi) et ça donne des indications à vos adversaires sur les cartes qu'il vous reste.
Le tri que je propose est
- regrouper par couleur, en triant les couleurs dans l'ordre cœurs, trèfles, carreaux, piques, atouts (ordre arbitraire pour standardiser et valider )
- à l'intérieur des couleurs trier les suites dans l'ordre croissant (c'est à dire que la suite 1,2,3,4 est à mettre avant la suite 7,8,9)
- à l'intérieur des suites, trier de manière décroissante (c'est à dire en fait pas 1,2,3,4 mais 4,3,2,1, donc pas 1,2,3,4,7,8,9 mais 4,3,2,1,9,8,7)
- sauf les figures qu'on met toujours dans l'ordre croissant, et sauf excuse et 1 d'atout qu'on met toujours au début des atouts (dans cet ordre) et le 21 à la fin
Exemples rapides :
♥️5 ♥️4 ♥️9 ♥️8 ♠️1 ♠️3 ♠️5
♥️2 ♥️4 ♥️8 ♠️1 ♠️3 ♠️5 (il n'y a pas de suites)
Base de code python.
Si vous connaissez pas le tarot, allez sur wikipedia
Bon GOG Galaxy met 20 ans à synchroniser mes sauvegardes après que j'aie fait des trucs chelous sur mon ordi donc je rééxplique
Il y a 4 couleurs, cœurs,trèfles,carreaux,piques (hearts,clubs,diamonds,spades). Chacune a les cartes de 1 à 10, ainsi que les figures (faces) valet,cavalier,reine,roi (jack,knight,queen,king).
En plus de ça il y a les atouts (trumps) de 1 à 21, plus l'excuse qu'on va compter comme l'atout 0.
Bref, ordonner ses cartes d'abord par couleur, et les ordonner de manière croissante à l'intérieur des couleurs est pratique mais ça revient à un tri lexicographique comme disait Bisam hier (donc 0 défi) et ça donne des indications à vos adversaires sur les cartes qu'il vous reste.
Le tri que je propose est
- regrouper par couleur, en triant les couleurs dans l'ordre cœurs, trèfles, carreaux, piques, atouts (ordre arbitraire pour standardiser et valider )
- à l'intérieur des couleurs trier les suites dans l'ordre croissant (c'est à dire que la suite 1,2,3,4 est à mettre avant la suite 7,8,9)
- à l'intérieur des suites, trier de manière décroissante (c'est à dire en fait pas 1,2,3,4 mais 4,3,2,1, donc pas 1,2,3,4,7,8,9 mais 4,3,2,1,9,8,7)
- sauf les figures qu'on met toujours dans l'ordre croissant, et sauf excuse et 1 d'atout qu'on met toujours au début des atouts (dans cet ordre) et le 21 à la fin
Exemples rapides :
♥️5 ♥️4 ♥️9 ♥️8 ♠️1 ♠️3 ♠️5
♥️2 ♥️4 ♥️8 ♠️1 ♠️3 ♠️5 (il n'y a pas de suites)
Base de code python.
- Code: Select all
from enum import Enum, IntEnum, auto
import random
class Faces(IntEnum):
Jack = 11
Knight = auto()
Queen = auto()
King = auto()
class Colors(Enum):
hearts = auto()
clubs = auto()
diamonds = auto()
spades = auto()
trump = auto()
class Card:
def __init__(self, color, value):
self.color = color
self.value = value
def __lt__(self, other):
if self.color != other.color:
return self.color < other.color
return self.value < other.value
def deckAsString(deck):
return '\n'.join([f'{c.color.name}-{c.value.name if isinstance(c.value, Faces) else c.value}' for c in deck])
def printDeck(deck):
print(deckAsString(deck))
# generate the whole deck
fulldeck = []
for color in Colors:
if color is Colors.trump:
# generate from 0 to 21 (0 being excuse)
for i in range(22): fulldeck.append(Card(color, i))
else:
# generate from 1 to 10 and the 4 faces
for i in range(10): fulldeck.append(Card(color, i+1))
for face in Faces: fulldeck.append(Card(color, face))
#printDeck(fulldeck)
# pick 24
deck = [c for c in fulldeck]
random.shuffle(deck)
while len(deck) != 24:
deck.pop()
printDeck(deck)