일반적으로 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. 이것은 적절한 승리 기준으로 더 나은 것입니다.