Functions

/Users/garethloy/Musimathics/Musimat1.2/MusimatChapter9/C091201c.cpp File Reference

#include "MusimatChapter9.h"

Go to the source code of this file.

Functions

 MusimatChapter9Section (C091201c)
Integer permute (IntegerList L, Integer Reference pos, Integer Reference count, Integer inc)
Static Void para1 ()

Function Documentation

MusimatChapter9Section ( C091201c   )

Definition at line 2 of file C091201c.cpp.

References para1().

                                 {
        Print("*** Permutation ***");
        /*****************************************************************************
         
         Permutation
         
         Iterate the supplied sequence in prime order until exhausted, then permute the 
         entire row by inc steps and repeat from the beginning.
         *****************************************************************************/
        para1(); // Step into this function to continue.
}
Static Void para1 (  )

Definition at line 26 of file C091201c.cpp.

References permute().

                    {
        /*****************************************************************************
         Here is an example of invoking permute().
         *****************************************************************************/
        Print("*** Permutation ***");
        IntegerList L(10, 11, 12);
        Integer inc = -1;
        Integer pos = 0;
        Integer perm = 0;
        
        For (Integer i = 0; i < 3 * Length(L); i++) {
                Print(permute(L, pos, perm, inc));
        }
        
        /*****************************************************************************
         prints 10, 11, 12, 11, 12, 10, 12, 10, 11. Because inc = -1, it skips back one place in the 
         row every time. The trigger for it to skip is when it has output as many elements as are in the list.
         *****************************************************************************/
}
Integer permute ( IntegerList  L,
Integer Reference  pos,
Integer Reference  count,
Integer  inc 
)

Definition at line 14 of file C091201c.cpp.

References cycle().

                                                                      { 
        Integer curPos = pos;                                                   // save current position
        Integer x = cycle(L, pos, 1);                                   // update pos and get list value
        count = count + 1;                                                              // increment counter
        If (count == Length(L)) {                                               // have we output L items from list?
                count = 0;                                                                      // reset count
                pos = curPos + inc;                                                     // permute position for next time
        }
        Return(x); 
}