Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6600[/thread]

Unendliche Liste von bestimmten Werten: Z. B. (50, 100, 150, 200, 250, etc.)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Alex
 2004-12-29 18:07
#50381 #50381
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Hallo,

wie kann ich eine Liste wie oben erstellen, ohne sie
auszuschreiben. Also:

$schritt = 50; if ($irgendwas == (50|100|150|usw.)) {mache was}

@zahlen = (1..9) ist mir klar, aber wie kann ich die Abstände selbst definieren und open end?
Gibt es da einen perlischen Befehl?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2004-12-29 18:20
#50382 #50382
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
in diesem fall geht es mit modulo rechnung

Code: (dl )
1
2
3
4
if(($irgendwas % $schritt) == 0)
{
# mach was
}


modulo kennst du vielleicht noch aus der Schule:
8 / 3 = 2 Rest 2
8 % 3 = 2
9 / 2 = 4 Rest 1
9 % 2 = 1
150 / 50 = 3 Rest 0
150 % 50 = 0

um dann alle zahlen zu haben, die durch eine gewisse Zahl teilbar sind, musst du also modulo rechnen und auf 0 testen
Strat
 2004-12-29 18:40
#50383 #50383
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du eine schleife mit diesen werten haben willst, geht das recht gut mit for, und zwar mit der "C-Syntax":
Code (perl): (dl )
1
2
3
for (my $i=0;$i<=980;$i+=10) { # start;endbedingung;zaehler erhoehen
  print "$i\t";
}


wenn du das als liste haben willst, koennte map dafuer ganz fein sein:
Code (perl): (dl )
my @list = map { $_ * 50 } 1..20; # 50,100,150,...
\n\n

<!--EDIT|Strat|1104338561-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Alex
 2004-12-29 18:41
#50384 #50384
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Das ist auch gut, dann rechnen wir eben. ;) Vielen Dank.
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
Alex
 2004-12-29 18:43
#50385 #50385
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Habt Ihr gerade eine Idee wie zusätzlich auf Schnappszahlen (111, 222, 333, usw.) testen kann?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
Strat
 2004-12-29 18:50
#50386 #50386
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
teste mal:

Code (perl): (dl )
1
2
3
4
5
6
7
if ( $zahl =~ /^ # am anfang
  (\d) # erste ziffer
  \1+ # erste ziffer 1 oder n mal wiederholt (also 2x oder oefter)
  $ # ende
  /x ) {
  print "$zahl ist eine Schnapszahl";
}


\1 ist dasselbe wie $1, nur halt in der Regex selbst, und es enthaelt den Wert des ersten Matches\n\n

<!--EDIT|Strat|1104339127-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Alex
 2004-12-29 19:25
#50387 #50387
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Super, danke.
Es geht voran...
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
esskar
 2004-12-29 20:53
#50388 #50388
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich hoffe, dass du das schön in funktionen kapselst
Ronnie
 2004-12-29 21:47
#50389 #50389
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Das Nutzen von unendlichen Listen mit bestimmten Inkrementen ist ein Einsatzgebiet für lambda-Funktionen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;

sub create_iter {
my $i = 0;
my $inc = shift;
return sub { $i+=$inc; return $i }
}

my $iter = &create_iter(50);
print &$iter, ' ' for (1..20);
print "\n";
exit;

Das wichtige dabei ist das nur bei Bedarf ein Wert generiert wird, anstatt über eine vordefinierte Menge zu iterieren.
esskar
 2004-12-29 21:55
#50390 #50390
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Ronnie,29.12.2004, 20:47]Das Nutzen von unendlichen Listen mit bestimmten Inkrementen ist ein Einsatzgebiet für lambda-Funktionen:
...
Das wichtige dabei ist das nur bei Bedarf ein Wert generiert wird, anstatt über eine vordefinierte Menge zu iterieren.[/quote]
stimmt...
für den fall aber unvorteilhaft!
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-12-29 18:07.