소개
중간 평방 방법은 의사 난수의 생성에 사용됩니다. 그러나 이것은 일반적으로 기간이 매우 짧고 심각한 약점이 있기 때문에 실제로는 좋은 방법이 아닙니다. 어떻게 작동합니까? 예를 들어 보자.
씨앗의 경우 다음을 선택합니다 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).