Dit is de Fisher-Yates shuffle.quote:use strict;
sub fisher_yates_shuffle {
my $list = shift;
my $i = @{$list};
while ( $i-- ) {
my $j = int rand( $i );
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}
En daar de functie op loslaat...quote:my @numbers = ( 0 .. 2 );
fisher_yates_shuffle(\@numbers);
woeiiiiiiquote:my $my_number = shift @numbers;
"Het getal is $my_number";
quote:sub fisher_yates_shuffle {
my $list = shift;
my $i = @{$list};
while ( $i-- ) {
my $j = int rand( $i );
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}
my @numbers = ( 0 .. 2 );
fisher_yates_shuffle(\@numbers);
my $my_number = shift @numbers;
"Het getal is $my_number";
Goed gevonden! maar fisher-yates is een beetje overkill om alleen een random getal te vinden. Je gebruikt het eerder om een lijst te randomizen...quote:Op zondag 13 juni 2004 02:32 schreef CybErik het volgende:
Ik heb misschien wel een manier gevonden
[..]
Dit is de Fisher-Yates shuffle.
Als je nu een list maakt
[..]
En daar de functie op loslaat...
[..]
woeiiiiii
oftewel:
[..]
Zo ingewikkeld is het niet. Waar het in feite op neer komt is dat je de lijst afloopt en ieder element met een willekeurig gekozen ander element omwisselt. (kleine verandering op fisher-yates tov ChOas:while($i--) wordt while(--$i), het is niet interresant om element 0 met zichzelf te wisselen ).quote:Op zondag 13 juni 2004 05:07 schreef ChOas het volgende:
Iemand zin om de fisher-yates shuffle uit te leggen ?
quote:iteratie 1: i=3, j=2 en de lijst wordt a b d c
iteratie 2: i=2, j=1 en de lijst wordt a d b c
iteratie 3: i=1, j=0 en de lijst wordt d a b c
quote:iteratie 1: i=3, j=0 en de lijst wordt d b c a
iteratie 2: i=2, j=1 en de lijst wordt d c b a
iteratie 3: i=1, j=0 en de lijst wordt c d b a
wat dacht je hier van:quote:Op donderdag 24 juni 2004 17:29 schreef -DailaLama- het volgende:
Weten jullie hier wat op?
De vraag: Schrijf een functie die 4 letters als argumenten meekrijgt en alle mogelijke combinaties van deze letters afdrukt.
dus
AAAA
AAAB
AAAC
AAAD
AABA
AABB
...
ik weet wel hoe het moet, het klinkt eenvoudig, maar ik kom er niet uit
Omslachtig? Dat is nog niets ...quote:Op donderdag 24 juni 2004 19:40 schreef daReaper het volgende:
[..]
wat dacht je hier van:
sub combi {
my @letters = split(//, $_[0]);
foreach my $a (@letters) {
foreach my $b (@letters) {
foreach my $c (@letters) {
foreach my $d (@letters) {
print "$a$b$c$d\n";
}
}
}
}
}
misschien wat omslachtig, maar het werkt
use strict is datgene wat mist in php, een voorwaarde voor een serieuze taal, de constructie die mannen van jongens scheidt en/of schijdtquote:Op maandag 5 juli 2004 09:29 schreef TimberWolf het volgende:
Is 'use strict' perse noodzakelijk?
Maarquote:En als ik localtime in een array dump (my @ltime = localtime()) doet ie het ook natuurlijk.
output = "51010"quote:#!/usr/bin/perl -w
use strict;
my $a = 5;
sub functie1 {
$a = 10;
}
sub functie2 {
my $a = 20;
}
print $a;
functie1();
print $a;
functie2();
print $a;
output = "51020"quote:#!/usr/bin/perl -w
$a = 5;
sub functie1 {
$a = 10;
}
sub functie2 {
$a = 20;
}
print $a;
functie1();
print $a;
functie2();
print $a;
sleep int rand(3);quote:Op dinsdag 6 juli 2004 14:55 schreef TimberWolf het volgende:
Geeft vast nogal load op de server van de ontvangende partij
We missen hem allemaalquote:Ben ik overigens de enige die chOas mist?
Ah, lief plan. Bouwen we wel in !quote:Op dinsdag 6 juli 2004 15:35 schreef devzero het volgende:
sleep int rand(3);
oftewel wacht 0,1 of 2 seconden voor je het volgende plaatje ophaalt.
*snif*quote:We missen hem allemaal
OOquote:Op dinsdag 6 juli 2004 21:03 schreef ChOas het volgende:
escape probleem is gefixed, bovenstaande obfuscated code werkt weer
Dus... wat gaan we nu doen ?
quote:Op dinsdag 6 juli 2004 21:23 schreef daReaper het volgende:
[..]
OO
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |