Retirer une carte au hasard (1er défi Ruby)

Hugues et moi venons de discuter d'Array en Ruby, ce dernier voulait retirer un élément au hasard d'une liste.

Donc, voici le défi... comment retirer aléatoirement une carte du jeu (le jeu étant représenté par un tableau).

Voici 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)
}
}

Alors, comment ferez-vous? Inscrivez votre solution dans les commentaires!

Jean-Marc – Jeu, 2007 – 02 – 15 17:16

Une solution en une ligne!

Voici ma solution... en une ligne ;)

puts jeu_de_carte.slice!(rand(jeu_de_carte.size))

Anonymous – Lun, 2007 – 02 – 19 11:50

Ma solution en une ligne.

- Selection d'une carte:

uneCarte = jeu_de_carte.delete_at(rand(jeu_de_carte.size()))

- le test complet:

puts jeu_de_carte
puts '---- effacer ----'
uneCarte = jeu_de_carte.delete_at(rand(jeu_de_carte.size()))
puts '---- la liste ----'
puts jeu_de_carte
puts jeu_de_carte.size()
puts '---- ma carte ----'
puts uneCarte

--Benoit

Benoit – Lun, 2007 – 02 – 19 10:11

Bonjour, pas sur que ça

Bonjour, pas sur que ça soit le mieux, mais voilà:

res = rand jeu_de_carte.size
puts jeu_de_carte[res]
jeu_de_carte.delete_at(res)

Très amusant ces petits défis :)

Anonymous – Ven, 2007 – 02 – 16 03:53

ça marche... plus court peut être?

ça fait sûrement l'affaire.... mais juste pour ajouter au challenge j'ai trouvé comment le faire en une seule ligne de code.

Jean-Marc – Ven, 2007 – 02 – 16 11:42