The challenge:
The shortest code by character count that will generate a series of (pseudo)random numbers using the Middle-Square Method.
The Middle-Square Method of (pseudo)random number generation was first suggested by John Von Neumann in 1946 and is defined as follows:
Rn+1 = mid((Rn)2, m)
For example:
34562 = 11943936
mid(11943936) = 9439
94392 = 89094721
mid(89094721) = 0947
9472 = 896809
mid(896809) = 9680
96802 = 93702400
mid(93702400) = 7024
Another example:
8432 = 710649
mid(710649) = 106
1062 = 11236
mid(11236) = 123
1232 = 15129
mid(15129) = 512
5122 = 262144
mid(262144) = 621
6212 = 385641
mid(385641) = 856
8562 = 732736
mid(732736) = 327
3272 = 106929
mid(106929) = 069
692 = 4761
mid(4761) = 476
4762 = 226576
mid(226576) = 265
Definition of mid
:
Apparently there is some confusion regarding the exact definition of mid
. For the purposes of this challenge, assume that you are extracting the same number of digits as the starting seed. Meaning, if the starting seed had 4 digits, you would extract 4 digits from the middle. If the starting seed had 3 digits, you would extract 3 digits from the middle.
Regarding the extraction of numbers when you can't find the exact middle, consider the number 710649. If you want to extract the middle 3, there is some ambiguity (106 or 064). In that case, extract the 3 that is closest to the beginning of the string. So in this case, you would extract 106.
An easy way to think of it is to pad zeroes to the number if it's not the right number of digits. For example, if you pad leading-zeroes to 710649 you get 0710649 and the middle 3 digits now become 106.
Test cases:
Make no assumptions regarding the length of the seed. For example, you cannot assume that the seed will always be 4-digit number
A starting seed of 3456 that generates 4-digit random-numbers should generate the following series (first 10):
9439, 947, 9680, 7024, 3365, 3232, 4458, 8737, 3351, 2292
A starting seed of 8653 that generates 4-digit random numbers should generate the following series (first 10):
8744, 4575, 9306, 6016, 1922, 6940, 1636, 6764, 7516, 4902
A starting seed of 843 that generates 3-digit random numbers should generate the following series (first 10):
106, 123, 512, 621, 856, 327, 69, 476, 265, 22
A starting seed of 45678 that generates 5-digit ranom numbers should generate the following series (first 10):
86479, 78617, 80632, 1519, 30736, 47016, 10504, 3340, 11556, 35411
As far as leading zeroes are concerned, the answer is no leading zeroes should be displayed :).
mid()
is defined. What is round to which direction is completely non-obvious. – Surrebuttalmid
. – Syzygy