in reply to sort with fewest moves
If this were homework (but of course it's not), I imagine a
teacher would be very impressed if one of their students
developed a uniquely Perl solution. Instead of trying to
move elements around one at a time, come up with an
algorithm to swap at least two elements.
For example, with Perl you could solve this specific problem with the following two statements:
and, of course, with one statement:($slots[1], $slots[2]) = ($slots[2], $slots[1]); ($slots[2], $slots[3]) = ($slots[3], $slots[2]);
Coming up with an algorithm for two in-place swaps shouldn't be too difficult (I've already shown you the Perl idiom), ++ if you can handle more than two elements at a time.($slots[1], $slots[2], $slots[3]) = ($slots[2], $slots[3], $slots[1]);
--Jim
Update: Well, that's the algorithm part I alluded to, your list of moves for the 2-element swap would look like this:
- swap(1, 2)
- swap(2, 3)
If we'd known that you had to use a one-armed robot to begin with, the replies might have been more useful. ;)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: sort with fewest moves
by axelrose (Scribe) on Feb 10, 2002 at 19:25 UTC |
In Section
Seekers of Perl Wisdom