Задача:
Самый короткий код по количеству символов, который будет генерировать ряд (псевдо) случайных чисел с помощью Метод Middle-Square.
Метод среднего квадрата генерации (псевдо) случайных чисел был впервые предложен Джоном Фон Нейманом в 1946 году и определяется следующим образом:
R n + 1= mid ((R n) 2 m)
Например:
3456 2= 11943936
середина (11943936) = 9439
9439 2= 89094721
середина (89094721) = 0947
947 2= 896809
середина (896809) = 9680
9680 2= 93702400
середина (93702400) = 7024
Другой пример:
843 2= 710649
середина (710649) = 106
106 2= 11236
середина (11236) = 123
123 2= 15129
середина (15129) = 512
512 2= 262144
середина (262144) = 621
621 2= 385641
середина (385641) = 856
856 2= 732736
середина (732736) = 327
327 2= 106929
середина (106929) = 069
69 2= 4761
середина (4761) = 476
476 2= 226576
середина (226576) = 265
Определение mid
:
По-видимому, существует некоторая путаница в отношении точного определения mid
. Для целей этой задачи предположим, что вы извлекаете то же количество цифр, что и начальное семя. Значение, если начальное семя имело 4 цифры, вы могли бы извлечь 4 цифры из середины. Если начальное семя имеет 3 цифры, вы можете извлечь 3 цифры из середины.
Что касается извлечения чисел, когда вы не можете найти точную середину, рассмотрите число 710649. Если вы хотите извлечь середину 3, есть некоторая двусмысленность (106 или 064). В этом случае извлеките 3, наиболее близкое к началу строки. Поэтому в этом случае вы извлечете 106.
Легкий способ подумать о том, чтобы положить нули в число, если это не правильное количество цифр. Например, если вы набрали начальные нули до 710649, вы получите 0710649, а средние 3 цифры теперь станут 106.
Тестовые примеры:
Не делайте никаких предположений относительно длины семени. Например, вы не можете предположить, что семя всегда будет 4-значным числом
Начальное семя 3456, которое генерирует 4-значные случайные числа, должно генерировать следующие серии (первые 10):
9439, 947, 9680, 7024, 3365, 3232, 4458, 8737, 3351, 2292
Начальное семя 8653, которое генерирует 4-значные случайные числа, должно генерировать следующую серию (первые 10):
8744, 4575, 9306, 6016, 1922, 6940, 1636, 6764, 7516, 4902
Начальное семя 843, которое генерирует 3-значные случайные числа, должно генерировать следующие серии (первые 10):
106, 123, 512, 621, 856, 327, 69, 476, 265, 22
Начальное семя 45678, которое генерирует 5-значные числа рядов, должно генерировать следующую серию (первые 10):
86479, 78617, 80632, 1519, 30736, 47016, 10504, 3340, 11556, 35411
Что касается ведущих нулей, то ответ не содержит ведущих нулей:).