입력을 받아서 출력을 제공하는 함수 (또는 프로그램)는 함수를 자체 출력으로 반복해서 호출하면 결국 원래 번호에 도달하면주기를 갖는다 고 할 수 있습니다. 예를 들어 다음 기능을 수행하십시오.
Input: n 1 2 3 4 5 6
Output: f(n) 5 7 1 3 4 9
우리가 시작하면 n=1
, f(n)=5
, f(f(n))=f(5)=4
, f(f(f(n)))=f(4)=3
, f(f(f(f(n))))=f(3)=1
.
이것이 쓰여졌습니다 (1 5 4 3)
. 이 루프에는 4 개의 고유 한 숫자가 있기 때문에 길이 4의주기입니다.
당신의 도전은 가능한 모든 길이의 사이클을 가진 프로그램이나 함수를 작성하는 것입니다. 즉, 길이 1, 길이 2 등의주기가 있어야합니다.
또한 함수 / 프로그램은 양의 정수에서 양의 정수까지 여야하며 bijective 이어야합니다 . 즉, 모든 양의 정수에 대해 가능한 모든 출력 값마다 정확히 하나의 입력 값이 있어야합니다. 달리 말하면 함수 / 프로그램은 양의 정수의 순열을 계산해야합니다.
세부 사항 : STDIN, STDOUT, 함수 인수, 리턴 등을 포함한 모든 표준 입력 / 출력 시스템이 허용됩니다. 표준 허점은 금지됩니다.
데이터 유형의 제한에 대해 걱정할 필요가 없습니다. 위의 속성 은 예를 들어 int
또는 float
값을 보유 할 수 있다는 가정 하에서 만 유지하면 됩니다.
양의 정수가 아닌 입력에 대한 함수의 동작에는 제한이 없으며 해당 입력 / 출력은 무시됩니다.
점수는 바이트 단위의 코드 골프이며, 가장 짧은 코드가 이깁니다.