소개
중간 평방 방법은 의사 난수의 생성에 사용됩니다. 그러나 이것은 일반적으로 기간이 매우 짧고 심각한 약점이 있기 때문에 실제로는 좋은 방법이 아닙니다. 어떻게 작동합니까? 예를 들어 보자.
씨앗의 경우 다음을 선택합니다 123456
.
Seed 123456
종자 제곱 (종자 × 종자)은 다음과 같습니다.
Seed² 15241383936
우리는 6 자리 숫자로 시작했습니다 . 즉, 시드 제곱은 12 자리 숫자를 전달해야합니다 . 그렇지 않은 경우 다음을 보상하기 위해 선행 0이 추가됩니다.
Seed² 015241383936
그런 다음 씨앗 과 같은 크기 로 숫자의 중간 부분을 가져옵니다 .
Seed² 015241383936
^^^^^^
이는 우리의 것입니다 새 씨앗 : 241383
. 위와 같은 과정을 반복합니다. 우리는 다음을 얻습니다.
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
그리고 이것은 잠시 동안 계속됩니다 ... 이제 우리는 중간 사각형 방법이 무엇인지 알고 있습니다.
작업
모든 씨앗 이 기간 . a의 기간 N -digit 씨는 8 초과 할 수 없습니다 없음 . 예를 들어 seed 82
입니다. 이것은 다음 순서를 제공합니다.
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
같은 숫자를 다시 포함하기 전에 기간이 5 와 같다는 것을 알 수 있습니다 . 당신의 작업은 선행 0을 포함하지 않는 0보다 큰 시드가 주어지면 시드의 기간을 출력합니다 . 따라서이 경우을 출력해야합니다 5
.
또 다른 예는 24
다음과 같습니다.
24 > 57 > 24
|____|____|___...
0 1 2
보시다시피 모든 시퀀스가로 끝나는 것은 아닙니다 0
. 이주기의 기간은 1 입니다.
테스트 사례
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
123456 , 8989 , 789987에 대한 서열을 갖는 페이스트 빈
이것은 code-golf 이므로 바이트 수가 가장 적은 제출이 승리합니다!
입력에 고르지 않은 숫자가 있다고 가정 할 수 있습니다.
24
(기간 2, 내가 말할 것), 주기적82
이다 결국 정기 (기간 1).