सबसे कम कोड कानूनी तौर पर सुस्त बंद करने के लिए


146

मैं एक डेवलपर हूं, और मेरा काम करने का मन नहीं है। मैं एक्सकेसीडी से जानता हूं कि थप्पड़ मारने का सबसे अच्छा बहाना यह है कि आपके कोड का संकलन है । इस वजह से, मुझे लगता है कि मुझे कुछ कोड की आवश्यकता है जो हमेशा के लिए संकलन करेंगे ! और क्योंकि मैं आलसी हूं और ज्यादा टाइप नहीं करना चाहता, इसलिए कम से कम कोड के साथ ऐसा करना पड़ता है।

तो, आपका कार्य एक प्रोग्राम लिखना है जो वाक्य-रचना के लिए वैध है, लेकिन इससे कंपाइलर एक अनंत लूप में प्रवेश करेगा।

विशेष विवरण

  • आपको एक ऐसी भाषा का उपयोग करना चाहिए, जिसमें एक संकलक हो, जाहिर है।
  • प्रत्येक समाधान में उपयोग किए गए कार्यान्वयन को निर्दिष्ट करें।
  • यह , इसलिए सबसे कम वैध समाधान (बाइट्स में) जीतता है।
  • कंपाइलर मेमोरी या स्टैक स्पेस से बाहर निकलने से समाप्त कर सकता है।

1
@obarakon मैं असहमत हूं। अन्य चुनौती के कोड को किसी भी आसानी से इस चुनौती में पोर्ट नहीं किया जा सकता है। दोनों अनंत लूपिंग को शामिल करते हुए चुनौतियां मौलिक रूप से अलग हैं।
श्रीओटचिलिज्म ओ'जैसिक

1
@obarakon इस सवाल का एक हिस्सा भी नहीं है , क्योंकि यह कोड-गोल्फ नहीं है।
फल


1
मुझे यकीन नहीं है कि यह इस चुनौती को फिट करता है (और भले ही यह बहुत अच्छा स्कोर करेगा), लेकिन यहां दिलचस्पी रखने वालों के लिए कि मैं इसमें कैसे करूंगा Java: एनोटेशन प्रोसेसर (आइडोन स्निपेट) को परिभाषित करें, जिसका उपयोग आप तब करेंगे जब आप javacइसके साथ इन्वोकेशन करेंगे -processorविकल्प। यह किसी भी वर्ग के संकलन को हमेशा के लिए लटका देता है।
हारून

6
संकलक को क्रैश करने वाले उत्तरों के लिए: स्लैकिंग के उद्देश्य के लिए, मुझे लगता है कि आप अभी भी इसे तब तक लेना चाहेंगे जब तक आप दुर्घटनाग्रस्त हो सकते हैं।
गिटारपाइक्टर

जवाबों:


16

जाप , 2 बाइट्स

`ÿ

आप इसे यहाँ ऑनलाइन टेस्ट कर सकते हैं , लेकिन मैं इसे अनुशंसित नहीं करूंगा क्योंकि यह आपके ब्राउज़र को फ्रीज कर देगा।

व्याख्या

Japt तार को संपीड़ित करने के लिए shoco लाइब्रेरी का उपयोग करता है । एक बैकटिक कंपाइलर को अगली बैकटिक या फ़ाइल के अंत तक सब कुछ डीकंप्रेस करने के लिए कहता है। प्रत्येक बाइट निम्नलिखित करता है:

  • 00-7F बरकरार हैं।
  • 80-BFप्रत्येक एक आम लोअरकेस दो अक्षर का युग्म (में बदलना at, oo, th, आदि)।
  • C0-DFप्रत्येक अगले बाइट का उपभोग करते हैं और एक सामान्य चार-अक्षर स्ट्रिंग में बदल जाते हैं
  • E0-EFप्रत्येक अगले तीन बाइट्स का उपभोग करते हैं और एक "सामान्य" आठ-अक्षर स्ट्रिंग ( Wherererवहां से शुरू होने और नीचे जाने पर) में बदल जाते हैं।
  • F0-F7 डिकम्प्रेसर को तोड़ना, हालांकि यह अभी भी ब्रेकिंग बाइट तक सब कुछ लौटाता है।
  • F8-FFडिकंप्रेसर को अनंत लूप में प्रवेश करने का कारण बनता है। मुझे यकीन नहीं है कि ऐसा क्यों है, क्योंकि मैं शॉको लाइब्रेरी (और जावास्क्रिप्ट कोड पूरी तरह से अप्राप्य है) के आंतरिक कामकाज से परिचित नहीं हूं , लेकिन यह इस मामले में काफी आसान है।

मुझे विश्वास नहीं है कि जाप संकलक के साथ गड़बड़ करने का कोई और तरीका है, लेकिन आप कभी नहीं जानते ...


10
आपका क्या मतलब है यह अपठनीय है। स्पष्ट रूप से आप अभी पर्याप्त प्रयास नहीं कर रहे हैं।
f --n 20tɪk 20

काश कोई ईमस्क्रिप्टेन डिकंपाइलर होता ...
tbodt

58

TikZ (pdfTeX 3.14159265-2.6-1.40.17), 85 79 74 24 22 21 बाइट्स

बाइट्स के एक समूह ने बछिया को धन्यवाद दिया

एक बाइट ने क्रिस एच को धन्यवाद दिया

\input tikz
\tikz\pic

जब मैं गृहकार्य पर काम कर रहा था तब मुझे वास्तव में दुर्घटना का सामना करना पड़ा। इससे पहले कि मुझे एहसास हुआ कि क्या हो रहा था, संकलन करने के लिए मैंने काफी समय बिताया।

इसके दो भाग हैं:

\input tikz

यह TikZ पैकेज को लोड करता है

तथा:

\tikz\pic

यह एक \tikzवातावरण और ड्रॉ कमांड शुरू करता है।

क्या हो रहा है

Pdflatex संकलक के साथ परेशानी होती है \tikz\pic, और इंटरेक्टिव मोड में प्रवेश करता है, जिससे यह अनिश्चित काल के लिए रुक जाता है।


(१/२) मैं इसे पुन: पेश नहीं कर सकता। मुझे "भगोड़ा तर्क मिलता है? " Pdflatex 3.1415926-2.5-1.40.14 (TeX लाइव 2013 / डेबियन) का \draw l\end {document}उपयोग करते हुए फ़ाइल समाप्त हो गई \tikz@next.। tikz 2010/10/13 v2.10। यह apt install texlive-fullUbuntu 14.04 पर मानक है ।
वचर्जिन

1
@wchargin मैं उसी संस्करण का उपयोग कर रहा हूं pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016) और यह वास्तव में अनिश्चित काल के लिए लूप करता है। सुझावों के लिए धन्यवाद।
श्रीओटीचिलिज्म ओ'जैसिक

1
आप एक बाइट \picको \ _ के बजाय का उपयोग करके बचा सकते हैं - बिल्कुल समान व्यवहार (tikz 1.142 का उपयोग करके परीक्षण किया गया)
क्रिस एच

3
मुझे विश्वास नहीं हो रहा है कि मैं वास्तव में TikZ का उपयोग नहीं करने की वकालत कर रहा हूं, लेकिन निश्चित रूप से इसका उपयोग यहां ओवरकिल है। पुराने \def\a{\a}\a(12 बाइट्स) में क्या गलत है ? या, जैसा कि यह कोड गोल्फ है और ~डिफ़ॉल्ट रूप से सक्रिय है, \def~{~}~(9 बाइट्स)?
लूप स्पेस

2
@ लूपस्पेस कुछ भी गलत नहीं है उनके साथ मैं अभी अस्तित्व में नहीं था। यदि आप अपना जवाब देना चाहते हैं तो स्वतंत्र महसूस करें।
श्रीओटीचिलिज्म ओ'जैसिक

40

सी, 18 बाइट्स

#include __FILE__

कंपाइलर्स आमतौर पर लगभग 200 बार आवर्ती करने के बाद छोड़ देते हैं।

क्या एक निर्माण कदम के रूप में डोम निर्माण की गिनती है? यदि ऐसा है, तो x.htm:

<iframe src=x.htm>

14
मुझे याद है कि पुनरावर्ती फ्रेमसेट IE4 को इतनी मुश्किल से क्रैश करते थे कि यह कभी-कभी इसके साथ महत्वपूर्ण ओएस घटकों को नीचे ले जाता था। तो वहाँ HTML शायद मायने रखता है।

10
@ ais523, कि, क्योंकि IE4 दिनों में, इंटरनेट एक्सप्लोरर है था एक "महत्वपूर्ण ओएस घटक"।
मार्क

2
थोड़ा सा ट्विकिंग और यह वैध है PHP <?include __FILE__;:।
इस्माईल मिगुएल

6
यह उत्तर पोस्ट नहीं कर सकता क्योंकि मेरा प्रतिनिधि पर्याप्त उच्च नहीं है, लेकिन दो विकल्प हैं: #include "/ dev / zero" और #include "/ dev / stdin" - पहले वाले को चलाने में सावधानी बरतें !!
१५

2
जब मैंने कोशिश की कि जीसीसी की मेमोरी का उपयोग बिना किसी बाध्यता के तेजी से बढ़ने लगा, तो सिस्टम अनुत्तरदायी हो गया, और मेरे वॉचडॉग ने अंततः लात मारी और रिबूट किया। यह काफी मनोरंजक था :)
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 Aके बीच एक पदानुक्रम होना आवश्यक है Bऔर 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में जेनेरिक प्रकार है Aऔर B, लेकिन जिसे चुना जाना है? स्वयं के बारे में भूल जाओ, चलो हल करने का प्रयास करें B। पिंग।

ठीक है, Bजेनेरिक प्रकार Aऔर है B, लेकिन जिसे चुना जाना है? स्वयं के बारे में भूल जाओ, चलो हल करने का प्रयास करें 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+ के implementsसाथ class+ extends
  2. 95 → 89 बाइट्स: (दो बार) के Longसाथ प्रतिस्थापित A
  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 आप जावा के जेनरिक में अनिर्वायता का एक प्रमुख उदाहरण देख रहे हैं। प्रत्येक जेनेरिक को एक आम रूट के खिलाफ हल किया जाना चाहिए, जो तब के खिलाफ एक मान्य है। यहाँ बात यह है कि जेनेरिक का Bएक अनिर्दिष्ट संदर्भ होता है, Aजिसके बदले में बी। के जेनेरिक का एक अपरिहार्य संदर्भ होता है। जब रिज़ॉल्वर तय नहीं कर सकता है, तो इसमें शामिल संदर्भों की जाँच होती है, लेकिन यहाँ दोनों जेनरिक एक दूसरे को संदर्भित करते हैं। एक अनिर्णनीय रास्ता (ज्यादातर आत्म संदर्भ और करने के लिए धन्यवाद में superकीवर्ड तो दो जेनरिक के बीच समाधानकर्ता वास्तव में पिंग
ओलिवर Grégoire

मैं चक्रीय एनोटेशन के साथ एक संकलन-समय समस्या बनाने के बारे में सोच रहा था: public @interface X {@X(x=X.class)Class<? extends X> x();}... लेकिन मुझे जल्दी से एहसास हुआ कि यह काम क्यों नहीं करेगा।
मैजिक ऑक्टोपस Urn

34

जीएनयू मेकफाइल, 8 7 बाइट्स

एक बाइट ने कोनराडुडोल्फ के लिए धन्यवाद बचाया

के रूप में सहेजा 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स्वयं है।

यह एक वास्तविक बैश वातावरण में ठीक काम करना चाहिए, लेकिन Windows + MinGW पर नहीं।


2
हम्म, मुझे नहीं लगता कि makeयह वास्तव में मेकफाइल को संकलित करता है (यह सिर्फ इसकी व्याख्या करता है)।
जेपेलिन

3
@zeppelin आप सही कह रहे हैं, यह शायद एक सीमावर्ती उत्तर है। उस ने कहा, प्रीप्रोसेसर स्तर पर मैक्रो रिकर्सन शामिल करने वाली प्रस्तुतियाँ कभी भी किसी वास्तविक कोड को संकलित करना शुरू नहीं करेंगी।
अरनौलद

11
यह इच्छित लक्ष्य को पूरा करता है: एक अनंत निर्माण प्रक्रिया। +1!
YSC

23

सी ++, 60 58

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

यह class aविभिन्न टेम्पलेट मापदंडों के साथ पुनरावृत्ति पैदा करता है । जीसीसी 7.0 operator->निजी होने के बारे में त्रुटियों के टन के साथ 900 पुनरावृत्ति के स्तर के बाद बंद हो जाता है, लेकिन उदाहरण के लिए ICC 17 और Microsoft (R) C / C ++ कंपाइलिंग को गॉडबोल्ट पर 19 बार ऑप्टिमाइज़ करना ।

इसके साथ समस्या यह है कि शायद सभी कंपाइलर किसी समय में मेमोरी से बाहर हो जाएंगे, इसलिए बिना पुनरावृत्ति सीमा के भी यह बंद हो जाएगा। वही शायद क्लोजर उत्तर पर भी लागू होता है।

संपादित करें: 2 बाइट्स बोल्ट द्वारा बचाए गए - धन्यवाद


1
छोटा:a<int>i=i->b;
बोलोव

1
@ पॉकेट्स जैसे मैंने अपने उत्तर में कहा था कि क्योंकि operator->एक कक्षा के भीतर डिफ़ॉल्ट रूप से निजी है। एक संरचना के भीतर यह सार्वजनिक है और इसलिए i->bइसे एक्सेस कर सकते हैं।
क्रिस्टोफ

1
4.4.1 gcc अनिश्चित काल के लिए यहां लटका हुआ लगता है। अनन्तता की प्रतीक्षा में या इसके लिए आउटपुट दिखाने के लिए, जो भी पहले आता है। अपडेट होगा
osuka_

1
@osuka_ क्या यह अभी भी चल रहा है?
क्रिस्टोफ

1
@Christoph नहीं, यह एक SIGSEGV के साथ दुर्घटनाग्रस्त हो गया जब मैंने इसे एक दो दिनों के लिए छोड़ दिया। हालांकि, अद्यतन करने के लिए भूल गए - अनुस्मारक के लिए धन्यवाद!
ओसुका_

23

पर्ल , 15 13 बाइट्स

BEGIN{{redo}}

इसे ऑनलाइन आज़माएं!

अब 2 बाइट्स बचाए जाने के साथ: @Zaid ने मुझे पर्ल में पाश करने के लिए एक कठिन तरीका याद दिलाया।

यह बहुत सरल है: यह सिर्फ एक अनंत लूप के साथ एक पार्सर हुक स्थापित करता है, जिससे कोड को पार्स करने के लिए असीम रूप से लंबा हो जाता है। (इसमें पर्ल का अच्छा है कि यह आपको पार्स के बीच में मनमाना कोड चलाने की अनुमति देता है; पार्सर हुक पर्ल में ही निर्दिष्ट हैं, और अक्सर आयात पुस्तकालयों जैसे कामों के लिए किया जाता है या पहचानकर्ता के लिए पार्सिंग नियमों को बदलना चाहते हैं। एक कीवर्ड।) इसे ऑनलाइन आज़माएं! ऊपर लिंक -cविकल्प देता है (शुद्धता के लिए वाक्यविन्यास को सत्यापित करने के लिए कोड को संकलित करने के लिए, लेकिन इसे न चलाएं), यह साबित करने के लिए कि अनंत लूप संकलन समय पर होता है।

यदि आप स्क्रिप्टिंग भाषा में "संकलित समय" के बारे में सोच रहे हैं: पर्ल वास्तव में बायटेकोड के लिए संकलित करता है और फिर बाईटकोड चलाता है, लेकिन यह एक ऐसा विवरण है जो इसे प्रोग्रामिंग करते समय शायद ही कभी प्रासंगिक होता है। -MO=आदेश पंक्ति विकल्प परिवार (हालांकि नहीं इस कार्यक्रम के साथ के रूप में अनंत लूप होता है से पहले बाईटकोड उत्पन्न किया जा सकता) इसे चलाने के अलावा अन्य बाईटकोड के साथ काम करने के लिए इस्तेमाल किया जा सकता।


1
a:goto aबहुत अच्छा लग रहा है (उदासी से वही)
दादा

3
BEGIN{{redo}}आपको कुछ बाइट्स बचाएगी
Zaid

20

सी ++, 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- गहराई = का उपयोग करें)

इसके साथ -ftemplate-depth=10000मुझे गॉडबोल्ट पर "किल्ड - प्रोसेसिंग टाइम ओवर" हो गया।

इसे गॉडबोल्ट पर चेक करें


क्वेंटिन द्वारा बचाए गए 1 बाइट। धन्यवाद।


1
एक बाइट intको वापसी प्रकार के रूप में उपयोग करके बचाया जा सकता है :)
क्वेंटिन

दरअसल, autoफंक्शन पैरामीटर ने इसे C ++ 17 में नहीं बनाया; और int f() { ... }, a;पिछली बार जब मैंने जाँच की तो कानूनी घोषणा भी नहीं है। (आप इस तरह की परिवर्तनशील घोषणाओं के साथ फ़ंक्शन घोषणाओं को नहीं मिला सकते हैं।) आपको यहां जो मिला है वह C ++ की एक अत्यंत जीसीसी-विशिष्ट बोली है। इस संदर्भ में ऐसा कुछ भी गलत नहीं है। :)
क्क्सप्लसोन

19

आम लिस्प, 8 बाइट्स

#.(loop)

कंपाइलर एक फॉर्म को पढ़ने की कोशिश करेगा और शार्पसाइन-डॉट रीडर मैक्रो का सामना करेगा , जो रीड टाइम पर कोड का मूल्यांकन करता है और इसके परिणाम को संकलन के रूप में उपयोग करता है। यहां, कोड निष्पादित किया जा रहा है एक अनंत लूप है।


17

TeX, 9 बाइट्स

\def~{~}~

TeX मैक्रोज़ का विस्तार करके काम करता है। ज्यादातर समय, TeX के मैक्रोज़ (जिसे नियंत्रण अनुक्रम भी कहा जाता है ) रूप के होते हैं, \nameलेकिन मैक्रो के रूप में कुछ वर्णों को परिभाषित करना भी संभव है, इन्हें सक्रिय वर्ण कहा जाता है । यह चरित्र ~सादे TeX में डिफ़ॉल्ट रूप से सक्रिय है और इसलिए इसे आगे की घोषणा के बिना मैक्रो नाम के रूप में उपयोग किया जा सकता है। इसके \def~{~}बाद के संस्करण में परिभाषित करता है ~ताकि यह करने के लिए फैलता है ~। अर्थात्, जब भी TeX का सामना होता है, ~तब वह इसे बदल देता है ~और फिर प्रतिस्थापन की फिर से जांच करता है, जिसका अर्थ है कि यह पूरी तरह से एक नई घटना का सामना करता है ~और इसके द्वारा प्रतिस्थापित करता है ~। यह अनंत लूप को परिभाषित करता है। इसके बाद सभी को लूप शुरू करना होता है और यही फाइनल ~होता है।


एडिट में जोड़ा गया

इसे ठीक से संकलित करने के लिए, इस रूप में आमंत्रित करें:

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

-iniध्वज का कहना है कि pdftexचाहिए संकलन एक नया प्रारूप फ़ाइल। यह परिभाषाओं का एक पूर्वनिर्धारित सेट है जिसे तब लोड किया जा सकता है जब टीएक्स को बाद में एक दस्तावेज प्रसंस्करण में तेजी लाने के लिए आमंत्रित किया जाता है (LaTeX2e इसका एक उदाहरण है)। मुझे लगता है कि &pdftexकुछ बाइट्स जोड़ता है, कुल 17 तक ले जाता है।


क्या यह संकलन के समय होता है? प्रश्न को संकलित करते समय होने वाले अनंत लूप की आवश्यकता होती है, न कि दौड़ते समय।

@ ais523 पूरी तरह से उस बिट के बारे में नहीं सोचा था। मैं टिकज के उत्तर को टटोल रहा था। मैंने एक विकल्प जोड़ा है जो निश्चित रूप से संकलित है, कुछ और बाइट्स की कीमत पर।
लूप स्पेस

2
@ ais523: हमेशा की तरह, "संकलन" और "रनिंग" एक ही सिक्के के दो पहलू हैं। व्यक्तिगत रूप से, मैं TeX स्रोत कोड को पीडीएफ दस्तावेजों में "संकलन" के रूप में सोचता हूं (जो तब देखने के द्वारा "निष्पादित" किया जाता है), उसी तरह से C ++ स्रोत कोड को .exe फ़ाइलों में "संकलित" किया जाता है (जो तब "निष्पादित" होते हैं)। चल रहा है)। लेकिन आप pdftexप्रोग्राम को "आउटपुट" के रूप में पीडीएफ बनाने के लिए "एक्सएक्सएक्स इनपुट" की व्याख्या करने के रूप में भी सोच सकते हैं - उसी तरह जिस तरह से g++प्रोग्राम "सी +" इनपुट को "आउटपुट" के रूप में .exe फ़ाइल का उत्पादन करने के लिए। ;)
क्क्सप्लसोन

13

हास्केल, 25 + 17 = 42 बाइट्स

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

एक साधारण हास्केल मेटाप्रोग्राम जो एक अनंत मूल्य को परिभाषित करता है और उस मूल्य को संकलन समय पर गणना करने का प्रयास करता है।

ghc -XTemplateHaskell <file.hs>संकलक के पैरामीटर के लिए (+17 के साथ )


करता है $(let a=a in a)(32 बाइट्स के लिए) काम नहीं?
Ry-

1
नहीं! जीएचसी बहुत स्मार्ट है। फॉर्म का कोई भी अनंत लूप let a = a in aएक अपवाद के लिए फिर से लिखा जाता है, जो अनंत लूप के विपरीत एक संकलक त्रुटि का कारण बनता है। (हालांकि शायद यह एक अलग हास्केल संकलक के साथ काम करेगा, लेकिन मेरे पास कोशिश करने के लिए एक नहीं है)
user2407038

यह मेरे लिए रनगच के साथ काम करता है, इसलिए मैं कहूंगा कि यह वैध है। (वास्तव में, यह gcc के साथ भी काम करता है। 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 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=0के 1साथ एकजुट करने की कोशिश कर रहा है 0, जो हमेशा से है false। यह संकलक को पीछे करने का कारण बनेगा repeat(क्योंकि यह हमेशा एक पसंद बिंदु प्रदान करता है) और 1=0फिर से प्रयास करें, आदि।


जीएनयू प्रोलॉग में काम नहीं करता है, इसलिए मैं मान रहा हूं कि यह कार्यान्वयन-विशिष्ट है। आप शीर्षक में एक संकलक का नाम रखना चाह सकते हैं। (मैं एसडब्ल्यूआई

@ ais523 धन्यवाद, अन्य गड़बड़ियों पर जाँच नहीं की, लेकिन चूंकि संकलक सामान आमतौर पर बहुत विशिष्ट है, मुझे बेहतर पता होना चाहिए ...
घातक

@ ais523 हालांकि के अनुसार इस , आप का उपयोग करने में सक्षम हो सकता है expand_term(के रूप में यह कहते हैं बजाय term_expansionयहां जीएनयू Prolog में की तरह इस्तेमाल नहीं किया जा सकता है)। हालांकि यह expand_termएसडब्ल्यूआई के साथ काम नहीं करता है ।
15

7

जीएनयू मेक, 44

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

मैं इसके लिए क्रेडिट का दावा नहीं कर सकता। यह रॉबर्ट मेकलेनबर्ग की पुस्तक मैनेजिंग प्रोजेक्ट्स विद ग्नू मेक: द पावर ऑफ ग्नू मेक फॉर बिल्डिंग एनीथिंग से लिया गया है

जब इस मेकफाइल को निष्पादित किया जाता है, तो यह देखता है कि मेकफाइल पुराना है (क्योंकि .PHONY लक्ष्य पुराना है, इसलिए यह टच कमांड को निष्पादित करता है, जो मेकफाइल के टाइमस्टैम्प को अपडेट करता है। फिर फाइल को फिर से पढ़ता है और पता चलता है। makefile पुराना हो गया है।

मैं इसे अन्य मेक उत्तर के लिए पसंद करता हूं क्योंकि यह पुनरावृत्ति का उपयोग नहीं करता है। मेरे वीएम पर, अन्य मेक जवाब प्रक्रियाओं को जारी रखने और लगभग 7,000 गहरे में जारी है, वीएम एक गैर-जिम्मेदार पड़ाव के लिए पीसता है। हालांकि, इस जवाब के साथ यह सिस्टम संसाधनों को खाए बिना अनिश्चित काल तक जारी रखने में सक्षम है। तुम सच में इस निर्माण के साथ सुस्त करने में सक्षम हो जाएगा। मैं कोई स्पष्ट सिस्टम गिरावट के साथ 1,000,000 पुनरावृत्तियों पर चला गया है।

नोट मुझे जोड़ना था sleep 1ताकि मेकफाइल टाइमस्टैम्प वास्तव में हर बार अपडेट हो। आप इसे बदल सकते हैं sleep 0.01यदि आप चाहते हैं कि यह थोड़ी तेजी से पुनरावृत्तियों के माध्यम से जल जाए।


6

जीएनयू फोर्थ, 15 बाइट्स

golfed

: : [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प्रक्रिया को जन्म देता है।


क्या इसके लिए काम करने के लिए इंडेंटेशन की जरूरत है? न्यूलाइन्स के बारे में क्या? व्हॉट्सएप को गोल्फ से बाहर करना आम तौर पर संभव है।

नहीं, यह पढ़ना आसान है। वर्ण गणना में व्हॉट्सएप शामिल नहीं है।
डैंको डर्बिएक

1
ठीक है। उस स्थिति में आपको संभवतः पोस्ट के शरीर में इसका उल्लेख करना चाहिए।


4

गणितज्ञ 33 बाइट्स

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

संहिता संकलन से पहले तर्क का प्रतीकात्मक रूप से मूल्यांकन करने का प्रयास करेगी, और तर्क स्वयं एक अनंत लूप है। जबकि महत्वपूर्ण नहीं है, जबकि फ़ंक्शन का एक अशक्त दूसरा तर्क है।


"संकलन से पहले" हाँ ... नहीं।
कैलकुलेटरफाइनल

कृपया एक मान्य तर्क प्रदान करें। reference.wolfram.com/language/tutorial/…
केली लोल्डर

सवाल यह है कि क्या लूप Compileकॉल के दौरान या उससे पहले होता है?
कैलक्यूलेटरफैलिन

3

हास्केल (जीएचसी, बिना टेम्पलेट हास्केल या कस्टम पुनर्लेखन नियम) , 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 ()

ल्यूक पामर को श्रेय


1

हास्केल (ghc), 32 + 2 = 34 बाइट्स

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

साथ चलाना ghc -O <file>। ट्रिगर मुख्य फ़ंक्शन के लिए एक पुनर्लेखन नियम बनाता है जो उसी चीज़ को फिर से लिखता है। एकमात्र दुर्भाग्यपूर्ण विशेषता यह है कि यह पता लगाने और 100 पुनरावृत्तियों के बाद बंद करने के लिए ghc काफी स्मार्ट है। मुझे इस व्यवहार को अक्षम करने का एक आसान तरीका नहीं पता है।


1

बू, 25 बाइट्स

macro l:
 x=0 while 1>0
l

यह एक मैक्रो को परिभाषित करता है, जो संकलन समय पर निष्पादित होता है, जो एक अनंत लूप को निष्पादित करता है, और फिर मैक्रो को आमंत्रित करता है।


1

जंग, 18 बाइट्स

include!(file!());

क्लासिक स्व शामिल हैं। Rustc कष्टप्रद रूप से समझदार है, और डिफ़ॉल्ट रूप से 128 पुनरावर्तन के बाद बाहर निकल जाएगा, और यह गहराई-पहले फैलता है इसलिए घातीय वृद्धि या तो काम नहीं करती है। हालांकि यह C और C ++ समाधानों पर भी लागू होता है।


0

कारक , २ ९ १६

<< [ t ] loop >>

बीच के हिस्से << >>को पार्स समय पर निष्पादित किया जाता है।

जैसा कि [ t ] loopकरता है, मैं आपको लगता है ...

आप इसे उस लिसनर में रख सकते हैं, या इसे संबंधित बॉयलरप्लेट सामग्री के साथ किसी भी शब्दावली या स्क्रिप्ट फ़ाइल में जोड़ सकते हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.