Module to Switch Cable Routes

What is needed for this are some Factorial Switches:

Factorial Switches are special switches that can make all possible connections between N inputs and N outputs. The setting of the switches uses a so called address that is selectable via a CV address input or a address knob for manual setting. The main idea behind a factorial switch is to change several connections with only one switch.

Here some history from Wikipedia:
Factorials were used to count permutations at least as early as the 12th century, by Indian scholars. In 1677, Fabian Stedman described factorials as applied to change ringing, a musical art involving the ringing of many tuned bells. After describing a recursive approach, Stedman gives a statement of a factorial (using the language of the original): “Now the nature of these methods is such, that the changes on one number comprehends [includes] the changes on all lesser numbers … insomuch that a compleat Peal of changes on one number seemeth to be formed by uniting of the compleat Peals on all lesser numbers into one entire body.”

The notation n! was introduced by the French mathematician Christian Kramp in 1808.

In mathematics the factorial is a positive integer n, written as n!.
It is the multiplication of all positive integers from 1 to n.

Mathematical written as:
n! = N x (n - 1) x (n - 2) x (n - 3) x . . . . x 3 x 2 x 1

Here the example for 4!
4! = 4 x 3 x 2 x 1 = 24

Here the first eight factorials:
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40 320

This means that with 2! there are 2 possible connections, with 4! 24 possible connections, while with 6! 720 possible connections and so on.

As you can see with only 8 inputs and 8 outputs you got addresses from 00001 to 40320 that need some definitions that were difficult to set up within the VCV Rack. If the voltage range is from 0 to 10 V with a step size of 0,001 you get 10000 adresses only.
But if we set each digit of the address with a separate voltage it seems possible.

Now we need a c++ programer to write the code for a VCV module to do this. I could offer the results of the factorial switch settings up to 8! in the moment, that makes it possible to work with an event table to handle all this data. Made this for my Reaktor work!

Here an data example for 4!:

                001				1 2 3 4
		002				1 2 4 3
		003				1 3 2 4
		004				1 3 4 2
		005				1 4 2 3
		006				1 4 3 2
		007				2 1 3 4
		008				2 1 4 3
		009				2 3 1 4
		010				2 3 4 1
		011				2 4 1 3
		012				2 4 3 1
		013				3 1 2 4
		014				3 1 4 2
		015				3 2 1 4
		016				3 2 4 1
		017				3 4 1 2
		018				3 4 2 1
		019				4 1 2 3
		020				4 1 3 2
		021				4 2 1 3
		022				4 2 3 1
		023				4 3 1 2
		024				4 3 2 1