StackOverflow Hatası atanan en kısa program [kapalı]


75

Bir StackOverflow Hatası veya eşdeğerde kullanılan dile atan bir program yazın. Örneğin, java'da programın atması gerekir java.lang.StackOverflowError.

Kendisini veya yeni bir sınıfı çağıran bir işlevi tanımlamanıza izin verilmez (java'da mainbulunanlar hariç ). Seçilen programlama dilinin sınıflarını kullanmalıdır.

Ve açıkça hatayı atmamalı.


4
"Seçili programlama dilinin sınıflarını kullan" anlamıyorum
Prens John Wesley

3
Bunun gibi içsel işlevi çağıran bir işlevi tanımlamak uygun mudur def s{def t=s;t}?
Prens John Wesley

12
Çoğu dilde, sınıflar evrenin merkezi değil, sadece özel bir veri yapısıdır. Birçoğunun böyle bir şeyi bile yok .
saat

1
Buradaki komik şey, kuyruk özyinelemenin ortadan kaldırılmasını gerektiren dillerin (ve diller gerektirmediğinde onu destekleyen uygulamaların) --- çok daha iyi bir anlam ifade eden --- bu konuda dezavantajları olduğu. TwiNight'ın cevabı , ilk günlerden itibaren Stack Overflow'ta var olan sürümle bağlantılı.
dmckee

1
Java belgesinden: Bir uygulama çok derinden aldığından yığın taşması gerçekleştiğinde atılır. docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

Yanıtlar:


90

Befunge, 1

Befunge'yi tanımıyorum ama ...

1

Stack taşma kodundan golf


21
Açıklama: 1, karşılaştığında yığına itilen sayısal bir değişmezdir. Befunge'de kontrol akışı @, programın sona ermesiyle karşılaşana kadar sarılır .
histocrat

6
StackOverflow'ta bu sorunun olduğunu bilmiyordum. Göndermeden önce sadece bu sitede aradım.
Gerçek Yumuşak

31
Cevabımı burada görmek için hafifçe gurur duyuyorum.
Patrick

4
Bu da> <> 'da çalışır.
Cruncher

49

Python (2.7.3), 35 karakter

import sys
sys.setrecursionlimit(1)

Bu işlem başarılı olur, ancak hem komut dosyası hem de etkileşimli RuntimeError: 'maximum recursion depth exceeded'sonuç olarak derhal atılır .

Elssar'ın cevabından ilham aldı.


Bunu benim çözümüm olarak ortaya koymayı düşündüm, ancak hatanın yığın taşması olarak kabul edilip edilemeyeceğinden emin değildim. Olsa da, aslında, işte bu, değil mi?
elssar

2
@elssar: Yığın taşmanın iki yolu vardır: Yığın kullanılan kısmını büyüt, ya da kullanılmayan kısmını küçült. Suyla doldurulan bir kova hayal ederseniz, daha fazla su ekleyerek taşabilir, ancak kovayı daraltarak taşabilirsiniz.

19

Coq

Compute 70000.

70000sadece sözdizimsel şeker S (S ( ... (S O) ...))70.000 ile S's. Yığın taşmasına neden olan tür denetleyicisi olduğunu düşünüyorum.

İşte komut çalıştırılmadan önce basılan bir uyarı:

Warning: Stack overflow or segmentation fault happens when working with large
numbers in nat (observed threshold may vary from 5000 to 70000 depending on
your system limits and on the command executed).

2
Bu Coq'un son derece aptal bir dil olduğunu düşünmenize izin verebilir ... komik ...
saat

1
@leftaroundabout Aslında hayır. Nat tipi, bağlı bir listemiş gibi davranması gereken bir tip seviyesi peano rakamıdır .
FUZxxl

1
@ FUZxxl: Benim yorumum ironik bir şekilde değildi. O cümlenin içine klasik mantık içerir veya yapıcı kalmayı tercih istiyorsanız kendiniz karar verin ...
counterclockwis çevirmek durdurdu

2
@leftaroundabout Hata! Markdown ayrıştırıcısının her zaman bu güzel & lt; irony & gt; etiketlerini yediğini unuttum.
FUZxxl

19

Java - 35

class S{static{new S();}{new S();}}

OP yeni sınıf yok demedi mi? İçeride bir şey görmüyorum public static void main. Yoksa sadece Java'yı anlamada başarısız mıyım?
Braden Best

4
@ B1KMusic Yeni sınıf yok, sadece bir sınıf var (S). Kod statik bir başlatıcı kullanır, jvm ana yöntem olmadığını tespit etmeden önce SO'yu atar. Java 6 ile çalışır.
aditsu

1
Statik bloğu anlıyorum. Peki sıradaki blok nedir?
Nicolas Barbulesco

1
@ NikolBarbulesco Bu bir başlatıcı bloğu, yeni bir örnek oluştururken çalıştırılır.
aditsu

1
@LuigiCortese Ben sadece Java 6 veya üstü ile çalışır düşünüyorum
aditsu

19

Javascript 24 karakter

Tarayıcıya bağlı yanıt (erişimine sahip olmalıdır apply):

eval.apply(0,Array(999999))
  • eval bulabildiğim en kısa küresel işlev adı mıydı (biri daha kısa olanı bilen var mı?)
  • applyBir diziyi fonksiyon parametrelerine dönüştürmemize izin verir, ilk parametre, fonksiyonun içeriğidir ( this)
  • Array(999999)listelenen uzunluğu ile bir dizi yaratacaktır. Maksimum argüman sayısının ne olduğundan emin değilim, fakat ondan daha az ve daha fazla99999

IE9:

SCRIPT28: Out of stack space 
SCRIPT2343: Stack overflow at line: 20 

Chrome 24:

Uncaught RangeError: Maximum call stack size exceeded 

FireFox 18

RangeError: arguments array passed to Function.prototype.apply is too large

Not - Javascript'in tek dişli yapısı nedeniyle, sonsuz döngüler UI'yi kilitlemeye başlar ve asla bir istisna atmaz.

while(1);
for(;;);

Bunların hiçbiri kalifiye değil.

Güncelle - bu üç karakteri tıraş eder:

eval.apply(0,Array(1e7))

MDN, bunun evalen kısa olduğunu söylüyor .
Peter Taylor

5
eval.apply(0,Array(1e6))Hatta ile gidebilir, 3 karakter kazandırır 9e9hiçbir ücret ödemeden
ThinkChaos

1
applystandart bir ECMAScript özelliğidir. Tarayıcıya bağlı hiçbir şey yok. Gerçekten eski tarayıcılardan bahsetmiyorsanız, ancak bu applyyine de varsayımsal Netscape 2'de işe yaramaz , çünkü Arraysınıf Netscape 2'de mevcut değildir.
Konrad Borowski

1
ES6'daki en yeni:eval(...Array(9e9))
Patrick Roberts

1
Muhtemelen standart dışı, Chrome'dan konsoldan fırlatıyor. dir.apply(0,Array(1e7));
Paul J

17

Python 2.7 (12 karakter)

exec('{'*99)

«s_push: ayrıştırıcı yığın taşması» ile sonuçlanır


4
AnladımSyntaxError: unexpected EOF while parsing
Martin Thoma

1
İle exec('{'*101)I getMemoryError
Martin Thoma

4
Python2'de, execbir ifadedir, bu yüzden sadece kullanabilirsiniz exec'{'*999(99 yeterli görünmüyor)
gnibbler

Bir MemoryError'ı tetiklemek için en az 100 gerekir. Ve bu ≠ yığın taşması
noɥʇʎԀʎzɐɹƆ 12:16

13

Mathematica, 4 karakter

x=2x

$ RecursionLimit :: reclim: 1024 yineleme derinliği aşıldı. >>


1
"Kendini çağıran işlevi tanımlayamayabilirsiniz"
Tomas

13
Bu bir işlev değil, bir değişken (hiç de göründüğü gibi değilse).
AMK

Sen benim fikrimi aldın.
PyRulez

12

Clojure, 12 karakter

(#(%%)#(%%))

Repl'de çalıştırılıyor:

user=> (#(%%)#(%%))
StackOverflowError   user/eval404/fn--407 (NO_SOURCE_FILE:1)

Bu bana lambda matematiği ifadesini hatırlatıyor (\x.xx)(\x.xx), ama bunun olup olmadığını kesin olarak söyleyecek kadar klojürü bilmiyorum. Ayrıca, yukarıda belirtilen ifadenin neden yığın taşmasıyla sonuçlandığını anlamıyorum, bu nedenle Y-birleştiricisiyle bazı hileler yapıyorsunuzdur? Bu cevap beni ilgilendirir ve bir açıklama iyi olurdu.
Zwei

12

Java - 113 karakter

Bence bu "kendi kendine arama yöntem yok" kuralı ruhu içerisinde kalıyor. Açıkça yapmıyor ve hatta bir Java dili yapısına giriyor.

public class S {
    public String toString() {
        return ""+this;
    }
    public static void main(String[] a) {
        new S().toString();
    }
}

Yoğunlaştırılmış Versiyon:

public class S{public String toString(){return ""+this;}public static void main(String[] a){new S().toString();}}

9
Eh, ""+thisaslında ""+this.toString(), bu yüzden yöntem kendisini çağırır.
Gerçek Yumuşak

1
@TrueSoft Kesinlikle java StringBuilderorada bir nesneye atar . toStringMuhtemelen oradan aranacak.
Cruncher

1
Derleyici ve eniyileyici bittiğinde, toString()yöntem şu şekilde sona ererpublic java.lang.String toString() { return this.toString(); }
Jonathan Callen

12

C, 19 bayt

main(){int i[~0u];}

4
@Thomas Evet , yerel değişkenlerin yığında tahsis edildiği herhangi bir makinede bir yığın taşmasıdır . C dili yığın taşması göstergesi kavramına sahip olmadığı için (hepsi tanımsız davranış; bunlardan biri kendini segfault olarak gösterir), bu orijinal gereksinime uygundur.
Jens

Tamam, üzgünüm, kabul edildi.
Tomas

3
main.c:1:16: error: size of array 'i' is negativebenim için gcc 4.8.1'de veriyor . İmzasız sürüm main(){int i[~0U];}çalışıyor.
Şubat'ta

4GB'lık bir yığını el ile yapılandırdıktan sonra benim için çalışmıyor.
FUZxxl

@ FUZxxl İlginç; senin 32 bit mi Eğer öyleyse, sizeof(i)16GB. ulVeya ullsoneki kullanmak fark yaratır mı? Bazı sistemler belleği aşırı işler ve yalnızca belleğe yazılmışsa çökebilir.
Jens

10

GolfScript (8 karakter)

{]}333*`

Sonuç:

$ golfscript.rb overflow.gs 
golfscript.rb:246:in `initialize': stack level too deep (SystemStackError)
from /home/pjt33/bin/golfscript.rb:130:in `new'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
 ... 993 levels...
from (eval):4
from /home/pjt33/bin/golfscript.rb:293:in `call'
from /home/pjt33/bin/golfscript.rb:293:in `go'
from /home/pjt33/bin/golfscript.rb:485

Temel olarak bu, yoğun bir şekilde iç içe geçmiş bir veri yapısı yaratır ve daha sonra dizeye dönüştürmeye çalışırken yığının üzerinden taşar.


Benim için, bu bir hata atmaz, ancak çıktılar[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]] (and so on, output too long for comments)
ProgramFOX 16

@ProgramFOX, 333onunla değiştirebileceğiniz bir değer olacak ve kırılacak. 333benim için kırılan en küçük değerdi, ancak Ruby'nin farklı bir sürümüne sahipseniz (veya belki de farklı bir işletim sisteminde aynı sürüm varsa, bildiğim kadarıyla) taşmadan önce farklı sayıda yığın çerçevesini kaldırabilir.
Peter Taylor

1
Makinemde 3192'de kırılıyor, bu yüzden 6.?hala karakter eklemeden çalışıyor.
Dennis,

10

x86 derleme, NASM sözdizimi, 7 bayt

db"Pëý"

"Pëý" onaltılık alanda 50 EB FD’dir ve

_loop:
push eax
jmp _loop

x86 montajında.


8

Yakut, 12

eval"[]"*9e3

verir

SystemStackError: stack level too deep

Büyük olasılıkla sisteme bağlı, ancak son haneyi yukarı kaldırarak büyüklük emirleri ekleyebilirsiniz (önerilmez).

Açıklama için düzenle: Diğer bazı örneklere benzer şekilde, bu [][][]... 9000 kez tekrarlanan bir dize oluşturur , sonra değerlendirir: en sağdaki [], geri kalanı için bir işlev çağrısı olarak ayrıştırılır, vb. Aslında baştan başlasaydı, bir ArgumentError atacaktı, çünkü bir argüman gerektiren []bir []metodu olan bir nesnedir , ancak makinem yığının dokuz binin üzerinde bitmesinden biraz önce bir hata atar.


hmm ... IRB çöktü: P
Doorknob

Hangi versiyon? ruby1.9.2 “ArgumentError: yanlış sayıda argüman (1..2 için 0)” atar.
Manatwork

Eski bir ruby1.8.7 bulundu . Burada yayınlanan kod açıklandığı gibi çalışır.
Manatwork

Tuhaf, benim 1.8.7, 1.9.2 ve 1.9.3.
histocrat

Dediğim olurdudef f;f;end;f
AMBLEMİ

8

Rebol (11 Karakter)

do s:[do s]

Verim:

>> do(s:[do s])    
** Internal error: stack overflow
** Where: do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do...

Rebol'un fonksiyonları, kapanışları ve nesneleri olsa da ... bu hiçbirini tanımlamıyor. Veri olarak kodlanmış paradigmada DO kullanarak kod olarak ele alınabilecek bir veri yapısı tanımlar.

REPL ile "S nedir" sorusunu sorabiliriz :

>> s: [do s]
== [do s]

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

DO, bunu asla bir işleve dönüştürmez, mevcut ortamda bulunan değerlendiriciyi yapının üzerinde çalıştırır.


1
+1 ... Cevabımın bir işlev tanımladığını ve kurallara aykırı olduğunu fark etmedim, ancak DO'yu kullanmak için cevabımı düzenledim ... daha sonra bu cevabı zaten gönderdiğinizi fark ettim. Ben de sadece benimkileri sildim, ama neden bunun bir nesne / işlev / kapanma tanımlamadığını yazdığımdan beri açıklamayı seninkine ekleyeceğimi düşündüm. Ayrıca yapılacak işin eğlenceli ve buna dahil olmaya değer olduğunu düşünüyorum. :-) Umarım tamamdır!
Dr. Rebmu

7

C, 35 karakter

main(){for(;;)*(int*)alloca(1)=0;}

Neden atanmış alanda bir şey saklıyorsun?
Peter Taylor

1
Bu durumda, bu sorunu C'de çözmek mümkün değildir.
FUZxxl

3
@dmckee, Tüm bölümlendirme hataları yığın taşması değildir, ancak bunun yığın kapasitesini aştığından dolayı olduğunu söyleyebilirim.
ugoren

1
@dmckee, alloca yığından ayırır .
ugoren

1
@PeterTaylor: Muhtemelen uygulamaya bağlıdır, ancak benim durumumda alloca(1)temelde sub $1, %espyığına dokunulmaması için çevrilmiş .
Meslek

7

Ortak Lisp, 7 karakter

#1='#1#

Güzel ... #1=(#1#)Terminal için kullanmayı planlıyordum (print #1=(#1#)), ama çözümün çok daha iyi.
protestocu

Aslında bu, okuma zamanında taşar, ancak yazdırmaya çalıştığınızda. Yani 1 karakter arasındaki fark dışında, seninki daha iyi değil.
protestocu

Haklısın, sadece bunu düzenledi. Okuma zamanında taşma yapmanın bir yolu olup olmadığından emin değilim.
Erik Haliewicz

Aslında, #. # 1 = '# 1 #, okuma zamanının taşmasına neden oluyor :-)
Erik Haliewicz

7

Python - 11 karakter

exec'('*999

>>> exec'('*999
s_push: parser stack overflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError

Çok akıllıca bir çözüm.
mbomb007

7

Casio Hesap Makinesi, 11 tuşa basıldı

Bu "dil" de bayt / jeton saymak oldukça zordur - Shift, Alpha (ikinci shift tuşu) ve =sonunda hariç olmak üzere gereken tuşa basma sayısını verdim - ve sonunda - bu kesinlikle tuşa basma başına 1 bayta uyar.

Standart, grafiksel olmayan, "programlanamayan" bir bilimsel hesap makinesi olan fx-85GT PLUS modelinde test edilmiştir . Diğer modeller işe yarayacak.

Sadece 11 küp kök biriktirin:

3√ 3√ 3√ 3√
3√ 3√ 3√ 3√
3√ 3√ 3√

Karekök altındaki eksik numara hakkında bir sözdizimi hatası bile vermiyor.

Bu kare köklerle çalışmıyor gibi görünüyor.

Alternatif olarak, cos(31 kez tekrarlayın .

Çıktı

Stack ERROR

[AC]  :Cancel
[<][>]:Goto

Bunun bir yığın taşması olarak nitelendirildiğine inanıyorum. Yığın minik görünüyor ...


Hep çok fazla kökleri "yığılmış" çünkü yığın hatası dendiğini sanıyordum: P
FlipTack

Canon hesap makinem 25 kez veya daha fazla tekrarlanırsa hemen hemen her operatörde (en az +, -, * ve / hariç) bir yığın hatası veriyor. Örneğin, bu yığın hatasına neden olur (sözdizimi hatası olmadan):(((((((((((((((((((((((((
Steadybox

7

FORTH, 13 bayt

BEGIN 1 AGAIN

değer yığınını aşar


: X X ; X(9) dönüş yığını yığınını
aşmalı

işe yaramayacak (X çağrıyı tanımlarken tanımlanmış değildir ve bu bir öz referans / özyineleme
cırcır ucube

@ ratchetfreak, bu kontrol kelimeleri sadece derleme durumunda kullanılabilir, bu yüzden bir :... ;kelime tanımına sarılmaları gerekir . Bu program olarak yürütülmesi için en az 6 karakter, artı en az 2 karakter ekler. Sen bunu daha kısa yapabilmek, ama burada bir örnek olabilir: : F BEGIN 1 AGAIN ; F. Bunu öneriyorum çünkü soru şu soruyu soruyor: "Bir program yaz." Neyse, char sayısı ne olursa olsun, size Forth için bir artı verdi! :-)
Darren Stone

6

Postscript, 7

{1}loop

Örneğin.

$ gsnd
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>{1}loop
Error: /stackoverflow in 1
Operand stack:
   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue   --nostringval--   --nostringval--   false   1   %stopped_push   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue
Dictionary stack:
   --dict:1168/1684(ro)(G)--   --dict:0/20(G)--   --dict:77/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 8
GS<1>


6

LaTeX: 8 karakter

\end\end

Bu, bu cevapta kullanılan kodun aynısıdır . Esas olarak, \endmakro yığın taşması ile sonuçlanan, sürekli kendisini genişletir: TeX capacity exceeded, sorry [input stack size=5000]. Daha ayrıntılı bir açıklama burada bulunabilir .


5

PHP 5.4, 33 karakter

for($n=1e5;$n--;)$a=(object)[$a];

Bu, iç içe stdClass nesneleri otomatik olarak imha edildiğinde yığın taşmasına neden olur :

$ gdb -q php
Reading symbols from /usr/bin/php...(no debugging symbols found)...done.
(gdb) set pagination 0
(gdb) r -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
Starting program: /usr/bin/php -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
(gdb) bt
#0  0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
#1  0x00000000006dee73 in zend_objects_store_del_ref ()
#2  0x00000000006a91ca in _zval_ptr_dtor ()
#3  0x00000000006c5f78 in zend_hash_destroy ()
#4  0x00000000006d909c in zend_object_std_dtor ()
#5  0x00000000006d9129 in zend_objects_free_object_storage ()
#6  0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#7  0x00000000006dee73 in zend_objects_store_del_ref ()
#8  0x00000000006a91ca in _zval_ptr_dtor ()
#9  0x00000000006c5f78 in zend_hash_destroy ()
#10 0x00000000006d909c in zend_object_std_dtor ()
#11 0x00000000006d9129 in zend_objects_free_object_storage ()
[...]
#125694 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125695 0x00000000006dee73 in zend_objects_store_del_ref ()
#125696 0x00000000006a91ca in _zval_ptr_dtor ()
#125697 0x00000000006c5f78 in zend_hash_destroy ()
#125698 0x00000000006d909c in zend_object_std_dtor ()
#125699 0x00000000006d9129 in zend_objects_free_object_storage ()
#125700 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125701 0x00000000006dee73 in zend_objects_store_del_ref ()
#125702 0x00000000006a91ca in _zval_ptr_dtor ()
#125703 0x00000000006c4945 in ?? ()
#125704 0x00000000006c6481 in zend_hash_reverse_apply ()
#125705 0x00000000006a94e1 in ?? ()
#125706 0x00000000006b80e7 in ?? ()
#125707 0x0000000000657ae5 in php_request_shutdown ()
#125708 0x0000000000761a18 in ?? ()
#125709 0x000000000042c420 in ?? ()
#125710 0x00007ffff5b6976d in __libc_start_main (main=0x42bf50, argc=3, ubp_av=0x7fffffffe738, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe728) at libc-start.c:226
#125711 0x000000000042c4b5 in _start ()

2
PHP'nin CodeGolf'taki ikinci görünümü olmalı!
Bojangles

5

Q / k (16 karakter)

Bunun meydan okuma ruhunda olup olmadığından emin değilim, ancak kuralları ihlal ettiğini sanmıyorum :

s:{f`};f:{s`};f`

Çok yazık, C # çok fazla yazmayı gerektiriyor, benim cevabımı verdin!
Andrew Gray

5

Aynı tarzda bir demet:

Python, 30

(lambda x:x(x))(lambda y:y(y))

Javascript, 38

(function(x){x(x)})(function(y){y(y)})

Lua, 44

(function(x) x(x) end)(function(y) y(y) end)

Python'da x=lambda y:y(y);x(x)kısadır (20 karakter). Bu fonksiyon özyinelemeli değildir. x bağımsız değişken olarak kendisine iletilen herhangi bir işlevi çağırır.
AMK

Yakut 2.0 -->x{x[x]}[->y{y[y]}]
John Dvorak

Mathematica#@#&[#@#&]
alephalpha

Sadece özyinelemeyi kullanıyorsunuz, o zaman neden sadece bunu yapmıyorsunuz, örneğin JS: (function x () {x ()}) ()?
xem

@xem Gereksinimler özyineleme yok diyor, bu yüzden.
Danny,

5

C #: 106 86 58 46 32 28

32 : Alıcılar makinenizi C # ile kolayca SO:

public int a{get{return a;}}

1
public int a {get{return a;}}
Setöre

3
Bu, "Kendini çağıran bir işlevi tanımlamanıza izin verilmiyor" kuralını ihlal ediyor. Kuşkusuz, sözdizimi şekerinin arkasına gizlenmiş, ancak yine de zorluğun konusu eksik.
Peter Taylor

Ayarlayıcıyı bir şekilde eklemek kuralı atlatır, çünkü şimdi birbirinizi çağıran iki işleve sahipsiniz. Fakat merak ediyorum: bu hala OP'nin bu zorluğun arkasındaki niyetini ihlal ediyor mu?
Andrew Gray

1
Anladığım kadarıyla, tercüman veya dilin standart API'sinde aşırı iç içe geçmiş bazı özdeyişler bulmak. Bu C # ile çok kolay olmayabilir.
Peter Taylor

1
Neden "public string"? "int" aynı zamanda çalışır:int a { get { return a; } }
NPSF3000 11

5

INTERCAL, 12 bayt

(1)DO(1)NEXT

Açıklama:

NEXTINTERCAL'in bir alt rutin çağrının (veya en azından alabileceğiniz en yakın) sürümüdür. Geçerli konumu NEXTyığının üzerine iter ve verilen etikete atlar.

Ancak, NEXTyığın uzunluğu 80'i aşarsa, yığın taşmasının INTERCAL sürümünün hemen hemen ne olduğunu alırsınız:

ICL123I PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON
    ON THE WAY TO 1
        CORRECT SOURCE AND RESUBNIT

Ideone'da dene. .


6
“SİYAH LAGOON'UN ÜZERİNDE BULUNMADI” Bu ne, ArnoldC?
Addison Crump,

5

Mornington Hilal, 139 133

Take Northern Line to Bank
Take Circle Line to Temple
Take Circle Line to Temple
Take Circle Line to Bank
Take Northern Line to Angel

4

X86 montajı (AT&T), 33 karakter

Etiketi mainbir atlama hedefi olarak kullanmama rağmen , bunun tekrarlanan bir fonksiyon olmadığını unutmayın .

.globl main
main:push $0;jmp main

Güzel fikir: Bu bir tür özyinelemesiz özyinelemektir!
Andrea Corbellini

a86 kullanarak: dd 0fdeb6010 karakter!
Skizz

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.