scrivere un programma che generi x numeri casuali secondo il metodo del "Middle-Square".
ecco il funzionamento:
* il programa deve accettare in input un qualiasi numero
* bisogna elevare al quadrato questo numero
* prendere la parte centrale di questo nuovo numero
* outputtarla
* usare nuovamente il procedimento su quest stringa
regole:
* per prendere la parte centrale della stringa NON dovete usare una funzione giàpronta tipo mid()
* se l'input è un numero di X cifre, ogni output deve avere X cifre
ecco la soluzione in perl (evitate di copiare il metodo di estrarre la parte centrale ):
Èabbastanza difficile, quindi chi lo risolve per primo vince un lecca-lecca
ecco un test vector:
poi usando l'esempio di wikipedia: http://upload.wikimedia.org/wikipedia/commons/9/92/Middle-square_method.svg
ecco il funzionamento:
* il programa deve accettare in input un qualiasi numero
* bisogna elevare al quadrato questo numero
* prendere la parte centrale di questo nuovo numero
* outputtarla
* usare nuovamente il procedimento su quest stringa
regole:
* per prendere la parte centrale della stringa NON dovete usare una funzione giàpronta tipo mid()
* se l'input è un numero di X cifre, ogni output deve avere X cifre
ecco la soluzione in perl (evitate di copiare il metodo di estrarre la parte centrale ):
Codice:
$seed = shift or die "usage: $0 <six-digit seed> <number of numbers to generate>\n";
$iter = shift or die "usage: $0 <six-digit seed> <number of numbers to generate>\n";
$length = length($seed);
for (1..$iter) {
$x = length( (9 x length($seed)) ** 2 );
if ($x%2==1) {$x++};
$seed = $seed ** 2;
while (length($seed) < $x) {$seed = 0 . "$seed"};
$seed = substr($seed,($x/4),$length);
print "$seed\n";
};
Èabbastanza difficile, quindi chi lo risolve per primo vince un lecca-lecca
ecco un test vector:
Codice:
oromis92@localhost:~/Scrivania/perl$ perl prnga.pl
usage: prnga.pl <six-digit seed> <number of numbers to generate>
oromis92@localhost:~/Scrivania/perl$ perl prnga.pl 123456 5
241383
265752
624125
532015
039960
----------------------------------
oromis92@localhost:~/Scrivania/perl$ perl prnga.pl 987654 5
460423
989338
789678
591343
686543
-----------------------
oromis92@localhost:~/Scrivania/perl$ perl prnga.pl 625000 5
625000
625000
625000
625000
625000
poi usando l'esempio di wikipedia: http://upload.wikimedia.org/wikipedia/commons/9/92/Middle-square_method.svg
Codice:
oromis92@localhost:~/Scrivania/perl$ perl prnga.pl 675248 1
959861