# Digit arrangement

Try this simple algorithm on for size.

Design an algorithm that, when given an arrangement of the digits 0,1,2,3,4,5,6,7,8,9, rearranges the digits so that the new arrangement represents the next larger value that can be represented by these digits (or reports that no such rearrangement exists if no rearrangement produces a larger value). Thus 5647382901 would produce 5647382910.
LVL 3
###### Who is Participating?

Commented:
In pseudo code -
Add 9 to the number to get a new number
If the sum of the digits of the new number does not = 45
then continue adding 9 until they do.
0

Author Commented:
Hint:

A few examples to help the process...

0123456789
0123456798
0123456897
0123456879

0

Author Commented:
Psuedocode is all that is needed to be correct...
0

Commented:
#!/usr/bin/perl
sub permute {
my (\$hold, @items) = @_;
print("@items\n"), return if \$hold+1==@items;
foreach \$i (\$hold..\$#items) {
@items[\$hold, \$i] = @items[\$i, \$hold];
permute(\$hold+1, @items);
}
}
@arr=(0..9);
permute(0, @arr);
0

Commented:
Are you sure you don't mean for your examples to be like this?
0123456789
0123456798
0123456879
0123456897
0

Commented:
0

Commented:
adding 9 until the sum = 45 will get you to 123456888, which is not a rearangement
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.