1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl -w use strict; use warnings; my $max = 10; my $anzahl = 30; my $lfd = 0; foreach my $nr (1..$anzahl) { if ( int ($anzahl / $max) < 2 || $nr % int ($anzahl / $max) ) { $lfd ++; print "Nr. $nr kommt rein, Anzeige Nr. $lfd\n"; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl -w use strict; use warnings; my $max = 10; my $anzahl = 20; my $lfd = 0; foreach my $nr (1..$anzahl) { if ( $anzahl <= $max || int ($nr / int ($anzahl / $max)) == $nr / int ($anzahl / $max) ) { $lfd ++; print "Nr. $nr kommt rein, Anzeige Nr. $lfd\n"; } }
2011-05-15T14:32:58 biancaFrage nur, ob das auch eleganter geht?
1 2 3 4 5 6 7 8 9 10
my $max = 10; my $anzahl = 451; my $step = int($anzahl/$max); my $lfd = 0; foreach my $nr (1..$anzahl) { next if $anzahl > $max and $nr % $step; $lfd ++; print "Nr. $nr kommt rein, Anzeige Nr. $lfd\n"; }
1
2
3
4
5
6
7
8
9
10
Nr. 45 kommt rein, Anzeige Nr. 1
Nr. 90 kommt rein, Anzeige Nr. 2
Nr. 135 kommt rein, Anzeige Nr. 3
Nr. 180 kommt rein, Anzeige Nr. 4
Nr. 225 kommt rein, Anzeige Nr. 5
Nr. 270 kommt rein, Anzeige Nr. 6
Nr. 315 kommt rein, Anzeige Nr. 7
Nr. 360 kommt rein, Anzeige Nr. 8
Nr. 405 kommt rein, Anzeige Nr. 9
Nr. 450 kommt rein, Anzeige Nr. 10
1 2 3 4 5 6 7 8 9 10
my $max = 10; my $anzahl = 30; my $add = int ($anzahl / $max); my $lfd = 1; foreach my $nr (1..$anzahl) { last if $nr > 10; print "Nr. $nr kommt rein, Anzeige Nr. $lfd\n"; $lfd += $add; }
1 2 3 4 5 6 7 8 9 10 11 12 13
my $anzahl = $ARGV[0] || 19; my $max = $ARGV[1] || 10; my $step = ($anzahl-1) / ($max-1); my $pos = 1; if ( $anzahl <= $max ) { print "$_\n" for 1 .. $max; exit } for ( 1 .. $max ) { my $pick = int $pos; print "$pick\n"; $pos += $step; }
2011-05-16T08:37:19 TaulmarillMüssen denn alle Elemente durchlaufen werden?
2011-05-15T20:51:46 FIFOWillst Du die Randelemente 1 und $anzahl immer mit ausgeben? Bzw. willst Du immer bei 1 starten?