Najkrótszy kod do generowania nieskończonego wyjścia

121

Napisz najkrótszy możliwy kod, który daje nieskończony wynik.

To wszystko. Kod zostanie zdyskwalifikowany tylko wtedy, gdy w pewnym momencie przestanie generować dane wyjściowe. Jak zawsze w golfowym kodzie, wygrywa najkrótszy kod.

Oto lista odpowiedzi, które moim zdaniem są naprawdę sprytne, aby mogły uzyskać uznanie:

Tabela liderów

tbodt
źródło
118
Wszystkie odpowiedzi zdyskwalifikowane, ponieważ w pewnym momencie Ziemia zostanie pochłonięta przez słońce, a w pewnym momencie wszechświat umrze: P
Klamka
17
Czy liczy się „nieskończony aż do awarii komputera”? <_ <
Izkata
5
Jeśli piszę mój w Piet , czy mogę policzyć piksele tekstu używanego przez inne programy? Uważam, że najmniejszy możliwy powtarzający się program Piet miałby 6 pikseli. To bije Befunge, jeśli „wyłączone” piksele nadal się liczą.
DampeS8N,
9
@Izkata Tak więc dozwolona jest również każda odpowiedź, która powoduje awarię komputera: D
ɐɔıʇǝɥʇuʎs
7
@Doorknob Tak naprawdę wyzwaniem jest uzyskanie nieskończonej wydajności w skończonym czasie. Brzmi dość łatwo.
Sanchises

Odpowiedzi:

212

Befunge (1)

.

Wydaje na 0zawsze. Działa, ponieważ w Befunge linie się zawijają, a otrzymasz, 0jeśli wyskoczysz z pustego stosu.

marinus
źródło
6
Myślę, że mamy zwycięzcę.
primo,
96
I przysięgam miałem klasę Java gdzieś tutaj, że był krótszy. +1
l0b0
56
Ta jedna kropka dała mi teraz lepszą reputację niż moje dwie kolejne odpowiedzi łącznie.
marinus
3
Aw ... To niesprawiedliwe :) Zróbmy to w ten sposób: zmniejszam rozmiar tego obrazu o kilka pikseli i wyświetlamy go bardzo mały .. Czyli wygląda jak kropka? I nazwać to nawet? :)
Benjamin Podszun
4
Dlaczego nie jest to akceptowana odpowiedź?
Claudiu
101

x86 .COM Plik wykonywalny, 7

w hex:

b8 21 0e cd 10 eb fc

Inne potrzebują kilobajtów lub więcej bibliotek systemowych i środowiska wykonawczego. Powrót do podstaw:

$ echo -ne '\xb8!\xe\xcd\x10\xeb\xfc' > A.COM
$ dosbox A.COM

wynik

Możesz zmienić drugi bajt ( 0x21lub !), aby zmienić wyjście.

Wykorzystuje przerwanie systemu BIOS do wyjścia; nie potrzebuje DOS-a, ale nie skonfigurowałem QEMU.


Wyjaśnienie

Kod maszynowy odpowiada następującemu zespołowi:

        mov     ax, 0x0e21
again:  int     0x10
        jmp     again

Dane wyjściowe są w intwywołaniu - zgodnie z tym odniesieniem int 0x10 z 0x0e w AH wydrukuje bajt w AL na ekranie.

Wiedząc, że rejestr AX jest 16-bitowym słowem złożonym z AH w wysokim bajcie i AL w niskim bajcie, możemy zaoszczędzić dodatkowe obciążenie (a tym samym bajt w kodzie maszynowym), ładując je razem.

AlliedEnvy
źródło
2
Łał. To naprawdę dobrze
tbodt
46
niska długość kodu maszynowego powinna być warta więcej punktów niż języki wysokiego poziomu.
pwned
12
To najkrótszy kod w prawdziwym sensie.
mikrobian
4
Nie tylko działa, działa szybciej niż wszystkie inne wpisy. :)
Thane Brimhall
14
@ThaneBrimhall co jest oczywiście najważniejsze kryteria według daleko do nieskończonej pętli ... Jeśli mój komputer zawiesza się, chcę to zrobić w sposób jak najbardziej efektywny!
kratenko
91

Plik wsadowy Windows, 2 znaki

%0

Nazywa się nieskończenie.

teh_senaus
źródło
12
Zamknij drugie miejsce, stary. Dobra robota. Widziałem tylko jedną odpowiedź, w której wygrał Batch.
niepomyślnie
Jest naprawdę świetnie!!!
Qwertiy
To jest niesamowite!
Patrick Purcell,
Jak to działa: %0nie ma @, więc ciągle wyświetlałby coś takiego ...> %0. Może to jednak kiedyś pochłonąć całą pamięć RAM, ponieważ jest rekurencyjna.
Erik the Outgolfer,
2
@EriktheOutgolfer może ? Jak to się w pewnym momencie nie zawiesi z powodu nieskończonej rekurencji? Nie rozumiem, jak mogłoby to trwać przez wiele godzin
phil294
68

Befunge 98-2

,"

Wydaje „,,,,,,,,,,,” na wieczność.

AndoDaan
źródło
2
Właściwie trochę sprytny.
tbodt
Dziękuję Ci. Dziwne jest to, że „wersja wypisuje spacje (lub”. Wypisuje 32 32 32) przy użyciu najczęstszej implementacji b98. Nie mam pojęcia, skąd to się bierze.
AndoDaan
1
Szkoda, że ​​jest zakopany pod 82 395 naprawdę kiepskimi odpowiedziami.
tbodt
7
@tbodt Cóż, zgodnie ze specyfikacją, mój mały program ma całą wieczność, aby się wspiąć. Więc ... kciuki ...
AndoDaan
@AndoDaan: ", tworzy ciąg przecinka i spacje INT_MAX-2, a następnie drukuje ostatnią spację. Tak więc stos wypełni się spacjami INT_MAX-3, niezbyt wydajne.
YoYoYonnY
62

sh, 3 bajty

yes

wyjścia w ysposób ciągły

klingt.net
źródło
10
Chociaż yesjest zewnętrznym plikiem binarnym i nie jest częścią bash (ściśle mówiąc).
Bob
55
W bash (prawie) wszystko jest zewnętrznym plikiem binarnym.
Johannes Kuhn
5
Zwykle nie masz aliasu, y=yesa jeśli twój system nie jest ezoteryczny, możesz założyć, że yesjest w twoim $PATH(zobacz GNU Core Utilities ). Dzięki twojej logice możliwe jest przyjęcie dziwnych konstelacji dla każdego rozwiązania.
klingt.net
5
Tak, ale to nie tylkobash możliwości: I'ts w skorupkach POSIX podstawowa część rdzenia utils . (Tj .: zmień tytuł na sh: 3 znaki ;-)
F. Hauri
2
Jak mówi technozaur, w busybox jest wbudowany, ale w sh nim nie jest, więc zamiast tego musisz powiedzieć sh + coreutils.
Erik the Outgolfer
42

Haskell: 8 znaków

Stary wątek, ale fajny jest

 fix show

w Haskell drukuje

\\\\\\\\\\\\\....

na zawsze, ponieważ w zasadzie działa

 let x = show x in x

Wie, że xjest to ciąg znaków, więc pierwszy znak to ", więc należy go uciec \", ale wiem, że \trzeba go uciec \\\x, i tak dalej.

jozefg
źródło
... łał. Teraz zastanawiam się, czy fix$showbyłby bardziej estetyczny :-)
John Dvorak
7
Ponieważ to wymaga import Data.Function, a ponieważ zwraca ciąg zamiast go drukować, kwestionuję rzetelność liczby znaków. Ponadto ciąg jest w rzeczywistości „\” \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\\…”.
Anders Kaseorg
36

Plik wsadowy Windows, 8 znaków

:a
goto a
Patrick Purcell
źródło
1
To nie daje nieskończonej wydajności, prawda ...?
Klamka
38
robi ... bez @echo wyłącza, drukuje „goto a”, dopóki go nie zamkniesz
Patrick Purcell,
11
potrzebujemy tutaj więcej BAT
Einacio
35
Liczę dziesięć znaków: :a\r\ngoto aponieważ Windows używa CRLF
wchargin
1
@WChargin Właśnie sprawdziłem za pomocą edytora szesnastkowego. 3a 61 0a 67 6f 74 6f 20działa na moich oknach 8 ...: P
YoYoYonnY
32

Brainfuck, 4

+[.]

Alternatywnie,

-[.]
pudełko kartonowe
źródło
8
Nie ma \x01też \xFFznaków do druku. Chyba nie był to jednak wymóg: - /
John Dvorak,
Sposobem, aby wyświetlać znaki do wydruku, byłoby zastąpienie znaku +, co oznacza, że ​​wymaga on wprowadzenia danych
Prismo
31

Java, 54 znaki

Najlepsza próba w Javie:

class A{static{for(int i=0;i<1;)System.out.print(1);}}
Rich Smith
źródło
7
Funkcjonalny, zgodny z zasadami, grał w golfa. Zastanawiam się, dlaczego zostało to przegłosowane.
manatwork
14
Czy java zabrania klasycznego for(;;)wzoru? Co while(true)?
CodesInChaos
17
@CodesInChaos, Java zwykle nie zabrania tych wzorców i normalnie uważałbym je za czystsze i bardziej idiomatyczne. Tutaj jednak próbujemy przemknąć nieskończoną pętlę obok kompilatora (te formy powodują, że kompilator narzeka na brak wyjścia statycznego bloku {}).
Rich Smith
2
@Mechanicalsnail Tak, bloki statyczne nie mogą być wykonywane samodzielnie od czasu java 7.
Fabinout
1
@OliverNi Ale nie możesz użyć staticbloku.
Okx,
30

Bash, 4 bajty

$0&$

Wysyła w ./forever2.sh: line 1: $: command not foundsposób ciągły.

Ponieważ $0jest w tle, każdy rodzic umiera po niepoprawnym poleceniu $, dlatego stos / pamięć nie zostanie zjedzona i powinno to trwać w nieskończoność.

O dziwo, wydajność z czasem staje się coraz wolniejsza. topzgłasza, że ​​użycie procesora przez system jest bliskie 100%, ale istnieją procesy zapamiętywania pamięci lub procesora. Prawdopodobnie część alokacji zasobów w jądrze staje się coraz mniej wydajna.

Cyfrowa trauma
źródło
2
może zachowanie standardowego lub podobnego ...
masterX244
1
uwalnianie zasobów konkuruje z rozwidlaniem procesów / Aby go zatrzymać, nie można go zabić, ponieważ PID zmienia tylko sposób, aby go zatrzymać, to zmiana nazwy skryptu, więc się $0nie powiedzie.
Emmanuel,
29

LOLCODE (36)

HAI IZ 1<2? VISIBLE "0" KTHX KTHXBYE 

Myślałem, że dam LOLCODE szansę, ma zaskakująco dużą funkcjonalność.

Giraffestock
źródło
2
Nie musisz pytać o stdio.
kot
W wersji LOLCODE repl.it nie potrzebujesz HAIiKTHXBYE
MilkyWay90
24

JavaScript: 14

UWAGA: tak naprawdę nie chcesz uruchamiać tego w przeglądarce

for(;;)alert()
zzzzBov
źródło
31
Zaznacz „Zapobiegaj otwieraniu przez tę witrynę więcej okien dialogowych”.
Johannes Kuhn
1
@JohannesKuhn nie zaznaczaj tego i potrzebujesz ponownego uruchomienia
Ilya Gazman
8
Lub po prostu nic nie rób i nie wyświetla żadnych dalszych wyników.
Johannes Kuhn
po prostu bieganie alert()daje mi ten błądError: Not enough arguments [nsIDOMWindow.alert]
Clyde Lobo
3
Czy to naprawdę nieskończona moc wyjściowa, gdy proces jest zablokowany, a wykonanie zatrzymane do momentu interakcji humanoidalnej?
Morten Bergfall
24

Maszyna Turinga - 6 znaków:

#s->1Rs

gdzie #jest pusty symbol (domyślnie na taśmie), sopisuje jedyny istniejący (początkowy) stan, 1drukuje cyfrę, Roznacza przesunięcie w prawo, sna końcu pozostaje w tym samym stanie.

Serge
źródło
3
Naliczyłem 7 znaków !?
F. Hauri,
9
W być może najczęstszym zapisie 5-krotnym zapisywano by to po prostu jako 5 znaków s#1Rs(stan aktualny, symbol prądu, symbol do zapisu, kierunek do zmiany, następny stan).
res
19

Haskell, 10

print[1..]

Myślę, że jest to najkrótszy kod do

  1. Wydrukuj coś.
  2. Utwórz nieskończoną Show: zdolną strukturę danych.

Dla zainteresowanych drukuje:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,...
shiona
źródło
4
Czy jest jakiś powód, dla którego wybrałeś magiczną liczbę 32, aby zatrzymać się na?
ike
12
Wydawało się to miłe i okrągłe, wypełniło również przestrzeń bloku kodu tak dobrze, jak to możliwe, bez potrzeby następnej linii.
shiona
2
Jeśli maszyna ma skończoną ilość pamięci, może się skończyć, gdy liczba całkowita będzie zbyt duża, aby pomieścić ją w pamięci?
Jeppe Stig Nielsen
3
@JeppeStigNielsen Tak. Jednak liczba całkowita, która wypełniałaby nawet jeden megabajt pamięci, wynosiłaby 2 ^ (2 ^ 20) lub około 6,7 * 10 ^ 315652. Do gigabajta pamięci, a liczba ta wynosiłaby 2 ^ (2 ^ 30), potwora o prawie pół miliarda cyfr. Jestem całkiem pewien, że gdybyśmy spróbowali wydrukować serię, śmierć termiczna wszechświata uderzyłaby nas, zanim skończy się pamięć. I awaria dysku twardego wcześniej.
shiona
5
W komentarzach poniżej PO wspomniano, że „nieskończony aż do awarii komputera” również się liczy.
11684
19

Cudowny 4

24MB

Marbelous ma tu zaskakująco dobrze. Spowoduje to opublikowanie nieskończonej ilości znaków dolara $, choć dość szybko osiągnie limit stosu.

Jak to działa.

24 to dosłowny język, który spadnie z planszy i zostanie wydrukowany na STDOUT jako odpowiadający mu znak ascii. MB to nazwa domyślnie nadana płycie głównej, ponieważ płyta główna nie ma danych wejściowych, będzie uruchamiana co tyknięcie. A ponieważ komórki są oceniane od lewej do prawej, literał zawsze będzie drukowany przed następnym wywołaniem rekurencyjnym.

Jest to więc z grubsza odpowiednik tego pseudokodu:

MB() {
    print('$');
    while(true) MB();
}

Rozwiązanie bez nieskończonej rekurencji 11

24@0
@0/\..

Ten działa poprzez zapętlenie literału między dwoma portalami @0, ilekroć 24 trafi w dół @0, jest transportowane do komórki pod górną @0. To ląduje na /\, który jest operatorem klonowania, kładzie jedną kopię marmuru (dosłownie) na jego lewej stronie (z powrotem na portalu), a drugą na prawo. Ta koperta następnie spada z planszy (ponieważ ..jest pustą komórką) i jest drukowana do STDOUT. W pseudokodzie oznaczałoby to:

MB() {
    while(true) print '$'
}

Krótsze rozwiązanie bez nieskończonej rekurencji 9

24
\\/\..

Ten ciągle rzuca marmurem między klonerem a deflektorem, kładąc jeden egzemplarz na prawej komórce, aby go zrzucić z planszy. W pseudokodzie wyglądałoby to tak:

MB() {
    List charlist = ['$'];
    while(true) {
        charlist.add(charlist[0];
        charlist.add(charlist[0];
        charlist.pop();
        print(charlist.pop());
        // Wait, what?
    }
}

Uwaga

Te ..komórki są konieczne z dwóch ostatnich płyt od kulki wylądują z planszy (i wyrzucić) inaczej. Aby uzyskać dodatkową zabawę, zamieniasz 24marmur na, FFa pustą ..komórkę na ??, co zamienia każdy marmur w marmur od 0 do jego bieżącej wartości przed upuszczeniem. Zgadnij, jak by to wyglądało na STDOUT.

overactor
źródło
zrobić swój „/ \ / \” ”\\ / \”, aby uniknąć wytwarzania dodatkowego marmuru z lewej krawędzi? poprawa czysto estetyczna.
Sparr,
@Sparr, punkt, zredagowałem post.
overactor
5
Czy to rozwiązanie nie powinno mieć 25165824 bajtów (24 MB)? ; P
HyperNeutrino
18

C, 23 znaki

Nieco krótszy niż najlepsza jak dotąd odpowiedź C / C ++. Drukuje puste linie w nieskończoność (ale jeśli skompilowane bez optymalizacji, przepełnia stos).

main(){main(puts(""));}
ugoren
źródło
1
22 znaki: putc(0)(lub 1 lub 2, ... lub 9). Czy to zadziała?
CompuChip
@CompuChip, putcwymaga 2 parametrów.
ugoren,
10
@tdbot, Zauważ, że to zaakceptowana odpowiedź. Doceniam komplement, ale nie rozumiem dlaczego. Odpowiedź
ugoren,
@tbodt, nie tdbot. ftfy
nyuszika7h
5
@ nyuszika7h, W ten sposób mogłem pokazać, jak skromny jestem, trzymając się 15 powtórzeń.
ugoren
14

Python 3: 15, 17 lub 18 znaków

Odpowiedź mdeitrick jest dłuższa w Pythonie 3, który zastępuje printinstrukcję wywołaniem funkcji (15 znaków):

while 1:print()

Jest to najkrótszy czas, jaki znalazłem w Pythonie 3. Istnieją jednak bardziej interesujące sposoby drukowania w nieskończonej pętli, które mają tylko kilka znaków dłużej.

  • print()zwraca None, co! = 9, co czyni go nieskończoną pętlą; 8jest nie-OP, która zastępuje pass(18 znaków):

    while print()!=9:8
    
  • iter(print, 9)definiuje iterowalny, który zwraca wynik print()aż do równości 9(co nigdy się nie zdarza). anyzużywa iterowalne dane wejściowe w poszukiwaniu prawdziwej wartości, która nigdy nie dociera, ponieważ print()zawsze zwraca None. (Możesz również użyć settego samego efektu.)

    any(iter(print,9))
    
  • Lub możemy konsumować iterowalny testując, czy zawiera on 8(17 znaków):

    8in iter(print,9)
    
  • Lub rozpakuj go za pomocą operatora splat :

    *_,=iter(print,9)
    
  • Najdziwniejszy sposób myślałem o to, aby używać splat destructuring wewnątrz wywołania funkcji, function(*iterable). Wygląda na to, że Python próbuje wykorzystać całą iterowalność przed próbą wywołania funkcji - nawet jeśli wywołanie funkcji jest fałszywe. Oznacza to, że nie potrzebujemy nawet prawdziwej funkcji, ponieważ błąd typu zostanie zgłoszony dopiero po wyczerpaniu iterowalności (tj. Nigdy):

    8(*iter(print,9))
    
Ślimak mechaniczny
źródło
*iter(print,1),działa i ma tylko 15 znaków, ale zużywa sporo pamięci.
ivzem
14

piet - 3 kody

http://www.pietfiddle.net/img/auQXtFXATg.png?cs=15

Wyprowadza nieskończoną liczbę 1

captncraig
źródło
14

x86 .COM Plik wykonywalny, 5 bajtów

niekończące się wyjście zestawu znaków ASCII

w hex:

40 CD 29 FF E6

w asm:

inc ax
int 0x29
jmp si

Wyjaśnienie:

inc axzwiększa rejestr AX o jeden. int 0x29to procedura „szybkiego umieszczenia znaku” w MSDOS, która po prostu wyświetla wartość w AL (najniższa część AX) i przesuwa kursor o jeden. jmp sito po prostu dziwny sposób powrotu do góry, ponieważ rejestr SI ma wartość 0x100 w prawie każdym systemie operacyjnym podobnym do DOS, czyli tam, gdzie rozpoczyna się program .com;) Zamiast tego można również wykonać krótki skok, który również używa 2 bajtów.

Źródła:

MSDOS Start Values

Kodowanie rozmiaru WIKI

HellMood
źródło
13

Bitxtreme , 0,25 bajtów

Reprezentacja binarna:

00

Z dokumentacji:

Pierwszy bit każdej pary jest wskaźnikiem do pozycji pamięci, która zawiera wartość do odjęcia od akumulatora. Wynik jest przechowywany w tej samej pozycji pamięci wskazanej przez operand. Jeśli wynik jest ujemny (bity są reprezentacją uzupełnienia dwóch), wówczas drugi bit pary zostanie dodany do bieżącego komputera, moduł 2.

Licznik programu i akumulator są inicjowane do zera; następnie zawartość miejsca pamięci 0 jest odejmowana od akumulatora. Zdarza się, że wynosi 0, pozostawiając akumulator na zero. Ponieważ nie było przeniesienia, drugi bit nie jest dodawany do licznika programu.

Licznik programu jest następnie zwiększany o 2 modulo 2, wysyłając go z powrotem na początek i powodując nieskończoną pętlę. Na każdym etapie specjalna lokalizacja pamięci 0 jest modyfikowana, co powoduje 0zapisanie jej zawartości (a ) na wyjściu.

Można argumentować, że ten program powinien zostać oceniony jako 1 bajt, ponieważ oficjalny interpreter w Pythonie wymaga zerowania. Jednak nie sądzę, że dopełnianie zera jest tak naprawdę kodem .

lirtosiast
źródło
12

Podsumowanie: Ruby - 9, Golfscript - 6,> <> - 2, Białe znaki - 19, Perl - 2

Jeden język, który znam, i dwa, których nigdy wcześniej nie używałem: D
EDYCJA: Perl nie działał, kiedy instalowałem Perla, aby go wypróbować :(

Ruby, 9

loop{p 1}

Po prostu drukuje 1 na osobnych liniach w sposób ciągły.

Ponadto kilka alternatyw:

loop{p''} # prints [ "" ]  on separate lines continually
loop{p p} # prints [ nil ] on separate lines continually

10-znakowe rozwiązanie:

p 1while 1

Byłem właściwie zaskoczony, że mogłem usunąć przestrzeń między pierwszym 1a pierwszym while, ale najwyraźniej to działa

Golfscript, 6

{1p}do

Mój pierwszy program Golfscript! : P

> <> ( Ryba ), 2

1n

Biała spacja , 19

lssslssstltlsslslsl

Gdzie sreprezentuje spację, treprezentuje tabulator i llinię.

Klamka
źródło
11
Za każdym razem, gdy ktoś wpisuje słowa: „Nie mam Perla”, Bóg zabija kociaka.
primo,
2
@primo: P Cóż, przynajmniej teraz to robię.
Klamka
2
To jest kod golfowy. Utwórz jedną odpowiedź dla każdego zgłoszenia.
JB
21
@primo Dobrze, nienawidzę kotów. I nie mam Perla.
SQB
5
Program GS {1p}dodrukuje 1i zamyka tylko, ponieważ do jest sekwencją wykonawczą-testową, która jest kontynuowana tylko wtedy, gdy testuje wartość true. (Ponieważ nie ma danych wejściowych, stos jest początkowo "", który po wykonaniu 1pzostaje wyskakujący i testowany jest fałsz.) Jednak po prostu dodanie dup będzie działało, tj. {1.p}do(Przy 7 bajtach).
res
12

C, 25 24

main(){main(puts("1"));}
Rozuur
źródło
4
s/while/main/
ugoren,
2
Nie jestem pewien, czy istnieje wyjątek przepełnienia stosu w C, ale coś złego się stanie, gdy zabraknie pamięci.
Ilya Gazman
9
Optymalizacja tailcall ftw.
Johannes Kuhn
4
@JohannesKuhn: to nie jest ogon. Gdyby tak było, return main(puts("1"))to byłby ogon.
marinus
4
@psgivens. W funkcji ca bez żadnych parametrów może przyjąć dowolną liczbę parametrów. Tylko podpis methodName(void)akceptuje dokładnie zero parametrów.
James Webster
12

> <> (Ryba) , 2

Kreatywny sposób korzystania z nieskończonego codbox ryb:

"o

Ponieważ wskaźnik instrukcji wraca na początek linii po osiągnięciu końca, ten kod można zasadniczo odczytać jako

"o"o

co oznacza „przeczytaj ciąg„ o ”, a następnie wyślij go”.

Możesz przetestować kod tutaj

Thijs ter Haar
źródło
11

perl, 10 znaków

Oto kolejne rozwiązanie 10 znaków z kilkoma różnymi kompromisami. W szczególności nie wymaga flagi -n ani danych wejściowych użytkownika do uruchomienia. Jednak wciąż je pamięć ad infinitum.

warn;do$0

zapisz do pliku, uruchom ten plik, a otrzymasz np .:

Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
skibrianski
źródło
Czy nie możesz skrócić tego przy użyciu say(który zawsze drukuje nowy wiersz, nawet jeśli nie może znaleźć argumentu z dowolnego miejsca) zamiast warn? (Wymaga to użycia nowoczesnego wariantu Perla -M5.010, ale nie liczy się to do liczby postaci.)
10

dc , 7

[pdx]dx

wypisuje 'pdx \ n' nieskończenie wiele razy.

res
źródło
10

VBA: 12

Dźwięk jest wyprowadzany, prawda?

do:beep:loop

Umieść to w swoim ulubionym współpracowniku MS Office z obsługą makr, aby uzyskać trochę zabawy!

Private Sub Workbook_Open()
    Do:Beep:Loop
End Sub

Punkty bonusowe, jeśli używają słuchawek.

JesterBLUE
źródło
Dang, przeglądałem odpowiedzi, aby sprawdzić, czy ktoś jeszcze pomyślał o wydrukowaniu dzwonka. +1
mbomb007
9

Ziarno , 4 bajty

99 5

Wypróbuj online! Wysyła 11nieskończenie wiele razy

Generuje następujący program Befunge-98:

[glzgx"Lz^v*M7TW!4:wi/l-[, s44~s;|Sa3zb|u<B/-&<Y a@=nN>Nc%}"gq!kCW $1{2hyzABRj*glr#z(@Zx@xT=>1'.b
/

Wypróbuj online!


Odpowiednia część jest taka:

[>1'.b
/

bprzesuwa 11się na stos i .drukuje go. 1i 49są również wypychane na stos, ale tak naprawdę nigdy nie są drukowane.

Animacja uruchomionego kodu:

wprowadź opis zdjęcia tutaj

ovs
źródło
1
Czy to w końcu nie zabraknie pamięci, jeśli wartości są ciągle wypychane na stos, bez wyskakiwania?
caird coinheringaahing
8

C, 26 25 24 (bez rekurencji)

main(){for(;;puts(""));}

Drukuje niekończące się '\n'znaki. Jest to bajt dłuższy niż najkrótsza odpowiedź C, ale nie polega na optymalizacji wywołania ogona, aby uniknąć przepełnienia stosu.

Stuntddude
źródło
2
Możesz ogolić postać, używając for(;;)zamiastwhile(!
Alex Gittemeier
1
nie, !ponieważ wciąż \n
generuje
7

R, 13 znaków

repeat cat(1)
plannapus
źródło
repeat cat(1)powinien działać
Dason
@Dason masz rację. Nie mam pojęcia, dlaczego nalegam na umieszczanie ich za każdym razem.
plannapus
7

PowerShell 2.0: 17 11 8

Moje wstępne rozwiązanie:

while(1 -eq 1){1}

Dzięki res:

while(1){1}

Myślę, że Danko Durbić ma tutaj zwycięzcę. Nie jestem nawet pewien, dlaczego to powinno działać, ale tak jest i do tej pory nie mogę wymyślić nic krótszego.

for(){1}
Iszi
źródło
1
Spróbować while(1){1}.
res
@res zamierzałem go przyciąć o dwa, while($true){1}ale twoje rozwiązanie zdecydowanie wygrywa - zapomniałem o tym w PowerShell $true -eq 1. Opublikuj to jako odpowiedź, a dam ci głos.
Iszi
Jeśli chcesz, możesz go edytować w swoim.
res
6
Spróbować for(){1}.
Danko Durbić
@ DankoDurbić Czy możesz wyjaśnić, dlaczego to działa? Nie do końca to rozumiem. Wygląda na to, że powinienem się pomylić.
Iszi