abonnement Unibet Coolblue
pi_19833737
tvp
ik snap d'r nu geen f*ck van, maar dat komt vast als ik er aan begin. ken nu geen enkele programeertaal trouwens
pi_19849720
Is er eigenlijk ook een standaardfunctie voor random?
Dus dat je net zoals bij Maple kan zeggen van ik wil dat random 1 of 2 gekozen wordt (of 0 of 1, etc ) en een scalar wordt?
pi_19849951
Ik heb misschien wel een manier gevonden
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];
}
}
Dit is de Fisher-Yates shuffle.
Als je nu een list maakt
quote:
my @numbers = ( 0 .. 2 );
fisher_yates_shuffle(\@numbers);
En daar de functie op loslaat...
quote:
my $my_number = shift @numbers;
print
"Het getal is $my_number";
woeiiiiii

oftewel:
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;
print
"Het getal is $my_number";
  zondag 13 juni 2004 @ 05:07:07 #129
693 ChOas
** Warning: Choking hazard **
pi_19850729
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:
[..]
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...

kijk maar:

---
#!/usr/bin/perl -w

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];
}
}

my @List=('a'..'z');
print @List,"\n";
fisher_yates_shuffle \@List;
print @List,"\n";

---

ChOas-Computer:~ choas$ ./randfok
abcdefghijklmnopqrstuvwxyz
zpkqbiyluevtfdwhrmxoajsgnc


wat je moet weten is dat rand <getal> een random getal tussen de 0 en <getal> terug geeft... is
handig, maar het getal is een float, dus dat betekent dat je bijvoorbeeld ook 1.463434242 terug kan krijgen.

Hier heeft Perl de functie int voor, die neemt dan alleen het gedeelte voor de .

Wil je nu bijvoorbeeld een paar getallen tussen de 0 en 10 doe je dit zo:

---
#!/usr/bin/perl -w

use strict;

for (1..5)
{
my $Number=int rand 11;
print "$Number\n";
};

---

Output:

ChOas-Computer:~ choas$ ./randfok
3
10
9
4
2
ChOas-Computer:~ choas$


Iemand zin om de fisher-yates shuffle uit te leggen ? ... zo niet heb ik er misschien later vandaag wel tijd voor, maar ik beloof niets...

[ Bericht 1% gewijzigd door ChOas op 13-06-2004 05:15:16 ]
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
  zondag 13 juni 2004 @ 14:25:18 #130
25794 Detroit
Per aspera ad astra
pi_19855724
Leuke cursus ChOas!
So, if you're frightened of dying and... and you're holding on, you'll see devils tearing your life away. But if you've made your peace, then the devils are really angels...
pi_19857815
quote:
Op zondag 13 juni 2004 05:07 schreef ChOas het volgende:
Iemand zin om de fisher-yates shuffle uit te leggen ?
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 ).

sub fisher_yates_shuffle {
# $list is een reference naar de array die je wil shuffelen
my $list = shift;
# het aantal elementen in de array wordt toegekent aan $i
my $i = @{$list};
# loop door de lus van $i-1 tot en met 1 (array loopt van 0...aantal elementen, maar laatste element
# shufflen met zichzelf heeft weinig zin
while ( --$i ) {
# genereer een random getal tussen 0 en $i
my $j = int rand( $i );
# @{$list}[$j,$i] geeft een lijst met 2 waardes: @{$list}[$j] en @{$list}[$i]
# deze wordt toegekend aan de lijst op posities $i en $j
# $list is een referentie en daarom schrijven we @{$list}[..]
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}


Een voorbeeld shuffle:
lijst bij start: 'a','b','c','d'
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
  donderdag 24 juni 2004 @ 17:29:01 #132
95998 -DailaLama-
Het is Dalai, niet Daila!
pi_20156964
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
pi_20159549
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
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
Trotse poster van het 37000000ste bericht ^O^
  vrijdag 25 juni 2004 @ 11:25:11 #134
22343 Ruudboy
Teruggekeerde fokkerd.
pi_20174539
Hey.. ik kom pas net dit topic tegen... super!
Ik ga er eens aan beginnen.
Sommige oenen draaien nog steeds databases op Windows , dus is wel handig als je scripts kunt maken die op unix en op windows draaien. Was al langer van plan eens naar Perl te kijken.

Ik ga het eens proberen
"Five out of four people have a problem with math."
  vrijdag 25 juni 2004 @ 14:45:27 #135
95998 -DailaLama-
Het is Dalai, niet Daila!
pi_20179995
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
Omslachtig? Dat is nog niets ...
Ik had er gister een hele ingewikkelde bagger van met for en while lusjes.

Bedankt!
pi_20422467
Schopje doormiddel van vraagje:

Waarom werkt dit veelgebruikte voorbeeld op internet niet?:

#!/usr/bin/perl

use strict;

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

print $mon;


Overigens doet ie het wel als ik use strict uit zet. En als ik localtime in een array dump (my @ltime = localtime()) doet ie het ook natuurlijk. Maar wat is er zo fout aan het gegeven voorbeeld?

Is 'use strict' perse noodzakelijk?
pi_20422720
Ik geloof dat 'use strict' ervoor zorgt dat alleen vooraf gedefinieerde variabelen mogen worden gebruikt. Absoluut vereist is het dus niet, maar wel sterk aan te raden. Je kunt er hele vage dingen mee voorkomen.
pi_20424284
quote:
Op maandag 5 juli 2004 09:29 schreef TimberWolf het volgende:
Is 'use strict' perse noodzakelijk?
use strict is datgene wat mist in php, een voorwaarde voor een serieuze taal, de constructie die mannen van jongens scheidt en/of schijdt

Met strict moet je alle variabelen declareren bijvoorbeeld dmv my of local. In jouw voorbeeld declareer je variabelen niet en dus is dat fout.

#!/usr/bin/perl -w

use strict;

my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

print $mon;

zal dus wel werken. (Die -w bij de eerste regels is om wat meer "info" te gereneren, daarnaast kun je ook "use warnings" gebruiken.)
quote:
En als ik localtime in een array dump (my @ltime = localtime()) doet ie het ook natuurlijk.
Maar
my @ltime = localtime();
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=@ltime

zal niet werken, maar
my @ltime = localtime();
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=@ltime
wel
pi_20429705
om het verschil aan te geven:
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 = "51010"
quote:
#!/usr/bin/perl -w

$a = 5;

sub functie1 {
$a = 10;
}

sub functie2 {
$a = 20;
}

print $a;
functie1();
print $a;
functie2();
print $a;
output = "51020"
Trotse poster van het 37000000ste bericht ^O^
pi_20441141
Helemaal duidelijk. Dank Inmiddels heb ik mijn eerste echt nuttige script werkend 160 regels code (om en nabij) inclusief commentaar. Doet automatisch een bos plaatjes downloaden van een website (dagelijks dus) en daar automatisch een eigen pagina en archieven van maken enzo. Geeft vast nogal load op de server van de ontvangende partij, dus ik plaats um maar niet

Ben ik overigens de enige die chOas mist?
  Eindredactie Games dinsdag 6 juli 2004 @ 15:07:13 #141
19054 crew  Oscar.
ElitePauper
pi_20441426
tvp
0% vet, Geen suiker toegevoegd
Twitter: @BuikschuiverNL
Xbox Live: Buikschuiver
Oscar, jij mag mijn landgoed als ik kom te overlijden. - Monkyyy
pi_20442029
quote:
Op dinsdag 6 juli 2004 14:55 schreef TimberWolf het volgende:
Geeft vast nogal load op de server van de ontvangende partij
sleep int rand(3);
oftewel wacht 0,1 of 2 seconden voor je het volgende plaatje ophaalt.
quote:
Ben ik overigens de enige die chOas mist?
We missen hem allemaal
pi_20443329
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.
Ah, lief plan. Bouwen we wel in !

Overigens zullen ze ook minder blij zijn met de verminderde bannerviews, but I could not care less
quote:
We missen hem allemaal
*snif*
pi_20444143
mijn site bestaat ondertussen uit 233 kB perl code and counting ...
Trotse poster van het 37000000ste bericht ^O^
  dinsdag 6 juli 2004 @ 17:14:45 #145
693 ChOas
** Warning: Choking hazard **
pi_20444835
[i]#!/usr/bin/perl -w

use strict;
$|++;@_=split//,
"|Just Another Perl Hacker|";
sub ll{select(undef,undef,undef,
0.05);}; my @l;$"="";for(0..12){
ll;splice@l,@l/2, 0,@_[$_,-$_-1]
;print' 'x13,"@l\r";};while (1){
@l=@_;for(0..11){pop@l;shift@l;
ll;print "\r",' 'x(13+$_)," @l "
;};ll;ll;ll;for(reverse 1..12){
splice@l,-1,0,$_[$_-1];splice@l,
0,0,$_[-$_-1];ll;print"\r",' 'x(
13+$_), "@l \b\b\b ";};ll;ll;
ll;@_=reverse@_;};

Oftewel... IK BEN ER WEER!!!!!

Zo... vragen ? .... wat gaan we doen ? ... Ik heb er weer zin in

[ Bericht 8% gewijzigd door ChOas op 06-07-2004 21:02:46 ]
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
  dinsdag 6 juli 2004 @ 17:16:47 #146
693 ChOas
** Warning: Choking hazard **
pi_20444892
Kut... forum gaat opeens allerlei dingen escapen

[code]
\\\\\\\'test\\\\\\\'
[/code]

[php]
\\\'test2\\\'
[/php]

Ooooooooooooooooh wat sucked dat verschrikkelijk... zo is er geen beginnen aan
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
  dinsdag 6 juli 2004 @ 21:03:33 #147
693 ChOas
** Warning: Choking hazard **
pi_20448195
escape probleem is gefixed, bovenstaande obfuscated code werkt weer

Dus... wat gaan we nu doen ?
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
pi_20448666
quote:
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 ?
OO
Trotse poster van het 37000000ste bericht ^O^
  dinsdag 6 juli 2004 @ 21:50:31 #149
693 ChOas
** Warning: Choking hazard **
pi_20449313
quote:
Op dinsdag 6 juli 2004 21:23 schreef daReaper het volgende:

[..]

OO


Ja, jij bent er wel klaar voor

OO it is...

Maar dan moet ik wel gaan vooorbereiden...

Okay... bij geen tegenstemmen is de volgende les: Packages!!!!!!!

Eeeerm... wacht... misschien moet ik eerst iets meer over scope gaan uitleggen (zag dat jullie dat ook al een begin gemaakt hadden)

Eerst scope, en dan packages/OO Perl
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
pi_20451555
En wie weet iets over het outputten van HTML? De 'print <<DINGES;" constructie? Het escapen van lastige codes? Wanneer wel en wanneer niet escapen enzo? Het verschil tussen "$string" en '$string'?

(Jah, allemaal dingen die ik inmiddels zelf ontdekt heb )
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')