Yasal olarak gevşek kalmanın en kısa yolu


146

Ben bir geliştiriciyim ve işimi yapmak istemiyorum. XKCD’den ayrılmanın en iyi bahanesinin kodunuzun derlenmesi olduğunu biliyorum . Bu nedenle, sonsuza dek derleyecek bir koda ihtiyacım olduğunu düşünüyorum ! Ve tembel olduğum ve fazla yazmak istemediğim için bu mümkün olan en kısa kodla yapılmalı.

Bu nedenle, göreviniz sözdizimsel olarak geçerli olan ancak derleyicinin sonsuz bir döngüye girmesine neden olacak bir program yazmaktır.

Özellikler

  • Açıkçası, derleyici olan bir dili kullanmanız gerekir.
  • Her çözümde kullanılan uygulamayı belirtin.
  • Bu , yani en kısa geçerli çözüm (bayt cinsinden) kazanır.
  • Derleyici, bellek yetersizliğinden veya yığın alanından çıkabilir.

1
@obarakon Ben katılmıyorum. Diğer zorluğun kodu, bu zorluğa hiçbir şekilde kolaylıkla ulaşılamaz. Her ikisinde de sonsuz döngüyü içeren zorluklar temel olarak farklıdır.
Sriotchilism O'Zaic

1
@obarakon Kod-golf olmadığı için bu sorunun bir kısmı da yok.
Esolanging Fruit


1
Ben (ve öyle olsa bile korkunç puanı olurdu) bu zorluğu uyan emin değilim, ama ilgilenenler için buraya ben bunu yapacağını nasıl Java: Bir tanımlamak açıklama işlemci Kullanacağınız hangi (ideone pasajı) çağrılırken javacile onun -processorseçeneği. Herhangi bir sınıfın derlenmesini sonsuza dek askıda tutar.
Aaron,

6
Derleyicinin çökmesine neden olan cevaplar için: Gevşetme amacıyla, hala çarpışabildiğiniz kadar uzun sürmesini isteyeceğinizi düşünüyorum.
GuitarPicker

Yanıtlar:


16

Japt , 2 bayt

`ÿ

Bunu çevrimiçi olarak burada test edebilirsiniz , ancak tarayıcınızı donduracağı için tavsiye etmem.

açıklama

Japt, dizeleri sıkıştırmak için shoco kütüphanesini kullanır . Bir geri çevirme, derleyiciye bir sonraki geri çevirme veya dosyanın sonuna kadar her şeyin sıkıştırmasını çözmesini söyler. Her bayt aşağıdakileri yapar:

  • 00-7F bozulmadan bırakılır.
  • 80-BFher biri, bir ortak küçük iki harfli çiftinin (haline dönüştürmek at, oo, thvb.)
  • C0-DFher biri bir sonraki baytı tüketir ve ortak dört harfli bir dizgeye dönüşür .
  • E0-EFher biri sonraki üç baytı tüketir ve "ortak" sekiz harfli bir dizgeye dönüşür ( Wherereroradan başlayarak aşağı doğru iner).
  • F0-F7 Dekompresörü kırmakla birlikte, yine de her şeyi kırma baytına kadar döndürür.
  • F8-FFdekompresörün sonsuz bir döngüye girmesine neden olur. Bunun neden olduğundan emin değilim, çünkü shoco kütüphanesinin iç çalışmalarına aşina değilim (ve JavaScript kodu tamamen okunamıyor ), ancak bu durumda oldukça kullanışlıdır.

Japt derleyicisiyle uğraşmanın başka bir yolu olduğuna inanmıyorum, ama asla bilemezsin ...


10
Ne demek okunamıyor. Belli ki yeterince çalışmıyorsun.
f Febnɛtɪk

Keşke bir abscripten decompiler olsaydı ...
17:17

58

TikZ (pdfTeX 3.14159265-2.6-1.40.17), 85 79 74 24 22 21 bayt

Wchargin sayesinde bir demet bayt kurtarıldı

Chris H sayesinde bir bayt kurtarıldı

\input tikz
\tikz\pic

Ev ödevlerinde çalışırken bununla kazayla karşılaştım. Ne olduğunu anlamadan önce bir süre daha derlememi bekledim.

Bu iki bölümden oluşur:

\input tikz

Bu TikZ paketini yükler

ve:

\tikz\pic

Bu bir \tikzortam ve bir draw komutu başlatır .

Ne oluyor

Pdflatex derleyicisinin problemi var \tikz\picve etkileşimli moda girerek süresiz olarak durmasına neden oluyor.


(1/2) Bunu çoğaltamam. "Runaway argümanı ?! Dosyasının \draw l\end {document}kullanımı taranırken sona erdi \tikz@next." pdflatex 3.1415926-2.5-1.40.14 (TeX Live 2013 / Debian). tikz 2010/10/13 v2.10. Bu apt install texlive-fullUbuntu 14.04'te standarttır .
wchargin

1
@ wchargin Aynı sürümünü kullanıyorum pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016) ve gerçekten de süresiz döngü yapıyor. İpuçları için teşekkürler.
Sriotchilism O'Zaic

1
\pic\ Draw` yerine bir bayt kaydedebilirsiniz - tam olarak aynı davranış (tikz 1.142 kullanılarak test edilmiştir)
Chris H

3
Ben aslında savunan inanamıyorum değil TikZ kullanarak, ama kesinlikle buna kullanımı overkill burada. Eski \def\a{\a}\a(12 bayt) ile yanlış olan ne ? Veya, bu kod golf olduğundan ve ~varsayılan olarak etkin olduğundan \def~{~}~(9 bayt)?
Döngü Alanı

2
@LoopSpace Onlarla ilgili hiçbir sorun yok, var olanı bilmiyordum. Kendi cevabınızı vermek istiyorsanız çekinmeyin.
Sriotchilism O'Zaic

40

C, 18 bayt

#include __FILE__

Derleyiciler genellikle yaklaşık 200 kez tekrarladıktan sonra pes eder.

DOM yapı bir derleme adımı olarak sayılıyor mu? Eğer öyleyse, o zaman x.htm:

<iframe src=x.htm>

14
Özyinelemeli çerçeve kümelerinin IE4'ü çökertmek için çok zorlandığını ve bazen önemli işletim sistemi bileşenlerini kullandığını hatırlıyorum. Bu yüzden orada HTML muhtemelen sayar.

10
ıe4 günlerde, Internet Explorer çünkü @ ais523, işte oldu "önemli OS bileşeni".
Mark

2
Bir tweaking bit ve geçerli PHP'dir: <?include __FILE__;.
Ismael Miguel,

6
Bu cevabı gönderemem, çünkü temsilcim yeterince yüksek değil, ancak iki alternatif var: #include "/ dev / zero" ve #include "/ dev / stdin" - ilki çalıştırırken dikkatli olun !!
rrauenza

2
Bunu denediğimde, gcc'nin hafıza kullanımı sınırsız bir şekilde hızla artmaya başladı, sistem tepkisiz hale geldi ve bekçi köpeğim sonunda tekmeledi ve yeniden başladı. Oldukça eğlenceliydi :)
rrauenza

38

Java, 102 95 89 88 78 bayt

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

Bu StackOverflowError, jenerik çözünürlük sisteminin diğer jenerik ilaçları çözecek bir köke karar verememesi nedeniyle olan sona erer .

Kredilerin verildiği yer .

Burada ne oluyor?

  1. A<T>sadece 1 harfli bir ebeveyne sahip olmak. Bu genel. Kullanabilirdim List, ancak 4 harfin ithalatı ve tekrarı çok uzun.
  2. B<T> temel bir jenerik ilan eder.
  3. B extends Aarasında bir hiyerarşi olması gerekir Bve A.
  4. extends A<A>üzerinde bir referans yaratır A<T>.
  5. A<? super B> üzerinde jenerik aramasını tetikler A<T>
  6. B<B<T>>üzerinde bir referans yaratır B<T>.
  7. A<...> a=new B<>()Jeneriklerin, sadece tanımlarının yerine, derleme sırasında çözünürlüğü zorlayan Bve daha sonra zorlamayanların kullanımını zorlar .
  8. A<?super Bkendinden referanslı olmayan bir yaratır, bu nedenle, jeneriklerde hem bir tip hem de başka bir referansa sahibiz A.
  9. B<A>kendinden referanslı olmayan bir yaratır, bu nedenle, jeneriklerde hem bir tip hem de başka bir referansa sahibiz B.

Şimdi, tip Ajenerik türü vardır Ave Bfakat hangi seçilecek mi? Kendini unut, çözmeyi deneyelim B. Ping.

Tamam, Bjenerik türü vardır Ave Bfakat hangi seçilecek mi? Kendini unut, çözmeyi deneyelim A. Pong.

Gibi meşru durumlar vardır çünkü özyineleme Bu tür gerçekten kaçınılması edilemez A<B<A<B<A<B<Object>>>>>>örneğin JSON nesnesi: List<Map<String,Map<String,List<Map<String,List<String>>>>>>.

Derleme sonucu

$ 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)

Sistemimde yığın izi, 256 kez tekrarlanan aynı 4 satır olan 1024 satır gösterildikten sonra durur ve böylece sonsuz bir özyineleme ortaya çıkar. O izden seni koruyacağım.

Tasarruf

  1. 102 → 95 bayt: interface+ implementsile class+ değiştirildi extends.
  2. 95 → 89 bayt: (iki kez) Longile değiştirilir A.
  3. 89 → 88 bayt: kullanılmış elmas operatörü ( new B<A>()new B<>()).
  4. 88 → 78 bayt: VoteToClose sayesinde değişken bildirimini bir sınıf üyesine taşıdı .

1
Neye bakıyorum
Addison Crump

Bunu 78 bayt ile kısaltabilirsiniz:class A<T>{}class B<T>extends A<A<?super B<B<T>>>>{A<?super B<A>>b=new B<>();}
Addison Crump

@VoteToClose Java'nın jeneriklerinde kararsızlık konusunda en iyi örneklere bakıyorsunuz. Her bir jenerikin, daha sonra doğrulanacak ortak bir köke karşı çözülmesi gerekiyordu. Buradaki şey, Bjenerikin, jenerik Aiçin sırayla B'nin jenerikine kararsız bir referans içeren kararsız bir referans içerdiğidir. Kararsız bir şekilde (çoğunlukla öz referanslar ve superanahtar kelime sayesinde . Böylece çözümleyici aslında iki jenerik arasında ping pongları yapıyor.
Olivier Grégoire

Döngüsel ek açıklamalarla derleme zamanı problemi yaratmayı düşünüyordum: public @interface X {@X(x=X.class)Class<? extends X> x();}… Ama bunun neden işe yaramayacağını hemen anladım.
Magic Octopus Urn,

34

GNU Makefile, 8 7 bayt

KonradRudolph sayesinde bir bayt kurtarıldı

Olarak kaydedildi Makefileve tarafından başlatıldı make:

x:;make

Bu, bulunan ilk hedef üzerinde sonsuz bir derleme özyinelemesi üretecektir "x".

Eğer olmadığını söylemeye gerek yok gerçekten üretim sunucusunda bu çatal bombayı çalıştırmak istiyorum. :-)

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
...

Alternatif sürüm, 5 bayt

KonradRudolph tarafından önerilen:

x:;$_

$_önceki komutun son argümanına bir referanstır. Daha spesifik olarak, burada yürütülen komutun mutlak yolu olarak çözülür - ki bu makekendisidir.

Bu, orijinal bir Bash ortamında çalışmalıdır ancak Windows + MinGW'de çalışmamalıdır.


2
Hmm, makegerçekten Makefile'i derlediğini sanmıyorum (sadece yorumluyor).
zeplin

3
@zeppelin Haklısın, bu muhtemelen sınırda bir cevaptır. Bununla birlikte, ön işlemci seviyesinde makro yinelemeyi içeren gönderiler hiçbir zaman gerçek kodları derlemeye başlamayacaktır.
Arnauld,

11
Amaçlanan hedefe uyuyor: sonsuz bir yapım sürecine sahip olmak. 1!
YSC

23

C ++, 60 58

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

Bu özyinelemeli class aolarak farklı şablon parametrelerinin örneklerini oluşturur . GCC 7.0, 900 özyinleme seviyesinden sonra operator->özel olma konusundaki hataların tonu ile durur , örneğin ICC 17 ve Microsoft (R) C / C ++ Optimizing Compiler godbolt'ta 19 zaman aşımına uğradı .

Bununla ilgili sorun şu ki, muhtemelen tüm derleyiciler zaman zaman belirli bir noktada belleğin tükenmesine neden olacak, böylece özyineleme limitleri olmasa bile bu duracaktır. Aynısı muhtemelen Clojure cevabı için de geçerli.

Düzenleme: 2 bayt bolov tarafından kaydedildi - Teşekkürler


1
kısa:a<int>i=i->b;
bolov

1
Cevabımda belirttiğim gibi @Pckets bu operator->bir sınıf içinde varsayılan özel çünkü . Bir yapı içinde halka açıktır ve bu nedenle i->bona erişebilir.
Christoph

1
gcc 4.4.7 burada süresiz olarak asılı görünüyor. Hangisi önce gelirse, sonsuzluğun veya çıktının gösterilmesi için bekleniyor. Güncellenecek
osuka_

1
@osuka_ hala çalışıyor mu?
Christoph

1
@Hristoph hayır, birkaç gün çalıştıktan sonra SIGSEGV ile düştü. Güncellemeyi unuttum - hatırlatma için teşekkürler!
osuka_

23

Perl , 15 13 bayt

BEGIN{{redo}}

Çevrimiçi deneyin!

Şimdi 2 bayt kaydedildi: @Zaid, Perl'de bir döngü yapmanın ters bir yolunu hatırlattı.

Bu oldukça basittir: kodun ayrıştırılmasının çok uzun sürmesi için yalnızca sonsuz bir döngüye sahip bir ayrıştırma kancası yükler. (Perl, ayrıştırmanın ortasında rasgele kod çalıştırmanıza izin vermesi açısından güzeldir; ayrıştırıcı kancaları Perl'de belirtilir ve sık sık kitaplıkları içe aktarma veya ayrıştırma kurallarını gibi davranmak istediğiniz bir tanımlayıcıyı değiştirmek için kullanılır. bir anahtar kelime.) Çevrimiçi deneyin! Yukarıdaki bağlantı -c, sonsuz döngünün derleme zamanında gerçekleştiğini kanıtlamak için (doğruluk için sözdizimini doğrulamak için kodu derlemek, ancak çalıştırmamak) seçeneği sunar.

Bir kodlama dilinde "derleme zamanı" nı merak ediyorsanız: Perl aslında bytecode'u derler ve sonra bytecode'u çalıştırır, ancak bu programlama sırasında nadiren ilgili olan bir detaydır. -MO=(Sonsuz döngü baytkodu üretilebilmesi için olduğu gibi, olmasa da bu program ile) komut satırı seçeneği Çalışan aile dışındaki baytkoduna ile şeyler yapmak için de kullanılabilir.


1
a:goto açok güzel görünüyor (ne yazık ki aynı bytecount).
Dada,

3
BEGIN{{redo}}size birkaç bayt kazandıracak
Zaid

20

C ++ 37 30 29 bayt

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

Gelecekteki otomatik fonksiyon parametresini kullanır. C ++ 17'ye teklif edildi, ancak yaptığını sanmıyorum. gccancak bunu bir uzantı olarak destekler.

temel olarak

void foo(auto p);

eşittir

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

Kod f, farklı şablon argümanlarıyla özyinelemeli olarak başlatılmaya çalışır . gccile başarısız

önemli hata: şablon başlatma derinliği maksimum 900'ü aşıyor (maksimum değerini arttırmak için -ftemplate-depth = kullan)

İle -ftemplate-depth=10000bunu tükürmek lazım "Öldürüldü - aşıldı işlem süresi" Godbolt üzerinde.

Godbolt'ta kontrol et


Quentin tarafından kaydedilen 1 bayt. Teşekkür ederim.


1
Bir bayt intgeri dönüş tipi kullanılarak kaydedilebilir :)
Quentin

Gerçekten de, autoişlev parametreleri C ++ 17'ye giremedi; ve ayrıca int f() { ... }, a;son kontrol ettiğimde yasal bir beyan değil. (İşlev bildirimlerini bunun gibi değişken bildirimleriyle karıştıramazsınız.) Burada sahip olduğunuz son derece GCC'ye özgü bir C ++ lehçesi. Bu bağlamda yanlış bir şey olduğu değil. :)
Quuxplusone

19

Ortak Lisp, 8 bayt

#.(loop)

Derleyici bir formu okumaya çalışacak ve okuma zamanında kodu değerlendiren ve sonucunu derlemek için form olarak kullanan keskin uç nokta okuyucusu makrosuyla karşılaşacaktır . Burada, yürütülmekte olan kod sonsuz bir döngüdür.


17

TeX, 9 bayt

\def~{~}~

TeX makroları genişleterek çalışır. Çoğu zaman, TeX'in makroları ( kontrol sekansları olarak da adlandırılır ) formdadır \nameancak bazı karakterleri makro olarak tanımlamak da mümkündür, bunlara aktif karakter adı verilir . Karakter ~, düz TeX'te varsayılan olarak aktiftir ve bu nedenle başka bir bildirimde bulunmaksızın makro adı olarak kullanılabilir. \def~{~}Yukarıda tayin eder ~, böylece doğru genişler ~. Yani, ne zaman TeX karşılaştığında, ~onun yerine geçer ~ve yerine yenisini koyar , yani tamamen yeni bir oluşumla karşılaşır ~ve onun tarafından değiştirilir ~. Bu sonsuz döngüyü tanımlar. Daha sonra gereken tek şey, döngüyü başlatmak ve finalin ~yaptığı şey.


Düzenleme eklendi

Bunu doğru şekilde derlemek için , şu şekilde çağır :

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

-iniBayrak diyor pdftexgerektiğini derlemek yeni biçim dosyası. Bu, daha sonra bir dokümanın işlenmesini hızlandırmak için TeX çağrıldığında yüklenebilecek önceden derlenmiş bir tanım kümesidir (LaTeX2e buna bir örnektir). Sanırım &pdftextoplamı 17'ye çıkararak birkaç bayt ekliyor.


Derleme zamanında bu olur mu? Soru, derlenirken sonsuz döngünün olmasını gerektirir, çalışırken değil.

@ ais523 Bu parça hakkında tam olarak düşünmedim. TikZ'in cevabını karıştırıyordum. Birkaç bayt pahasına, kesinlikle derlenmiş bir alternatif ekledim.
Döngü Alanı

2
@ ais523: Her zaman olduğu gibi, "derlemek" ve "koşmak" aynı madalyonun iki yüzüdür. Şahsen, TeX kaynak kodunu PDF belgelerine "derlemek" olarak düşünüyorum (ki bunlar daha sonra "görüntüleyerek" yürütülür), aynı şekilde C ++ kaynak kodu .exe dosyalarına "derlenir" (ki bunlar "tarafından yürütülür") koşu). Ancak, pdftexprogramı bir PDF g++dosyasını "çıktı" olarak üretmek için "TeX girişini" "yorumlama" olarak da düşünebilirsiniz - aynı şekilde ".exe" dosyasını "çıktı" olarak üretmek için "C ++ girişini" yorumlar. ;)
Quuxplusone

13

Haskell, 25 + 17 = 42 bayt

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

Sonsuz bir değer tanımlayan ve derleme zamanında bu değeri hesaplamaya çalışan basit bir Haskell metaprogramı.

İle ghc -XTemplateHaskell <file.hs>derleyin (derleyici parametresi için +17)


Çalışmıyor $(let a=a in a)(32 bayt için)?
Ry

1
Hayır! GHC çok akıllı. Formun herhangi bir sonsuz döngüsünün let a = a in abir istisnayı yeniden yazması, sonsuz bir döngünün aksine derleyici hatasına neden olur. (belki de bu farklı bir Haskell derleyicisiyle
çalışsa da

Benim için runghc ile çalışıyor, bu yüzden geçerli olduğunu söyleyebilirim. (Aslında, o da
ghc

Gerçekten mi? Ben de ghc 8.0.1'deyim - benim için Exception when trying to run compile-time code: <<loop>>hem tercümanda hem de derleme yaparken ... teknik olarak yukarıdaki kod da bir istisna ile ölüyor, ancak teknik özellik tarafından açıkça izin verilen bir yığın taşması - ve eğer sonsuz hafızanız olsaydı, sonsuza dek tekrarlanmayacaktı. <<loop>>İstisna yangınları benim makine belleği bitene kadar önce.
user2407038

12

Kepçe, 10 9 bayt

for(;;){}

yukarıdaki kod bir build.gradledosyaya yerleştirilmiş olarak . Gradle, temel dil olarak groovy kullanır, bu yüzden gerçekten groovy'den bahsediyoruz, ancak sorunun inşa süresi hakkında olduğu gibi, gradle'ın daha uygun olacağını düşündüm.

Herhangi bir gradle derleme komutunu yukarıdaki kodla çalıştırmak, sivri saçlı patron uyumlu derleme durum satırını yazdırır:

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

Yükseltme hedefliyorsanız, hata ayıklama -dbayrağını şunun için ekleyin :

$ 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

Etkileyici bir şekilde karmaşık görünmenin yanı sıra yeni bir setle günceller:

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.

Durum çizgileri her 10 saniyede bir yapılaşıyor gibi görünmesini sağlıyor, önemli teknik işler yapmakla meşgul.


8

SWI-Prolog, 34 bayt

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

açıklama

term_expansion/2 kaynak koddaki bazı terimleri başka terimlere dönüştürmek için kodu derlemeden önce derleyici tarafından otomatik olarak çağrılan bir şeydir.

Burada, yeni bir yönetimi getirme term_expansion/2: repeat,1=0..

repeat/0 her zaman başarılı olan ve sonsuz sayıda seçim noktası sağlayan bir işarettir.

1=0birleştirmeye çalışıyor 1ile 0her zaman olduğu false. Bu, derleyicinin geri dönmesine repeat(her zaman bir seçim noktası sağladığından) 1=0tekrar denemesine , vb. Neden olur.


GNU Prolog’da çalışmadığından, bunun uygulamaya özel olduğunu farz ediyorum. Derleyicinin adını başlığa koymak isteyebilirsiniz. (SWI Prolog olduğunu farz ediyorum)

@ ais523 Teşekkürler, diğer dağıtımları kontrol etmedim, fakat derleyici olayı oldukça spesifik olduğundan, daha iyisini
bilmeliydim

@ ais523 Ancak göre bu , kullanmak mümkün olabilir expand_term(onun söylediği gibi yerine term_expansionburada GNU Prolog gibi kullanılamaz). Yine de expand_termSWI ile çalışmıyor .
15’te

7

GNU Yap, 44

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

Bunun için kredi talep edemem. Robert Mecklenburg'un GNU Make ile Projeleri Yönetme kitabından türemiştir: GNU'nun Gücü Her Şeyi Yapmak .

Make bu makefile komutunu çalıştırdığında, makefile dosyasının güncel olmadığını görür (çünkü .PHONY hedefi güncel değildir, bu nedenle makefile'in zaman damgasını güncelleyen touch komutunu çalıştırır. makefile güncel değil .... İyi fikir.

Ben bunu diğer Make cevaplarına tercih ediyorum çünkü özyineleme kullanmıyor. VM'mde, diğeri Make cevaplama süreçleri devam ediyor ve VM 7.000 civarında derin bir yerde yanıt vermiyor. Bununla birlikte, bu cevapla sistem kaynaklarını tüketmeden süresiz olarak devam edebilmektedir. Gerçekten bu yapı ile durmak mümkün olacak. Görünür bir sistemde bozulma olmadan 1000.000'den fazla yineleme yaptım.

Not sleep 1makefile zaman damgasının gerçekte her seferinde güncellenmesi için eklemek zorunda kaldım . Bunu, sleep 0.01yinelemeler arasında biraz daha hızlı yanmasını istiyorsanız değiştirebilirsiniz .


6

GNU İleri, 15 bayt

golfed

: : [do] [loop]

Sözcüğü yeniden tanımlar (yeniden derler) :ve [do] [loop]yeni tanımın içinde derhal sonsuz bir döngü başlatır (derleme zamanında).

Bir sözcük kategorisi derlenmez. Bu sözde ani sözcükler, metin yorumlayıcısının yorumlama veya derleme yapmasından bağımsız olarak yürütülür (şimdi gerçekleştirilir).

Çevrimiçi Deneyin!


5

Clojure, 21 bayt

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

Derleyiciyi, sürekli olarak kendi kendine çağrı veren bir makro tanımlayarak bağlar.

Telefonumda, bu REPL'in cihazı kapatmasına ve gecikmesine neden olur. Dizüstü bilgisayarımda bu bir StackOverflow ile tamamen başarısız oluyor.

Ne yazık ki StackOverflow anında gerçekleşir, ancak yine de kurallara göre geçerlidir.


5

MSBuild, 130 bayt

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

Bunu .projuzantılı bir dosya olarak kaydedin msbuildve komut isteminden çalıştırın . MSBuild, sadece başka bir msbuildsüreci başlatan tek hedefini yönetecek


Bunun çalışması için girinti gerekli mi? Peki ya yeni çizgiler? Normalde boşluk bırakmak mümkündür.

Hayır, okuması daha kolay. Karakter sayısı boşluk içermez.
Danko Durbić

1
Ah doğru. Bu durumda, muhtemelen yazının gövdesinde bundan bahsetmelisiniz.


4

Mathematica 33 Bayt

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

Kod derlemeden önce argümanı sembolik olarak değerlendirmeye çalışacaktır ve argümanın kendisi sonsuz bir döngüdür. While fonksiyonu, önemli olmadığı için boş bir ikinci argümana sahiptir.


"derlemeden önce" Evet ... hayır.
Hesap MakinesiFeline

Lütfen geçerli bir argüman girin. reference.wolfram.com/language/tutorial/…
Kelly Lowder

Asıl soru, döngü Compilegörüşme sırasında mı yoksa öncesinde mi oluyor?
Hesap MakinesiFeline

3

Haskell (GHC, Template Haskell veya özel yeniden yazma kuralları olmadan ) , 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()

Teorik olarak, bu , C ++ yaklaşımının yaptığı şekilde sonsuz bir döngüye girer : polimorfik yöntem y, daha kıvrımlı türlere başlatılır. Uygulamada, varsayılan ayrılmış yığın boyutu gerçekten hızlı bir şekilde taşmaktadır:

$ 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'a kredi veriyor .


1

Haskell (ghc), 32 + 2 = 34 bayt

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

ile koş ghc -O <file>. Aynı şeye yeniden yazan ana işlev için yeniden yazma kuralını tetikler. Talihsiz tek özellik, ghc'nin bunu tespit edip 100 tekrardan sonra durması için yeterince akıllı olmasıdır. Bu davranışı devre dışı bırakmak için kolay bir yol bilmiyorum.


1

Boo, 25 bayt

macro l:
 x=0 while 1>0
l

Bu derleme zamanında çalıştırılan, sonsuz bir döngüyü çalıştıran ve daha sonra makroyu çağıran bir makroyu tanımlar.


1

Pas, 18 bayt

include!(file!());

Klasik kendini içerir. Rustc sinir bozucu olsa da aklı başında ve varsayılan olarak 128 tekrarlamadan sonra kaybolacak ve ilk önce derinlemesine genişleyecek, üstel büyüme de işe yaramayacak. Aynı olsa C ve C ++ çözümleri için de geçerlidir.


0

Faktör , 29 16

<< [ t ] loop >>

Aradaki bölüm << >>ayrıştırma zamanında yürütülür.

Ne olduğuna gelince [ t ] loop, tahmin etmene izin vereceğim ...

Bunu Dinleyiciye olduğu gibi koyabilir veya karşılık gelen kazan plakası öğelerine sahip herhangi bir kelime veya komut dosyasına ekleyebilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.