합법적으로 느슨한 가장 짧은 코드


146

나는 개발자이고 일을하고 싶지 않다. 나는 XKCD에서 느슨하게하는 가장 좋은 변명은 코드가 컴파일 된다는 입니다. 이 때문에 영원히 컴파일 할 코드가 필요하다고 생각합니다 ! 그리고 나는 게으르고 많이 입력하고 싶지 않기 때문에 가능한 가장 짧은 코드로 수행해야합니다.

따라서 작업은 구문 상 유효한 프로그램을 작성하는 것이지만 컴파일러가 무한 루프에 들어가게합니다.

사양

  • 분명히 컴파일러가있는 언어를 사용해야합니다.
  • 각 솔루션에 사용 된 구현을 지정하십시오.
  • 이것은 이므로 가장 짧은 유효한 솔루션 (바이트)이 이깁니다.
  • 컴파일러는 메모리 부족 또는 스택 공간 부족으로 종료 될 수 있습니다.

1
@obarakon 동의하지 않습니다. 다른 도전의 코드를 쉽게이 도전에 이식 할 수는 없습니다. 무한 루핑과 관련된 문제는 근본적으로 다릅니다.
Sriotchilism O'Zaic 1

1
@obarakon 코드 골프가 아니기 때문에이 질문을 속이는 것도 아닙니다 .
Esolanging Fruit


1
나는 (그리고이 경우에도 그것이 정말 점수 것)이 도전에 맞는 모르겠지만, 그 관심이 여기 내가 그것을 할 것입니다 방법 Java: 정의 주석 프로세서를 사용할 수 있습니다있는 (ideone 조각) 호출 할 때 javac와의 -processor선택권. 모든 클래스의 컴파일을 영원히 중단시킵니다.
Aaron

6
컴파일러 충돌을 일으키는 답변 : 느슨하게하기 위해 충돌 할 수있는 한 여전히 오래 걸리기를 원한다고 생각합니다.
GuitarPicker

답변:


16

Japt , 2 바이트

`ÿ

여기 에서 온라인으로 테스트 할 수 있지만 브라우저가 정지되므로 권장하지 않습니다.

설명

Japt는 shoco 라이브러리 를 사용하여 문자열을 압축합니다. 백틱은 다음 백틱 또는 파일 끝까지 모든 것을 압축 해제하도록 컴파일러에 지시합니다. 각 바이트는 다음을 수행합니다.

  • 00-7F 그대로 남아 있습니다.
  • 80-BF각 공통 소문자 두 글자 쌍 (변신 at, oo, th등).
  • C0-DF각각 다음 바이트를 소비하고 공통의 4 문자열 문자열 로 변환 합니다 .
  • E0-EF각각은 다음 3 바이트를 소비하고 "일반적인"8 글자 문자열로 변환합니다 (시작점에서 Whererer내리막 길까지).
  • F0-F7 압축 풀기를 해제하지만 여전히 모든 바이트를 차단 바이트로 반환합니다.
  • F8-FF압축 해제 기가 무한 루프로 들어갑니다. shoco 라이브러리의 내부 작업에 익숙하지 않고 JavaScript 코드는 완전히 읽을 수 없기 때문에 이것이 왜 그런지 잘 모르겠지만 이 경우에는 매우 유용합니다.

나는 Japt 컴파일러를 망칠 다른 방법이 없다고 생각하지만 결코 알지 못한다 ...


10
읽을 수 없다는 것은 무엇을 의미합니까? 분명히 당신은 충분히 열심히 노력하지 않습니다.
fəˈnɛtɪk

나는 emscripten 디 컴파일러가 있었으면 좋겠다 ...
tbodt

58

TikZ (pdfTeX 3.14159265-2.6-1.40.17), 85 79 74 24 22 21 바이트

wchargin 덕분에 많은 바이트가 절약되었습니다.

Chris H 덕분에 1 바이트 절약

\input tikz
\tikz\pic

실제로 숙제를 할 때 실수 로이 문제가 발생했습니다. 무슨 일이 일어나고 있는지 깨닫기 전에 컴파일을 기다리는 데 꽤 오랜 시간을 보냈습니다.

여기에는 두 부분이 있습니다.

\input tikz

TikZ 패키지를로드합니다

과:

\tikz\pic

\tikz환경과 그리기 명령 이 시작됩니다 .

무슨 일이야

pdflatex 컴파일러에 문제가 발생하여 \tikz\pic대화식 모드로 들어가 무한정 정지됩니다.


(1/2) 이것을 재현 할 수 없습니다. "runaway argument ? \draw l\end {document}! \tikz@next."라는 메시지가 나타납니다. pdflatex 3.1415926-2.5-1.40.14 (TeX Live 2013 / Debian)를 사용하는 동안 파일이 종료되었습니다 . tikz 2010/10/13 v2.10. 이것은 apt install texlive-fullUbuntu 14.04의 표준 입니다.
wchargin

1
@ wchargin 나는 동일한 버전을 사용 pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016) 하고 있으며 무한정 반복됩니다. 팁 주셔서 감사합니다.
Sriotchilism O'Zaic

1
\pic정확히 동일한 동작 (tikz 1.142를 사용하여 테스트) 인 \ draw` 대신 바이트를 저장할 수 있습니다.
Chris H

3
나는 실제로 TikZ를 사용 하지 말 것을 주장하고 있다고 믿을 수는 없지만 분명히 사용하는 것은 과도합니다. 이전 \def\a{\a}\a(12 바이트)에 어떤 문제가 있습니까? 또는 이것이 코드 골프이고 ~기본적으로 활성화되어 있기 때문에 \def~{~}~(9 바이트)?
루프 스페이스

2
@ LoopSpace 그들에게 아무런 문제가 없습니다. 나는 존재하는 것을 몰랐습니다. 당신이 당신의 자신의 대답을하고 싶다면 자유롭게 느끼십시오.
Sriotchilism O'Zaic

40

C, 18 바이트

#include __FILE__

컴파일러는 일반적으로 약 200 회 반복 한 후 포기합니다.

DOM 생성은 컴파일 단계로 간주됩니까? 그렇다면 x.htm:

<iframe src=x.htm>

14
재귀 프레임 세트는 IE4를 너무 세게 때려 사용하여 때로는 중요한 OS 구성 요소를 중단시키는 것을 기억합니다. 따라서 HTML이 중요합니다.

10
@ ais523은 IE4 시대에 Internet Explorer "중요한 OS 구성 요소" 였기 때문 입니다.
Mark

2
약간의 조정과 유효한 PHP입니다 : <?include __FILE__;.
Ismael Miguel

6
내 담당자가 충분히 높지 않기 때문에이 답변을 게시 할 수 없지만 #include "/ dev / zero"및 #include "/ dev / stdin"-첫 번째 답변을 조심스럽게 실행하십시오!
rrauenza

2
그것을 시도했을 때 gcc의 메모리 사용량이 제한없이 빠르게 커지기 시작했고 시스템이 응답하지 않게되었고 결국 워치 독이 시작되어 재부팅되었습니다. 그것은 매우 재미있는 :)했다
rrauenza

38

자바, 102 95 89 88 78 바이트

class A<T>{}class B<T>extends A<A<?super B<B<T>>>>{A<?super B<A>>a=new B<>();}

이것은 StackOverflowError일반 해상도 시스템이 다른 제네릭을 해결할 루트를 결정할 수 없기 때문에 발생합니다.

크레딧이있는 곳 .

여기서 어떻게됩니까?

  1. A<T>1 글자 부모가 있습니다. 일반적입니다. 사용할 수는 List있지만 4 개의 문자를 가져오고 반복하는 것이 너무 깁니다.
  2. B<T> 기본 제네릭을 선언합니다.
  3. B extends AB와 사이에 계층 구조가 있어야합니다 A.
  4. extends A<A>에 자체 참조를 만듭니다 A<T>.
  5. A<? super B> 에 대한 일반 검색을 트리거합니다. A<T>
  6. B<B<T>>에 자체 참조를 만듭니다 B<T>.
  7. A<...> a=new B<>()컴파일 할 때 해상도를 강요하고 B나중에 정의하지 않고 제네릭을 단순히 정의하는 대신 제네릭을 사용하도록합니다 .
  8. A<?super B자체 참조를 생성하지 않기 때문에의 제네릭에서 한 유형과 다른 유형에 대한 참조가 모두 A있습니다.
  9. B<A>자체 참조를 생성하지 않기 때문에의 제네릭에서 한 유형과 다른 유형에 대한 참조가 모두 B있습니다.

이제 형식 A에는 generics 형식 AB가 있지만 어느 것을 선택해야합니까? 자아는 잊어 버리세요 B. 핑.

좋아, B제네릭 형식 AB가 있지만 어느 것을 선택해야합니까? 자아는 잊어 버리세요 A. 탁구.

이러한 종류의 재귀는 실제로 다음과 같은 합법적 인 사례가 있기 때문에 피할 수 없습니다 A<B<A<B<A<B<Object>>>>>>: 예 : JSON 객체 : List<Map<String,Map<String,List<Map<String,List<String>>>>>>.

컴파일 결과

$ javac NoCompile.java


The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
        at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3260)
        at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2587)
        at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2579)
        at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:554)
        at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3260)
        at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2592)
        at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2579)
        at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:554)

내 시스템에서 스택 추적은 1024 줄을 표시 한 후 실제로 중지됩니다.이 줄은 실제로 4 개의 동일한 줄이 256 번 반복되어 무한 재귀를 증명합니다. 그 모든 흔적을 아껴 줄게

저금

  1. 102 → 95 바이트 : interface+ implementsclass+ 로 바꿨 습니다 extends.
  2. 95 → 89 바이트 : 교체 Long와 함께 A(2 회).
  3. 89 → 88 바이트 : 사용 된 다이아몬드 연산자 ( new B<A>()new B<>()).
  4. 88 → 78 바이트 : VoteToClose 덕분에 변수 선언을 클래스 멤버로 옮겼습니다 .

1
내가보고있는 것
Addison Crump

다음을 사용하여 이것을 78 바이트로 단축 할 수 있습니다.class A<T>{}class B<T>extends A<A<?super B<B<T>>>>{A<?super B<A>>b=new B<>();}
Addison Crump

@VoteToClose Java 제네릭의 결정 불가능성에 대한 주요 예를보고 있습니다. 각 제네릭은 검증 된 공통 루트에 대해 분석되어야합니다. 여기서 중요한 것은 B 에는 대한 결정 불가능한 참조가 포함되어 있고 대한 결정 불가능한 참조가 A차례로 포함되어 있습니다. 결정 불가능한 방식으로 (주로 자기 참조와 super키워드 덕분에) 리졸버는 실제로 두 제네릭 사이에서 탁구를합니다
Olivier Grégoire

순환 주석으로 컴파일 타임 문제를 만드는 것에 대해 생각하고있었습니다. public @interface X {@X(x=X.class)Class<? extends X> x();}...하지만 왜 그것이 작동하지 않는지 빨리 깨달았습니다.
Magic Octopus Urn

34

GNU 메이크 파일, 8 7 바이트

KonradRudolph 덕분에 1 바이트 절약

다음으로 저장 Makefile및 호출 make:

x:;make

이것은 처음 발견 된 대상에 무한 빌드 재귀를 생성합니다 "x".

프로덕션 서버에서이 포크 폭탄을 실제로 실행하고 싶지 않다는 것은 말할 필요도 없습니다 . :-)

make
make[1]: Entering directory `/path/to/my/dir'
make
make[2]: Entering directory `/path/to/my/dir'
make
make[3]: Entering directory `/path/to/my/dir'
make
make[4]: Entering directory `/path/to/my/dir'
make
make[5]: Entering directory `/path/to/my/dir'
make
make[6]: Entering directory `/path/to/my/dir'
make
make[7]: Entering directory `/path/to/my/dir'
make
...

대체 버전, 5 바이트

KonradRudolph가 제안한 내용 :

x:;$_

$_이전 명령의 마지막 인수에 대한 참조입니다. 보다 구체적으로, 여기에서 실행중인 명령의 절대 경로로 해석 make됩니다.

이것은 진정한 Bash 환경에서는 잘 작동하지만 Windows + MinGW에서는 작동하지 않습니다.


2
흠, 나는 make실제로 Makefile을 컴파일 하지 않는다고 생각 합니다 (그냥 해석 만합니다).
zeppelin

3
@zeppelin 당신 말이 맞아요. 아마도 경계선의 대답 일 것입니다. 즉, 전 처리기 수준에서 매크로 재귀와 관련된 제출은 실제 코드를 컴파일하기 시작하지 않습니다.
Arnauld

11
무한한 빌드 프로세스를 갖는 의도 된 목표에 맞습니다. +1!
YSC

23

C ++, 60 58

template<class T>class a{a<T*>operator->();};a<int>i=i->b;

이것은 반복적으로 인스턴스를 생성합니다 class a 템플릿 매개 변수가 다른 됩니다. GCC 7.0은 900 번의 재귀 수준 이후 operator->비공개 로 인한 오류로 인해 중지 되지만 ICC 17 및 Microsoft (R) C / C ++ Optimizeing Compiler 19 가 godbolt에서 시간 초과 되는 등의 오류가 발생 합니다.

문제는 아마도 모든 컴파일러가 특정 시점에 메모리가 부족하여 재귀 제한이 없어도 중지한다는 것입니다. Clojure 답변에도 동일하게 적용됩니다.

편집 : bolov에 의해 2 바이트 절약-감사합니다


1
더 짧은 :a<int>i=i->b;
bolov

1
@Pockets은 대답에서 언급 한 것처럼 operator->클래스 내에서 기본적으로 비공개 이기 때문 입니다. 구조체 내에서는 공개되어 있으므로 i->b액세스 할 수 있습니다.
Christoph

1
gcc 4.4.7은 여기에 무기한 매달린 것 같습니다. 무한대를 기다리거나 출력을 표시하기를 기다리는 중 빠른 시간이 소요됩니다. 업데이트
예정

1
@osuka_ 아직 실행 중입니까?
Christoph

1
@Christoph nope, 며칠 동안 실행 한 후에 SIGSEGV와 충돌했습니다. 그래도 업데이트를 잊어 버렸습니다. 알림 주셔서 감사합니다!
osuka_

23

, 15 13 바이트

BEGIN{{redo}}

온라인으로 사용해보십시오!

이제 2 바이트가 절약되었습니다 : @Zaid는 Perl에서 루프를 수행하는 더 확실한 방법을 상기시킵니다.

이것은 매우 간단합니다. 무한 루프가있는 파서 후크를 설치하기 때문에 코드를 구문 분석하는 데 시간이 오래 걸립니다. (펄은 구문 분석 도중에 임의의 코드를 실행할 수 있다는 점에서 훌륭합니다. 파서 후크는 펄 자체에 지정되며 라이브러리 가져 오기와 같은 것을 수행하거나 처리하려는 식별자에 대한 구문 분석 규칙을 변경하는 데 자주 사용됩니다 키워드입니다.) 온라인으로 사용해보십시오! 위의 링크 -c는 무한 루프가 컴파일 타임에 발생 함을 증명하는 옵션을 제공합니다 (코드를 컴파일하여 구문이 올바른지 확인하지만 실행하지는 않음).

스크립팅 언어에서 "컴파일 시간"에 대해 궁금한 경우 : Perl은 실제로 바이트 코드로 컴파일 한 다음 바이트 코드를 실행하지만, 프로그래밍 할 때 거의 관련이없는 세부 사항입니다. -MO=(무한 루프가 바이트 코드가 생성되기 전에 발생으로, 아니지만이 프로그램) 명령 행 옵션 제품군은 그것을 실행하는 것보다 다른 바이트 코드와 함께 일을하는 데 사용할 수 있습니다.


1
a:goto a너무 좋아 보인다 (슬프게도 같은 바이트 수).
Dada

3
BEGIN{{redo}}몇 바이트를 절약 할 것입니다
Zaid

20

C ++, 37 30 29 바이트

int f(auto p){f(&p);},a=f(0);

향후 자동 기능 매개 변수를 사용합니다. C ++ 17에 제안되었지만 그것이 그렇게 생각하지는 않습니다. gcc그러나이를 확장으로 지원합니다.

원래

void foo(auto p);

에 해당

template <class T>
void foo(T p);

이 코드는 f다른 템플릿 인수로 재귀 적으로 인스턴스화하려고합니다 . gcc실패

치명적 오류 : 템플릿 인스턴스화 깊이가 최대 900을 초과 함 (최대 -ftemplate-depth = 사용)

함께 -ftemplate-depth=10000내가 침을 갖고 "사망 - 초과 시간 처리"godbolt에 있습니다.

Godbolt에서 확인하십시오


Quentin이 저장 한 1 바이트. 감사합니다.


1
int반환 유형 으로 사용하여 1 바이트를 저장할 수 있습니다 :)
Quentin

실제로 auto함수 매개 변수는 C ++ 17로 만들지 않았습니다. 또한 int f() { ... }, a;지난번에 확인했을 때 법적 선언이 아닙니다. (당신은 같은 변수 선언과 함수 선언을 혼합 할 수 없습니다.) 당신이 여기있어 것은입니다 매우 C의 GCC 고유의 방언 ++. 이 맥락에서 문제가있는 것은 아닙니다. :)
Quuxplusone

19

공통 리스프, 8 바이트

#.(loop)

컴파일러는 양식을 읽으려고 시도하고 코드를 읽을 때 코드를 평가 하고 결과를 컴파일 할 양식으로 사용 하는 sharpsign-dot reader 매크로를 보게 됩니다. 여기서 실행되는 코드는 무한 루프입니다.


17

TeX, 9 바이트

\def~{~}~

TeX는 매크로를 확장하여 작동합니다. 대부분의 경우 TeX의 매크로 ( 제어 시퀀스 라고도 함 )는 형식 \name이지만 특정 문자를 매크로로 정의 할 수도 있습니다 . 이를 활성 문자 라고 합니다 . 문자 ~는 기본 TeX에서 기본적으로 활성화되므로 추가 선언없이 매크로 이름으로 사용할 수 있습니다. \def~{~}위의 정의에가 ~있도록 그것은에 확장 ~. 즉, TeX가 발생할 때마다 ~이를 대체 ~하고 교체를 다시 검사합니다. 이는 완전히 새로운 발생을 발견하고이를 ~대체합니다 ~. 이것은 무한 루프를 정의합니다. 루프를 시작하기 만하면 ~됩니다. 이것이 최종 결과 입니다.


편집에 추가됨

이것을 올바르게 컴파일 하려면 다음 과 같이 호출하십시오.

pdftex -ini "&pdftex \def~{~}~"

-ini플래그는 것을 말한다 pdftex해야 컴파일 새로운 형식의 파일을. TeX가 나중에 문서 처리 속도를 높이기 위해 호출 될 때로드 될 수있는 사전 컴파일 된 정의 세트입니다 (LaTeX2e가 이에 대한 예입니다). 나는 &pdftex총 17 바이트를 차지하면서 몇 바이트를 더 한다고 생각합니다 .


이것은 컴파일 타임에 발생합니까? 이 질문은 컴파일하는 동안 실행하는 것이 아니라 무한 루프가 발생해야합니다.

@ ais523 그 비트에 대해 완전히 생각하지 못했습니다. 나는 TikZ 답변을 풀고 있었다. 몇 바이트를 더 희생하면서 확실히 컴파일 된 대안을 추가했습니다.
루프 스페이스

2
@ ais523 : 언제나처럼, "컴파일"과 "실행"은 같은 동전의 양면입니다. 개인적으로, 저는 TeX 소스 코드를 C ++ 소스 코드가 .exe 파일로 "컴파일"되는 방식과 같은 방식으로 PDF 문서로 "컴파일"하는 것으로 생각합니다. 달리는). 그러나 프로그램이 .exe 파일을 "출력"으로 생성하기 위해 C ++ 입력을 "해석" pdftex하는 것과 같은 방식으로 PDF를 "출력"으로 생성하기 위해 TeX 입력을 "해석"으로 생각할 수도 있습니다 g++. ;)
Quuxplusone 2019

13

하스켈, 25 + 17 = 42 바이트

a= $(let a='a':a in[|a|])

무한 값을 정의하고 컴파일 타임에 해당 값을 계산하려고 시도하는 간단한 Haskell 메타 프로그램입니다.

다음을 호출 ghc -XTemplateHaskell <file.hs>하십시오 (컴파일러에 매개 변수의 경우 +17).


$(let a=a in a)작동하지 않습니까 (32 바이트)?
Ry-

1
아니! GHC는 너무 똑똑합니다. 폼의 무한 루프 let a = a in a는 예외로 다시 쓰여 지므로 무한 루프가 아닌 컴파일러 오류가 발생합니다. (아마도 이것은 다른 Haskell 컴파일러와 함께 작동하지만 시도해 볼 수는 없습니다)
user2407038

그것은 runghc과 함께 작동하므로 유효하다고 말하고 싶습니다. (실제로 ghc에서도 작동합니다. 여기 8.0.1입니다.)
Ry-

정말? 나는 ghc 8.0.1도 사용하고 있습니다- Exception when trying to run compile-time code: <<loop>>인터프리터와 컴파일 할 때 제공합니다 ... 기술적으로 위의 코드는 예외로 죽지 만 스펙에 의해 명시 적으로 허용되는 스택 오버플로- 그리고 당신이 무한한 기억을 가지고 있다면, 그것은 영원히 영원히 반복 될 것입니다. <<loop>>예외 화재 내 컴퓨터는 메모리가 부족 훨씬 전에.
user2407038

12

gradle, 10 9 바이트

for(;;){}

위의 코드를 build.gradle파일에 넣습니다 . Gradle은 groovy를 기본 언어로 사용하므로 실제로 groovy에 대해 이야기하고 있지만 질문은 빌드 시간에 관한 것이므로 gradle이 더 적합 할 것이라고 생각했습니다.

위의 코드로 gradle 빌드 명령을 실행하면 뾰족한 머리 보스 호환 빌드 상태 줄이 인쇄됩니다.

$ gradle tasks
> Configuring > 0/1 projects > root project

인상을 목표로하는 경우 디버그 -d플래그를 추가하십시오 .

$ gradle -d tasks
14:56:25.522 [INFO] [org.gradle.internal.nativeintegration.services.NativeServices] Initialized native services in: .gradle/native
14:56:25.757 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClient] Executing build 84908c0d-f28d-4c57-be61-40eaf0025e16.1 in daemon client {pid=27884}
14:56:25.761 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface tun0
14:56:25.762 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
14:56:25.762 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? false
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /x:x:x:x:x:x:%tun0
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /x.x.x.x
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface eth1
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /x:x:x:x:x:x:%eth1
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /x.x.x.x
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface eth1
14:56:25.764 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface lo
<snip>
14:57:07.055 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
14:57:07.056 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
14:57:07.056 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
14:57:07.056 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
> Configuring > 0/1 projects > root project

매우 복잡해 보이는 것 외에도 새로운 세트로 업데이트됩니다.

15:07:57.054 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
15:07:57.054 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
15:07:57.054 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
15:07:57.055 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
15:07:57.055 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
15:07:57.055 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
15:07:57.055 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.

10 초마다 상태 표시 줄로 인해 빌드가 중요한 기술적 인 작업을 수행하는 것처럼 보입니다.


8

SWI- 프롤로그, 34 바이트

term_expansion(_,_):-repeat,1=0.

설명

term_expansion/2 소스 코드의 일부 용어를 다른 용어로 변환하기 위해 실제로 코드를 컴파일하기 전에 컴파일러가 자동으로 호출하는 것입니다.

여기, 우리는을위한 새로운 규칙을 소개 term_expansion/2: repeat,1=0..

repeat/0 항상 성공하고 무한한 수의 선택 포인트를 제공하는 술어입니다.

1=01와의 통일 을 시도하고 있습니다. 0항상 그렇습니다 false. 이로 인해 컴파일러 repeat는 항상 선택 지점을 제공하기 때문에 역 추적하고 1=0다시 시도 합니다.


GNU Prolog에서는 작동하지 않으므로 구현에 따라 다릅니다. 제목에 컴파일러 이름을 넣을 수 있습니다. (저는 SWI 프롤로그를 가정합니다.)

@ ais523 감사합니다. 다른 배포판을 확인하지는 않았지만, 컴파일러는 일반적으로 매우 구체적이기 때문에 더 잘 알고 있어야합니다 ...
Fatalize

@ ais523 그러나에 따르면 , 당신은 사용할 수 있습니다 expand_term(이 말한대로 대신 term_expansion여기에 GNU 프롤로그처럼 사용할 수 없습니다). expand_termSWI 에서는 작동하지 않습니다 .
Fatalize

7

GNU 메이크, 44

.PHONY:x
$(MAKEFILE_LIST):x;sleep 1;touch $@

이에 대한 크레딧을 청구 할 수 없습니다. 이 글은 Robert Mecklenburg의 저서 " GNU Make로 프로젝트 관리 : 무엇이든 빌드 할 수있는 GNU Make의 힘"에서 발췌 한 것 입니다.

make가이 makefile을 실행하면 makefile이 오래되었다는 것을 알 수 있습니다 (.PHONY 대상이 오래되었으므로 touch 명령을 실행하여 makefile의 타임 스탬프를 업데이트합니다). 그러면 make는 파일을 다시 읽고 발견합니다. makefile이 오래되었습니다 ... 글쎄요.

나는 이것이 재귀를 사용하지 않기 때문에 다른 Make answer에 이것을 선호합니다 . 내 VM에서 다른 Make 응답은 프로세스를 계속 진행하며 약 7,000 곳의 깊이에서 VM이 응답하지 않습니다. 그러나이 답변을 통해 시스템 리소스를 먹지 않고도 무기한으로 계속할 수 있습니다. 이 빌드로 느슨해 질 수 있습니다. 명백한 시스템 성능 저하없이 1,000,000 회 이상 반복했습니다.

참고 sleep 1makefile 타임 스탬프가 실제로 매번 업데이트되도록 추가해야 했습니다. sleep 0.01반복을 조금 더 빨리 타려면 이로 변경할 수 있습니다 .


6

GNU Forth, 15 바이트

골프

: : [do] [loop]

단어를 다시 정의 (다시 컴파일) 하고 새 정의 내에서 컴파일 타임에 :즉시 무한 루프를 호출합니다 [do] [loop].

단어의 한 범주는 컴파일되지 않습니다. 이러한 소위 즉각적인 단어는 텍스트 인터프리터가 해석 중인지 또는 컴파일 중인지에 관계없이 실행 (지금 수행)됩니다.

온라인으로 사용해보십시오!


5

클로저, 21 바이트

(defmacro a[]`(a))(a)

반복해서 호출을하는 매크로를 정의하여 컴파일러를 묶습니다.

휴대 전화에서 REPL이 기기를 멈추고 지연시킵니다. 내 랩톱에서 이것은 StackOverflow와 함께 실패합니다.

불행히도 StackOverflow는 즉시 발생하지만 규칙에 따라 여전히 유효합니다.


5

MSBuild, 130 바이트

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="X">
        <Exec Command="msbuild"/>
    </Target>
</Project>

이것을 .proj확장자가 있는 파일로 저장 msbuild하고 명령 프롬프트에서 실행 하십시오. MSBuild는 다른 msbuild프로세스 를 생성하는 유일한 대상을 실행합니다 .


이 들여 쓰기가 필요합니까? 줄 바꿈은 어떻습니까? 일반적으로 공백을 골라내는 것이 가능합니다.

아니요, 읽기가 더 쉽습니다. 문자 수에는 공백이 포함되지 않습니다.
Danko Durbić

1
아 맞다. 이 경우 게시물 본문에서 언급해야 할 것입니다.


4

매스 매 티카 33 바이트

Compile[{},Evaluate@While[True,]]

코드는 컴파일 전에 인수를 상징적으로 평가하려고 시도하며 인수 자체는 무한 루프입니다. While 함수는 중요하지 않기 때문에 두 번째 널 인수가 있습니다.


"편집 전"예 ... 아니오.
CalculatorFeline

유효한 인수를 제공하십시오. reference.wolfram.com/language/tutorial/…
Kelly Lowder

문제는 루프가 Compile호출 중에 또는 호출 전에 발생합니까?
CalculatorFeline

3

하스켈 (GHC, 없이 템플릿 하스켈 또는 사용자 정의 재 작성 규칙) , (138)

{-#LANGUAGE FlexibleContexts,UndecidableInstances#-}
data A x=A
class C y where y::y
instance C(A(A x))=>C(A x)where y=A
main|A<-y=pure()

이론적으로 이것은 C ++ 접근 방식 과 거의 같은 방식으로 무한 루프에 들어갑니다 . 다형성 방법 y은 훨씬 더 복잡한 유형으로 인스턴스화됩니다. 실제로 할당 된 기본 스택 크기는 실제로 빠르게 오버플로됩니다.

$ ghc-7.10 wtmpf-file14146.hs 
[1 of 1] Compiling Main             ( wtmpf-file14146.hs, wtmpf-file14146.o )

wtmpf-file14146.hs:5:9:
    Context reduction stack overflow; size = 101
    Use -fcontext-stack=N to increase stack size to N
      C (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A (A t0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
    In a stmt of a pattern guard for
                   an equation for ‘main’:
      A <- y
    In an equation for ‘main’: main | A <- y = pure ()

Luke Palmer의 크레딧 .


1

하스켈 (ghc), 32 + 2 = 34 바이트

{-#RULES""main=main#-}
main=main

로 실행하십시오 ghc -O <file>. 같은 것에 다시 쓰는 주 함수에 대한 다시 쓰기 규칙을 트리거합니다. 유감스러운 유일한 기능은 ghc가이를 감지하고 100 번의 반복 후에 멈출만큼 똑똑하다는 것입니다. 이 동작을 해제하는 쉬운 방법을 모르겠습니다.


1

부, 25 바이트

macro l:
 x=0 while 1>0
l

컴파일 타임에 실행되는 매크로를 정의하여 무한 루프를 실행 한 다음 매크로를 호출합니다.


1

녹, 18 바이트

include!(file!());

클래식 자체 포함. Rustc는 성가 시게 제정신이며 기본적으로 128 회귀 후에 구제되며 깊이 우선을 확장하므로 지수 성장도 작동하지 않습니다. C 및 C ++ 솔루션에도 동일하게 적용됩니다.


0

계수 , 29 16

<< [ t ] loop >>

사이의 부분은 << >>구문 분석 시간에 실행됩니다.

무엇에 관해서 [ t ] loop 는, 나는 당신이 추측하게 할 것입니다 ...

이를 리스너에있는 그대로 두거나 해당 상용구가있는 어휘 또는 스크립트 파일에 추가 할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.