일반적으로 8 개의 반복을 수행하는 일반적인 루프를 살펴 보겠습니다.
for (int x=0; x<8; ++x);
당신은 그것을 무한으로 만들어야합니다!
그것은 그러한 형태의 루프 를 지원하는 모든 언어에 대한 인기 경연 대회 입니다 for
. 따라서 가장 높은 점수 (공감에서 공감 마이너스)를 가진 솔루션이 승리합니다.
당신의 언어가 다른 형태의 for
루프를 가지고 있지만 확실하다고 생각한다면, 그것을 멋지게 만들고 답을 게시하고 비경쟁으로 표시하십시오. 사용 가능한 구성 및 언어의 범위를 확대 할 권리가 있지만 축소되지는 않으므로 이전에 올바른 솔루션을 삭제하는 것을 두려워하지 마십시오.
해결책은 무엇입니까?
솔루션은 두 개의 프로그램으로 구성됩니다 .
첫 번째 프로그램은 깨끗한 프로그램입니다. for
루프를 8 번 반복 하여 사용하는 언어의 일반적인 프로그램입니다 . 모든 개발자가 작성할 수있는 정상적인 프로그램이어야합니다. 준비 목적으로 특별한 해킹이 없습니다. 예를 들면 다음과 같습니다.
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
두 번째 프로그램이 보강되었습니다. 이 프로그램에는 깨끗한 프로그램의 모든 코드와 일부 추가 코드가 포함되어야합니다. 확장 점 수가 제한되어 있으므로 자세한 내용은 전체 규칙 섹션을 참조하십시오. 위의 깨끗한 프로그램을위한 증강 프로그램은
inline bool operator < (const int &a, const int &b)
{
return true;
}
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
아이디어를 보여주는 예제 (C ++에서는 컴파일 할 수 없음) 일뿐입니다. 실제 정확한 증강 프로그램은 컴파일 가능하고 작동하며 무한 루프를 가져야합니다.
완전한 규칙
두 프로그램 :
- 이러한
for
루프 를 지원하는 모든 언어 는 괜찮습니다. - 루프 본체는 비어 있어야합니다. 보다 정확하게는 일부 출력 또는 다른 코드를 루프에 배치 할 수 있지만 빈 루프의 경우 루프 동작이 동일해야합니다.
클린 프로그램 :
루프는 정수 또는 숫자 카운터를 사용하고 8 개의 반복을 수행합니다.
for (int x=0; x<8; ++x); // C, C++, C# for (var x=0; x<8; ++x); // C#, Javascript for (auto x=0; x<8; ++x); // C, C++ for (auto signed x=0; x<8; ++x); // C, C++ for (register int x=0; x<8; ++x); // C, C++
사용자 정의 유형이 허용되지 않습니다.
- 루프 변수 대신 속성 사용 (글로벌 변수 제외)이 허용되지 않습니다.
변수 선언은 루프 내부 또는 외부에있을 수 있습니다. 다음 코드는 괜찮습니다.
int x; for(x=0; x<8; ++x);
접두사 또는 접미사 증분을 사용할 수 있습니다.
루프 제한
8
은 명명 된 상수 또는 변수에 저장하지 않고 상수 리터럴로 작성해야합니다. 변수 또는 상수를 8로 선언하여 솔루션을 방지 한 다음 다른 값으로 다시 할당, 재정의 또는 음영 처리합니다.const double n = 8; int main() { const double n = 9007199254740992; for (double x=0; x<n; ++x); return 0; }
증강 프로그램 :
- 깨끗한 코드의 모든 코드를 포함해야합니다.
- 제한된 수의 확장 점으로 클린 프로그램을 확장해야합니다.
- 무한 루프 자체 와 동일한
for
루프를 실행해야 합니다.
루프를 다른 무한 구조에 배치하는 것은 좋지 않습니다. - 코드의 텍스트 표현이 변경되지 않는 한 코드의 런타임 또는 컴파일 타임 패치가 허용됩니다.
- 구조물을 끈에 넣고 통과시키는
eval
것은 허용되지 않습니다.
확장 점 :
- 다른 파일이나 다른 어셈블리를 포함하여 깨끗한 코드로 조각 외부에
for
진술 (단품-for
구조 및 본문)은 변경되지 않아야합니다.- 변수 선언은 동일하게 유지해야합니다.
- 간단한 명령문 사이의 모든 위치는 확장 점으로 사용할 수 있습니다.
- 변수가 루프 외부에서 선언되고 값을 즉시 할당하지 않은 경우에만 해당 할당을 추가 할 수 있습니다.
/* extension point here */
int main()
/* extension point here */
{
/* extension point here */
int x /* extension point for assignment here */;
/* extension point here */
for (x=0; x<8; ++x);
/* extension point here */
return 0;
/* extension point here */
}
/* extension point here */
int main()
{
/* BEGIN: No changes allowed */ int x = 0; /* END */
/* extension point here */
/* BEGIN: No changes allowed */ for (x=0; x<8; ++x); /* END */
return 0;
}
PS : 가능하면 온라인 IDE에 대한 링크를 제공하십시오.
java.lang.Integer
있습니까? 2. 이것은 적절한 승리 기준으로 더 나은 것입니다.