Thread Bingokarten erstellen
(11 answers)
Opened by frankes at 2010-09-27 22:19
Noch ein Tipp:
Mit shuffle() aus List::Util kann man eine Liste in eine zufällige Reihenfolge bringen. Dann die ersten Elemente auszuwählen ist trivial. Und bei der Erzeugung des Keys würde ich die einzelnen Begriffe sicherheitshalber durch ein Zeichen trennen, das garantiert in keinem der Begriffe vorkommt, z.B. '|' oder ' '. Hier mein Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 use List::Util qw(shuffle); my @begriffe = qw(eins zwei drei vier fuenf sechs sieben acht neun zehn); my $anzahlKaertchen = 200; my %karten = (); # Hash mit den erzeugten Karten while (keys(%karten) < $anzahlKaertchen) { # Liste mit 6 zufällig ausgewählten Begriffen anlegen my @karte = (shuffle(@begriffe))[0..5]; # eindeutigen Hash-Key für die ausgewählte Kombination erzeugen my $key = join('|',sort @karte); # falls es die Kombination noch nicht gab, # wird die Karte im Hash gespeichert unless ($karten{$key}) { $karten{$key} = \@karte; print int(keys %karten) ,". Karte : ",join(" · ",@karte),"\n"; } } EDIT: Noch was - die Anzahl der gewünschten Kärtchen sollte deutlich kleiner als die Zahl möglicher Kombinationen sein, sonst wird die while-Schleife ineffizient. Last edited: 2010-09-29 00:50:11 +0200 (CEST) |