Twoim zadaniem jest stworzenie najkrótszej nieskończonej pętli!
Celem tego wyzwania jest stworzenie nieskończonej pętli, która nie generuje danych wyjściowych, w przeciwieństwie do możliwej duplikacji. Powodem tego jest fakt, że kod może być krótszy, jeśli nie zostanie podany wynik.
Zasady
- Każde zgłoszenie musi być pełnym programem.
- Musisz utworzyć najkrótszą nieskończoną pętlę.
- Nawet jeśli programowi ostatecznie zabraknie pamięci, jest on nadal akceptowany, o ile działa cały czas od początku do momentu wyczerpania pamięci. Również gdy zabraknie pamięci, nadal nie powinien drukować niczego do STDERR.
- Program nie może pobierać danych wejściowych (jednak odczyt z pliku jest dozwolony) i nie powinien drukować niczego do STDOUT. Wyjście do pliku jest również zabronione.
- Program nie może zapisywać niczego do STDERR.
- Możesz swobodnie korzystać z języka (lub wersji językowej), nawet jeśli jest on nowszy niż to wyzwanie. -Uwaga, że musi istnieć tłumacz ustny, aby można było przetestować zgłoszenie. Dozwolone jest (a nawet zachęcane) samodzielne pisanie tego tłumacza dla wcześniej niewdrożonego języka. :RE
- Zgłoszenia są oceniane w bajtach, w odpowiednim (wcześniej istniejącym) kodowaniu, zwykle (ale niekoniecznie) UTF-8. Niektóre języki, takie jak Foldery, są trudne do zdobycia - w razie wątpliwości zapytaj na Meta.
- Tu nie chodzi o znalezienie języka za pomocą najkrótszego programu z nieskończoną pętlą. Chodzi o znalezienie najkrótszego programu nieskończonej pętli w każdym języku. Dlatego nie przyjmuję odpowiedzi.
- Jeśli wybrany przez Ciebie język jest trywialną odmianą innego (potencjalnie bardziej popularnego) języka, który ma już odpowiedź (np. Dialekty BASIC lub SQL, powłoki uniksowe lub trywialne pochodne Brainf ** k, takie jak Alphuck), rozważ dodanie notatki do istniejącego odpowiedz, że to samo lub bardzo podobne rozwiązanie jest również najkrótsze w innym języku.
- Powinna istnieć strona internetowa, taka jak Wikipedia, Esolangs lub GitHub dla danego języka. Na przykład, jeśli językiem jest CJam, można link do strony w nagłówku jak
#[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes
. - Standardowe luki są niedozwolone.
(Wziąłem niektóre z tych zasad z wyzwania „Hello World” Martina Büttnera)
Proszę pisać w komentarzach, aby powiedzieć mi, jak można poprawić to wyzwanie.
Katalog
Jest to fragment kodu, który generuje zarówno alfabetyczny katalog używanych języków, jak i ogólną tabelę wyników. Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od tego nagłówka Markdown:
# Language name, X bytes
Oczywiście zastępując Language name
oraz X bytes
z odpowiednich przedmiotów. Jeśli chcesz utworzyć link do strony internetowej w tych językach, skorzystaj z tego szablonu zamieszczonego powyżej:
#[Language name](http://link.to/the/language), X bytes
Na koniec oto fragment: (Spróbuj nacisnąć „Cała strona”, aby uzyskać lepszy widok).
var QUESTION_ID=59347;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=41805;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"//api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"//api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang,user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw.toLowerCase()>b.lang_raw.toLowerCase())return 1;if(a.lang_raw.toLowerCase()<b.lang_raw.toLowerCase())return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:500px;float:left}#language-list{padding:10px;padding-right:40px;width:500px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>
""
pusty ciąg?Odpowiedzi:
Befunge , 0 bajtów
Tak. Program Befunge istnieje w dwuwymiarowym polu gry o stałym rozmiarze, który owija się wokół krawędzi. Ponieważ nic w tym miejscu nie przeszkadza, licznik programów domyślnie działa w nieskończonej pętli :)
źródło
<pre> </pre>
pustego bloku kodu.L00P , 0 bajtów
Ten język został stworzony do zapętlania i właśnie tak zrobi ...
źródło
Kod maszynowy C64 , 2 bajty
Rozgałęzia się, jeśli flaga zerowa nie jest ustawiona.
Gałęzie są jednobajtowymi przesunięciami od następnej lokalizacji instrukcji, a 254 jest -2 w uzupełnieniu dwóch ... instrukcja BNE (D0) zajmuje jeden bajt pamięci, a przesunięcie zajmuje drugi bajt, więc rozgałęzienie dwóch bajtów z powrotem rozgałęzia Do siebie. Flaga zerowa jest zawsze usuwana, gdy kod jest ładowany do pamięci.
Pamiętaj, że nie jest to rekurencyjne wywołanie podprogramu, więc nigdy nie zabraknie ci pamięci. Zauważ też, że nie ma nagłówka, kompilatora ani pliku wykonywalnego ... to naprawdę dwubajtowy program :)
źródło
BNE -2
debug
. To skutecznie zepsułoby maszynę, a większość pracowników sklepu nie miała pojęcia, że to nie był tylko martwy dysk.Brainfuck, 3 bajty
Nigdy nie zmniejszaj się: nigdy nie kończ.
źródło
-[]
]
mógłby pracować/// , 3 bajty
Jakieś dodatkowe punkty za używanie nazwy języka jako kodu źródłowego?
źródło
///
;)esolangs.org
wiki
_
_
_
_
/wiki////
. Chociaż ma to być ścieżka, serwer może zrobić z tymi informacjami, co tylko chce.Java , 53 bajty
Pełny wymóg programu!
źródło
main
:(Prolog, 5 bajtów
Aby wiedzieć, czy predykat
a
jest prawdziwy, wystarczy sprawdzić, czy predykata
jest prawdziwy.Musisz załadować plik i wykonać
a
, oba z argumentami wiersza polecenia. Zauważ, że rekurencja prawdopodobnie zostanie zoptymalizowana jako nieskończona pętla i nie powinna wysadzić stosu.Wygląda to jak buźka, ale nie jestem pewien, jak to nazwać. Kropka wygląda jak ślina, więc może „stan wegetatywny” lub „programista z kręconymi włosami”. Sugestie są mile widziane.
źródło
a
to prawda, sprawdzając, czya
to prawda, sprawdzając, czya
to prawda, sprawdzając ... yay rekurencję!Haskell , 9 bajtów
Nieskończona rekurencja głównej funkcji. Powinien zostać skompilowany do pętli ze względu na optymalizację rekurencji ogona.
źródło
<<loop>>
wyjątek - przynajmniej za pomocąghc
. Może jakiś inny kompilator zachowuje się inaczej.runhaskell Loop.hs
szczęśliwie wykonywane go przez kilka minut na moim komputerze. Tak więc jest przynajmniej uruchamiany przez tłumacza. Myślę, że<<loop>>
zgłaszany wyjątek środowiska wykonawczegoghc
jest jedynie szczegółem implementacyjnym środowiska wykonawczego, a nie częścią języka Haskell, jak określono w którymkolwiek z raportów Haskell.runhaskell
z radością przyjmuje kod, ale nie zapętla się. Nic nie robi. Jednak wyzwanie wymaga tylko utworzenia pętli, a nie jej wykonania, więc myślę, że jest w porządku. Masz +1.main = main
są semantycznie w tym samym segmencie coundefined
luberror "<<loop>>"
: dolne wartości ⟂.main=main>>main
Python, 9 bajtów
Działa zarówno w 2, jak i 3.
Skrócone o @FryAmTheEggman
źródło
Plik wykonywalny ELF x86, 45 bajtów
W przeciwieństwie do zdecydowanej większości tych odpowiedzi, jest to naprawdę kompletny program, podobnie jak w wolnostojącym programie wykonywalnym.
Jelita programu mają bajt 0x20
ebfe
, który jest opisany w innej odpowiedzi jako najmniejszy program NASM. Jeśli jednak skompletujesz to za pomocą NASM, otrzymasz plik wykonywalny z tysiącami niepotrzebnych bajtów. Większość z nich możemy pozbyć się przy pomocy techniki opisanej tutaj . Możesz zauważyć, że ten program nie jest nawet tak duży jak nagłówek ELF! Ten bit wykonywalnego golfa zniekształca nagłówek ELF i nagłówek programu, dzięki czemu mogą zajmować te same bajty w pliku i wstawiają nasz program do niektórych nieużywanych bajtów w nagłówku. Linux nadal chętnie odczyta nagłówek i rozpocznie wykonywanie z przesunięciem,0x20
gdzie obraca się na zawsze.źródło
.com
nayasm && ld
czyni pliki wykonywalne tylko około 1k.INTERCAL,
4218 bajtówPomysł zaczerpnięty z komentarza @ flawr.
EDYCJA: Cholera jasna, INTERCAL jest w rzeczywistości krótszy niż C #. Nie wiem, czy to się kiedykolwiek zdarzyło ...
Wersja 42-bajtowa
źródło
comefrom
PLEASE
?Perl , 6 bajtów
Od
perldoc -f redo
:Nie widzę
redo
zbyt często w kodzie produkcyjnym, ale jest świetny do gry w golfa! Porównaj z powyższym do najkrótszych ekwiwalentów zfor
,while
orazgoto
:źródło
do$0
, które nie działają jako jednowierszoweperl -e
.do EXPR
czyta z pliku.> <> , 1 bajt
Pojedyncza spacja spowoduje, że> <> przejdzie w nieskończoną pętlę NOP
Inne prawidłowe programy jednoznakowe (bez wymagań pamięci) są następujące:
Ponadto reguły określają, że w twoim programie może zabraknąć pamięci, w którym to przypadku możemy dodać następujące znaki do listy prawidłowych programów 1-bajtowych:
źródło
` `
bloku kodu.>
?Kod maszynowy Motorola MC14500B ,
0,50 bajtówWyjaśnienie
Zgodnie z instrukcją system ma skonfigurowaną pętlową strukturę sterowania. Licznik programu zlicza do najwyższej wartości, wraca do zera i ponownie zlicza.
źródło
LOLCODE , 24 bajty
źródło
HAI
iKTHXBYE
są niepotrzebne.C, 15 bajtów
Tak, można dzwonić
main()
rekurencyjnie. Jeśli masz kompilator, który wykonuje optymalizację wywołania ogona (powiedzmy, gcc z-O2
opcją), nawet nie segfault: kompilator jest wystarczająco inteligentny, aby zmienić wywołanie funkcji wgoto
.źródło
-O2
opcji.-O2
optymalizacja jest „przyjemna”, a nie wymogiem.l(){l();}
i skompilować go z opcjami-Dl=main -O2
main(){for(;;);}
.Labirynt , 1 bajt
Program labrinth wykonuje tę samą instrukcję w kółko, jeśli nie ma sąsiadów. Nie zakończą się również, dopóki nie wykonają
@
instrukcji.źródło
Vim , 7 naciśnięć klawiszy
Otwórz edytor, najlepiej bez załadowanych skryptów, na przykład tak jak w wierszu poleceń:
vim -u NONE
Vimscript,
158 bajtówDodaj go w skrypcie lub uruchom bezpośrednio, wciskając
:
najpierw klawisz dwukropka ( ), gdy jesteś w trybie normalnymźródło
wh1|endw
qq
rozpoczyna nagrywanie wq
buforze.@q
odtwarza zawartośćq
bufora (w tym momencie nic).q
zatrzymuje nagrywanie, a następnie@q
odtwarza zawartośćq
bufora, który w tym momencie jest naciśnięciem klawisza@q
. Więc@q
powtórki@q
powtórki@q
.... także napisanie tych wieluq
powoduje ból mojego mózgu.Siatkówka , 3 bajty
Jeśli podano pojedynczy plik, Retina używa etapu Count, zastępując dane wejściowe liczbą dopasowań znalezionych dla danego wyrażenia regularnego. Oto wyrażenie regularne
0
. Teraz+
zapętla scenę, dopóki wynik zmienia się w stosunku do poprzedniej iteracji. Co się właściwie dzieje?0
jest dopasowywany do pustego wejścia, dając zero dopasowań, więc wynik jest0
. Różni się to od danych wejściowych, więc uruchamiamy to ponownie.0
jest porównywany z poprzednim wyjściem0
, które teraz daje jedno dopasowanie ... więc wynikiem jest1
.0
jest porównywany z poprzednim wyjściem1
, które kończy się niepowodzeniem ... więc wynikiem jest0
.Wynik iteracji pętli zmienia się na przemian między
0
i1
, co a) zapewnia, że pętla nigdy się nie kończy, a b) zapewnia, że nie zabraknie nam pamięci, ponieważ łańcuch nie rośnie.Domyślnie Retina wyświetla dane wyjściowe tylko po zakończeniu programu, więc nic nie drukuje (możesz zmienić to zachowanie, dodając
>
po nim+
, co spowoduje wydrukowanie naprzemiennych zer i jedynek ).Począwszy od 1.0, Retina ma także bardziej tradycyjne pętle while, których można użyć na prostszym etapie (który nie zmienia ciągów przez cały czas), ale w rzeczywistości wymagają one więcej bajtów. Jedną z opcji byłoby:
źródło
+`
wielokrotnie dopasowywać puste dane wejściowe?2
po kilku iteracjach.BASIC (QBasic 4.5),
1053 bajtówW języku programowania BASIC RUN służy do uruchamiania wykonywania programu z trybu bezpośredniego lub do uruchamiania programu nakładki z programu ładującego. - Wikipedia
Edycja: Działa bez numeru linii w QBasic 4.5, zgodnie z @steenbergh
Oto pierwsza wersja, którą opublikowałem. Nieskończona pętla GOTO. To także 10 bajtów, co jest niezłym zbiegiem okoliczności!
źródło
1 GOTO SIGNUM PI
- ponieważ stałe liczby całkowite są przechowywane w pamięci dwukrotnie, jako skróty, więc 1 będzie 4 bajtami, ale zarówno SIGNUM, jak i PI używają tylko jednego bajtu. Ach, stare sztuczki kodowania, których używaliśmy: D Nie jestem pewien, ile numerów linii pamięci zajmuje, jeśli w ogóle, więc mogę powiedzieć, że to ponad 3 bajty (przechowywanie numerów linii).Węzeł TIS typu T21 Architektura, 6 bajtów
Węzły Tessellated Intelligence System są klasyfikowane jako węzły „przetwarzające” lub „magazynujące”. Węzły magazynowania po prostu przechowują i pobierają informacje i są w tym przypadku nieistotne. Pozostałe są węzły przetwarzania. Typ węzła T21 lub Basic Execution Node jest najczęstszym i najprostszym (jak sugeruje nazwa).
Technicznie każdy węzeł można traktować jako niezależny komputer. W przypadku T21 jest to komputer, który ma dwa rejestry pamięci (jeden adresowalny, drugi nie) i zestaw instrukcji zawierający 15 poleceń. Ma wystarczającą ilość pamięci, aby zaprogramować do 15 instrukcji. Wszystkie węzły TIS mają cztery porty łączące je z sąsiadującymi topologicznie węzłami. Odczyt z portu powoduje, że węzeł zawiesza się, dopóki węzeł na drugim końcu nie zapisze w nim, a zapis do portu zawiesza się, dopóki ten węzeł go nie odczyta.
Być może już wiesz, że węzły TIS nigdy nie były przeznaczone do samodzielnego działania. Jednak razem mogą być dość potężni ... cóż, jak na swój czas. Z powodu tych ograniczeń bardzo rzadko zdarza się, aby ktoś używał tylko jednego węzła. W rzeczywistości program, który pobiera dane wejściowe i zapewnia na ich podstawie dane wyjściowe, musi wykorzystywać co najmniej trzy węzły, ponieważ systemy TIS wprowadzają dane wejściowe do
UP
portu węzła w górnym rzędzie i pobierają dane wyjściowe zDOWN
portu węzła w dolnym rzędzie. Istnieją trzy wiersze, więc dane muszą przejść przez co najmniej trzy węzły, aby dostać się na dół.Ze względu na te ograniczenia węzły TIS są zasadniczo przeznaczone do użycia w następujący sposób:
Z tego powodu, ograniczona przestrzeń na instrukcje i fakt, że węzły po prostu czekają spokojnie i nie powodują kłopotów przy próbie odczytania danych wejściowych, których nie ma, podjęto decyzję dotyczącą ich konstrukcji, która czyni je bardzo dobrymi do tego wyzwania. Zacytuję z podręcznika TIS-100:
Doskonały! Nieskończone pętle są domyślne dla węzłów TIS.
Prawie odpowiedziałem na to pytanie z odpowiedzią 0 bajtów, twierdząc, że pusty węzeł był nieskończoną pętlą. Jednak kontynuowałem badania. Po pierwsze, powyższy cytat stwierdza, że pętla występuje po wykonaniu ostatniej instrukcji . Dodatkowo przetestowałem wdrożenie. Każdy węzeł przez cały czas zgłasza „tryb”. Nie jest dostępny programowo, ale ma na celu ułatwić debugowanie. Oto możliwe tryby:
Okazuje się, że ponieważ każdy węzeł jest pojedynczym komputerem, są oni w stanie ustalić, czy mają instrukcje do wykonania. Jeśli nie, pozostają w
IDLE
stanie (prawdopodobnie oszczędzają energię). Jako taki, z czystym sumieniem nie mogłem twierdzić, że „zapętlał się”; raczej każdy węzeł siedział cicho, zakładając, że inni robią coś ważnego.Ten program, który przesłałem, jest naprawdę nieskończoną pętlą, ponieważ jego wykonanie ustawia stan węzła na
RUN
. To jest tak proste, jak można się spodziewać,NOP
wykonujeN
o,OP
chłodnika. Raz jest to zrobione nic nie robi, wykonanie powraca do górnej części kodu:NOP
.Jeśli okaże się to niezadowalające, że jestem nadużywa architekturę T21 stworzyć pętlę, ofiaruję alternatywnego rozwiązania kosztem 2 bajty:
JRO 0
.JRO
OznaczaJ
UMPR
elativus UNCO
nditionally. Czy coś w tym stylu. Nie ma uzgodnionej rozszerzonej formy instrukcji. W każdym razieJRO
pobiera argument numeryczny i przeskakuje wykonanie o tę wartość w stosunku do bieżącej pozycji. Na przykładJRO 2
pomija następującą po nim instrukcję (przydatną, jeśli do tej instrukcji przeskakuje się gdzie indziej).JRO 1
przeskakuje do przodu o jedną instrukcję, czyniąc ją aNOP
.JRO -1
przeskakuje o jedną instrukcję wstecz, skutecznie wykonując poprzednią instrukcję raz na dwa cykle, aż program zostanie zatrzymany. I oczywiście,JRO 0
skacze do siebie, wykonując się na zawsze.W tym momencie możesz myśleć:
Dobre pytanie, dziękuję za pytanie. Można naiwnie myśleć, że programy TIS należy liczyć w ten sam sposób, w jaki liczymy programy w wielu plikach: liczbę bajtów we wszystkich węzłach plus 1 bajt dla każdego dodatkowego węzła po pierwszym. Społeczność golfistów TIS zdecydowała jednak, że byłoby to niesprawiedliwe z tego prostego powodu, że ignoruje niektóre informacje wymagane do odtworzenia rozwiązań. Sąsiedzi węzła są bardzo ważni, a ta metoda punktacji daje informacje o położeniu za darmo. Zamiast tego przyjęliśmy format używany przez najpopularniejszy emulator TIS, o mylącej nazwie TIS-100. (Uwaga dodatkowa: Proszę nie wymieniać emulatorów po systemie, który emulują. To nie jest sprytne, jest po prostu denerwujące i sprawia, że wszyscy muszą ciągle wyjaśniać, o czym mówią). To bardzo proste: 12 węzłów TIS-100 urządzenia są ponumerowane, od lewej do prawej i od góry do dołu, pomijając wszelkie węzły magazynowania zainstalowane przez emulowany system. Węzeł o numerze
N
zawierającym# CODE\n# CODE\n CODE
jest zapisywany w następujący sposób:I tak węzeł o numerze 0 zawierający
NOP
jest oceniany zgodnie z jego reprezentacją w tym formacie:Sześć bajtów.
Jak często dołączam do moich odpowiedzi w interesujących wizualnie językach, możesz obejrzeć emulator TIS-100 wykonujący ten program na YouTube . Chociaż biorąc pod uwagę to wyzwanie, nie wiem, czego się spodziewasz ...
źródło
JRO
stał J UMP do R elativus O ffset.C # ,
383736 bajtówDo pętli bez warunków zatrzymania.
Zwrot main powinien być int, ale ponieważ nigdy nie dojdzie do końca, powinno się to skompilować. (Testowany w VS 2015 i 2013, działa również w Ideone ). Dzięki Geobits i MichaelS .
Można uzyskać krótszą wersję, 35 bajtów, ale wydruki,
Process is terminated due to StackOverflowException
które moim zdaniem naruszają trzeci punkt nie drukowania niczego do stderr. Podziękowania dla Michaela B.źródło
;
zamiast{}
? Testowałbym, ale usługi online nie lubią nieskończonych pętli.class B{static int Main()=>Main();}
Foo, 3 bajty
Ulubiony język programowania dla wszystkich! :RE
źródło
Sześciokąt , 1 bajt
Nie wiem wiele o tym niesamowitym języku stworzonym przez @ MartinBüttner, ale z tego, co widziałem, powinno to zapętlać się w nieskończoność, ponieważ nie można
@
go zatrzymać..
jest po prostu zakazem.źródło
Perl, 4 bajty
Wykonuje się wielokrotnie.
źródło
do EXPR
czyta z pliku, który technicznie byłby wprowadzony, ale OP wyjaśnił, że we / wy pliku jest dopuszczalne. Naprawdę fajną rzeczą jest to, że w przeciwieństwie do odpowiednika w Bash, powiedzmy, to nie rozwidla żadnych nowych procesów, więc będzie trwać w nieskończoność, nie przekraczając żadnej pamięci ani limitów procesów.Gammaplex , 0 bajtów
W Gammaplex nie można napisać programu, który nie jest nieskończoną pętlą. Więc po prostu piszę program, który nie używa wejścia / wyjścia.
źródło
Pyth, 2 bajty
Pyth oczekuje tokenów po operatorze na zawsze. (To przestrzeń.)
źródło
bash + BSD coreutils,
23 22 14 6 56 bajtówyes
zawsze wyprowadza „y”;>&-
zamyka STDOUT.Dzięki @Dennis i @ThisSuitIsBlackNot za pomoc w zmniejszeniu rozmiaru!
źródło
$0
skrypt powłoki i uruchomić go, wywoła się na zawsze.while :;do :;done
to tylko 17 bajtów.ping>&- 0
działa w systemie Linux, gdzie0
jest mapowany na localhost.yes
! (Myślałem o użyciu,yes
ale nieyes>/dev/null
Common Lisp, 6 znaków
źródło
(do()(()))
.do
i sprawił, że czytnik przechodzi w nieskończoną pętlę, ale wkrótce nie widzę, jak to zrobić. Wydaje się, że nic nie bije(loop)
.Rozszczepienie , 1 bajt
Istnieją dokładnie 4 jednobajtowe rozwiązania:
Te cztery litery wskazują, że atom zaczyna się tam (w odpowiednim kierunku). Jeden z nich jest wymagany, ponieważ bez atomu program natychmiast się kończy. Ponieważ kod źródłowy ma tylko jeden znak, atom natychmiast zawinie się i ponownie uruchomi tę samą komórkę. Jednak po rozpoczęciu programu
UDLR
po prostu działa, aby odchylić nadchodzący atom w odpowiednim kierunku, więc w tym przypadku stają się one nieoperacyjne.źródło