Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: Algorithm for deriving permutations
Replies: 26   Last Post: Oct 21, 2007 2:16 PM

 Messages: [ Previous | Next ]
 briggs@encompasserve.org Posts: 404 Registered: 12/6/04
Re: Algorithm for deriving permutations
Posted: Oct 18, 2007 11:55 AM

In article <1192721177.652066.238430@v23g2000prn.googlegroups.com>, Randy Poe <poespam-trap@yahoo.com> writes:
> On Oct 18, 11:05 am, Water Cooler v2 <wtr_...@yahoo.com> wrote:
>> If you have, say, 4 boxes to put the following 6 types of things in:
>>
>> Apples
>> Oranges
>> Pears
>> Bananas
>> Gooseberry
>> Lemon
>>
>> Such that you could:
>>
>> a) only put one piece of each of the things in one box; and
>>
>> b) you could put the same thing in all the boxes, i.e you could put,
>> say, an apple each in each of the boxes. In the mathematical jargon,
>> if repetition was allowed
>>
>> Then, I know that we could have 6*6*6*6, i.e 1296 permutations.
>>
>> However, I want to know the algorithm to decide what those
>> combinations are. Help appreciated.

>
>
> for fruit1=apples to lemon
> for fruit2=apples to lemon
> for fruit3=apples to lemon
> for fruit4=apples to lemon
> print: (fruit1,fruit2,fruit3,fruit4)
> end
> end
> end
> end
>
> Easily implemented recursively and generalized to
> an arbitrary number of boxes if you have a
> language that supports recursion.

Recursive Fortran. It also tallies the total number of permutations
so that you end up with a warm fuzzy fealing that the code is correct.

program main
integer total / 0 /
parameter boxes = 4
call permutation ( '', boxes, total )
type *, total
end

options /extend_source
subroutine permutation ( lhs, boxes, total )
implicit none

character *(*) lhs
integer boxes
integer total

integer i

character *10 fruit(6) / 'apple', 'orange', 'pear', 'banana',
1 'gooseberry', 'lemon' /
static fruit

if ( boxes .eq. 0 ) then
type *, lhs
total = total + 1
return
end if

do i = 1, 6
call permutation ( lhs // fruit(i), boxes - 1, total )
end do

Date Subject Author
10/18/07 Water Cooler v2
10/18/07 Randy Poe
10/18/07 Water Cooler v2
10/18/07 hardwidg
10/18/07 Richard Heathfield
10/18/07 Proginoskes
10/18/07 Robert Israel
10/18/07 Proginoskes
10/19/07 David Bernier
10/19/07 Richard Heathfield
10/18/07 Randy Poe
10/19/07 David Breton
10/19/07 Proginoskes
10/19/07 Richard Harter
10/19/07 Marshall
10/19/07 Patricia Shanahan
10/18/07 briggs@encompasserve.org
10/18/07 Patrick Hamlyn
10/19/07 mensanator
10/19/07 hagman
10/19/07 Patrick Hamlyn
10/19/07 Richard Heathfield
10/19/07 mensanator
10/19/07 rossum
10/20/07 Grouchy