in reply to Re^3: More while issues
in thread More while issues
sub rankdwn { my ( $yb, $chntot, $incrsdel ) = @_; my $cnd_a = $aod[$yb] =~ tr/a/a/; my $cnd_y = $aod[$yb] =~ tr/y/y/; my $str = $aod[$yb]; my @Posns; my $letter = 'a'; if ( ( $cnd_a + $cnd_y ) <= $incrsdel ) { $aod[$yb] =~ s/a/y/gsxm; $cnd_y += $cnd_a; $letter = 'c'; } while ( $cnd_y < $incrsdel ) { push @Posns, pos $str while $str =~ m{(?=a)}g; my $offset = splice @Posns, rand @Posns, 1; substr $str, $offset, 1, q{y}; $cnd_y++; } $aod[$yb] = $str; return; }
For this test I have the $chntot and $incrsdel set so no 'c's will be removed.
This line: caaaaaaayyyyyccyyyyyyyyycyyyyyycycyyyyycyyyyyyyyccyyyyyyyyyycyycyyyyyyyyyyyyyyyyyyyyycyyycyyyyycyyyyyyyyyyyyyyyycyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxx
should have 15 'c's and 4 'a's.
This line: caaaayyyyyyyyccyyyyyyyyycyyyyyycycyyyyycyyyyyyyyccyyyyyyyyyycyycyyyyyyyyyyyyyyyyyyyyycyyycyyyyycyyyyyyyyyyyyyyyycyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxx
should have 15 'c's and no 'a's.
But the kicker is several lines above these two: caaaaaaaaaaaaccaaaaaaaaacaaaaaacacaaaaacaaaaaaaaccaaaaaaaaaacaacaaaaaaaaaaaaaaaaaaaaacaaacaaaaacaaaaaaaaaaaaaaaacaaaaaaayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxx
all the 'y's in a row rather than randomly placed.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: More while issues
by johngg (Canon) on Mar 06, 2011 at 23:27 UTC | |
by Dandello (Monk) on Mar 07, 2011 at 01:10 UTC |