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


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.


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.


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.


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


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


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.


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

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,

-[.]

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);}}

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.


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


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

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.


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

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.


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(""));}

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

*iter(print,1),działa i ma tylko 15 znaków, ale zużywa sporo pamięci.
— ivzem


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


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 .


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


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"));}

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


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.

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.


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.


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


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.


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)

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}

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.