Mélanger le jeu de carte (2e défi Ruby)

Le jeu de carte en Ruby a généré, au bureau, quelques discussions très intéressantes. Est-ce qu'il était correct de retirer une carte au hasard? Certains pensent que non, puisqu'en réalité on mélange le jeu de carte et dépendemment du jeux on retire une ou plusieurs cartes de la pile. Donc, puisque plutôt que de mélanger les cartes sur la meilleure façon de procéder je me suis dit qu'un défi en ce sens serait plus à propos (et surtout plus amusant).

Voici, à nouveau, le code pour générer un jeu de 52 cartes.

jeu_de_carte = Array.new
couleurs = ['.co','.ca','.tr','.pi']
numeros = ['1','2','3','4','5','6','7','8','9','10','v','d','r']
couleurs.each {|couleur|
numeros.each {|nombre|
jeu_de_carte << (nombre + couleur)
}
}

Et maintenant, le défi: Êtes-vous capable de mélanger le jeu de carte? Avec moins de lignes?


Alors, comment ferez-vous? Inscrivez votre solution dans les commentaires! (Pas besoin d'être inscrit pour le faire... nous modérons les commentaires... i.e. spammer, vous perdez votre temps.)

p.s. Si vous avec une meilleure façon de générer le jeux de carte en Ruby j'serais vraiment curieux de la voir.

Jean-Marc – Jeu, 2007 – 02 – 22 07:44

Ma réponse ;)

Hello!

ma réponse est plutôt simple.

jeu_de_carte.sort! {|x,y| rand <=> rand}

Et en effets d'utiliser sort_by permets d'obtenir le même effet avec beaucoup plus de clarté.

Jean-Marc – Mer, 2007 – 03 – 14 22:25

Réponse au défi

Bonjour !

Une solution possible est :
jeu_de_carte.replace(jeu_de_carte.sort_by{rand})

ChimEric

Anonymous – Lun, 2007 – 03 – 12 07:27

Ding - Bonne réponse

Bien j'étais septique au début, mais j'ai essayé votre réponse. La meilleur, ça marche et c'est même plus court que la démonstration de Jean-Marc qu'il se doît d'afficher bientôt.

Je vais relire ma documentation sur Enumerable. Ça m'apprendra à me fier à de la veille documentation.

Merci pour la démonstration.

Hugues – Lun, 2007 – 03 – 12 21:14

jeu de carte different

Je propose ce jeu de carte ci, il est plus cool.

jeu_de_carte = Array.new
couleurs = ["\3","\4","\5","\6"]
numeros = ['1','2','3','4','5','6','7','8','9','10','v','d','r']
couleurs.each {|couleur|
numeros.each {|nombre|
jeu_de_carte << nombre + couleur
}
}

--Benoit

Benoit – Ven, 2007 – 02 – 23 15:53

Vraiment cool!

Hello Ben!

C'Est vraiment cool en effets sur MSWindows ;) j'viens de l'essayer sur un Linux et les symboles n'était pas visible :-(

Jean-Marc – Sam, 2007 – 02 – 24 11:12