Improved Permutations with the BigInteger Data Type: Listing 1
Overall permutations demo program structure.
using System;
using System.Numerics;
namespace ImprovedPermutations
{
class PermutationsProgram
{
static void Main(string[] args)
{
Console.WriteLine("\nBegin improved permutations with BigInteger demo\n");
int n = 3;
Permutation p1 = new Permutation(n);
Console.WriteLine("All permutations for order n = 3 are:\n");
int ct = 0;
while (p1 != null)
{
Console.WriteLine(ct + ": " + p1.ToString());
p1 = p1.Successor();
++ct;
}
// demo application to string array
// demo Factorial function
// demo Element method
Console.WriteLine("\nEnd permutations demo\n");
Console.ReadLine();
}
} // class PermutationsProgram
public class Permutation
{
private int n; // order
private int[] data;
public Permutation(int n)
{
this.n = n;
this.data = new int[n];
for (int i = 0; i < n; ++i)
this.data[i] = i;
}
public static BigInteger Factorial(int k) { . . }
public Permutation Successor() { . . }
public string[] ApplyTo(string[] arr) { . . }
public Permutation Element(BigInteger k) { . . }
public override string ToString()
{
string s = "( ";
for (int i = 0; i < data.Length; ++i)
s += data[i] + " "; // consider StringBuilder
s += ")";
return s;
}
} // class Permutation
} // ns
About the Author
Dr. James McCaffrey works for Microsoft Research in Redmond, Wash. He has worked on several Microsoft products including Azure and Bing. James can be reached at [email protected].