소스 코드를 두 배로 늘리는 데는 몇 가지 문제가 있습니다 . here 및 here . 우리가 여기서하는 일은 조금 어렵지만 거의 모든 언어로 수행 할 수 있어야합니다.
이 도전에서는 임의의 양의 정수를 사용합니다. 프로그램은 정수를 두 배로 출력해야합니다 . 소스 코드가 두 배가되면 양의 정수를 받아 squared로 출력합니다 .
소스 코드는 어떻게 두 배입니까? 글쎄, 당신은 당신의 방법을 가질 수 있습니다 . 말을하는 것입니다, 당신은 바이트 또는 문자의 문자열로 소스 코드를 분할 할 수 있습니다 (또는 토큰 화 된 랭 가문에서 토큰)의 어떤 동일한 원하는 길이 , 그리고 두 번 연속으로 각 청크를 반복합니다.
ABCDEFGHIJKL
(길이 12) 의 초기 프로그램의 경우 가능한 모든 이중 프로그램은 다음과 같습니다.
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
이는 소수 길이의 프로그램은 두 가지 방식으로 만 두 배가 될 수 있음을 의미합니다. 모든 문자가 두 배로 또는 전체 프로그램이 두 번 반복됩니다.
규칙 :
- 코드는 완전한 프로그램 또는 기능이어야합니다.
- 표준 허점은 금지되어 있습니다.
- 표준 I / O 방법이 허용됩니다.
- 공백과 줄 바꿈을 포함한 모든 문자 / 바이트는 코드 길이로 계산되며 청크에 기여합니다.
- 당신은 할 수 입력과 광장이 언어의 INT / 정수형으로 표현 될 수 있다고 가정합니다.
- 당신은 하지 않을 수 있습니다 뒤에 줄 바꿈 또는 다른 문자를 가정합니다.
- 바이트 수 다음에 제목에 청크 크기를 제공하십시오.
- 이것은 code-golf 이므로 짧은 프로그램 일수록 좋습니다! 두 프로그램의 길이가 같은 경우 더 작은 청크 길이를 사용하는 프로그램이 우선합니다. (더 작은 청크 길이를 사용하는 더 긴 프로그램이 있다면, 게시 할 가치가 있습니다!)
- 프로그램에 두 번째 입력 / 라인이 필요한 경우 해당 값을 가정하지 않아도됩니다. 특히, 두 번째 입력이 비어 있거나 첫 번째 입력과 같거나 다른 정수인 경우 프로그램이 작동해야합니다. 프로그램에 두 번째 입력 / 라인이 필요하지 않으면이 제한을 무시해도됩니다.
5 -> 10
; 이중 코드 : 5 -> 25 25
.
.0
?