in reply to Re^2: Next permutation
in thread Next permutation
Update:
Probably a better way to get the index of max value...But is this what you want?
Code should run fairly quickly albeit a bit wordy for Perl.
#!/usr/bin/perl use strict; use warnings; my @array = split '', "117"; print @array, "\n"; print @array,"\n" while rot_max_left(\@array); @array = split '', "1234"; print "\n",@array,"\n"; print @array,"\n" while rot_max_left(\@array); sub rot_max_left { my $array_ref = shift; my $maxi=0; return 0 unless ($maxi = get_index_of_max($array_ref)); ($array_ref->[$maxi-1],$array_ref->[$maxi]) = ($array_ref->[$maxi] +,$array_ref->[$maxi-1]); return $maxi; } sub get_index_of_max { my $array_ref = shift; my $maxi = 0; foreach (my $i=1;$i<@$array_ref;$i++) { $maxi = $i if ($array_ref->[$i] > $array_ref->[$maxi]) } return $maxi; } __END__ 117 171 711 1234 1243 1423 4123
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Next permutation
by aartist (Pilgrim) on Feb 25, 2019 at 20:41 UTC | |
by Marshall (Canon) on Feb 25, 2019 at 21:36 UTC |