Infinite loop terpendek yang tidak menghasilkan output

121

Tugas Anda adalah membuat loop tak terbatas terpendek!

Inti dari tantangan ini adalah membuat loop infinite yang tidak menghasilkan output, tidak seperti duplikat yang mungkin. Alasannya adalah karena kodenya mungkin lebih pendek jika tidak ada output yang diberikan.

Aturan

  • Setiap pengajuan harus merupakan program lengkap.
  • Anda harus membuat loop tak terbatas terpendek.
  • Bahkan jika program Anda kehabisan memori pada akhirnya, itu masih diterima selama itu berjalan sepanjang waktu dari awal hingga ketika kehabisan memori. Juga ketika kehabisan memori, itu masih tidak harus mencetak apa pun ke STDERR.
  • Program tidak boleh mengambil input (namun, membaca dari file diperbolehkan), dan tidak boleh mencetak apa pun ke STDOUT. Output ke file juga dilarang.
  • Program tidak boleh menulis apa pun kepada STDERR.
  • Jangan ragu untuk menggunakan bahasa (atau versi bahasa) meskipun itu lebih baru dari tantangan ini. -Perhatikan bahwa harus ada juru bahasa sehingga pengiriman dapat diuji. Diperbolehkan (dan bahkan dianjurkan) untuk menulis sendiri penerjemah ini untuk bahasa yang sebelumnya tidak diterapkan. : D
  • Pengajuan dinilai dalam byte, dalam pengkodean yang sesuai (sudah ada), biasanya (tetapi tidak harus) UTF-8. Beberapa bahasa, seperti Folder, agak sulit untuk dinilai - jika ragu, silakan tanyakan di Meta.
  • Ini bukan tentang menemukan bahasa dengan program loop tak terbatas terpendek. Ini adalah tentang menemukan program loop tak terbatas terpendek dalam setiap bahasa. Karena itu, saya tidak akan menerima jawaban.
  • Jika bahasa pilihan Anda adalah varian sepele dari bahasa lain (yang berpotensi lebih populer) yang sudah memiliki jawaban (pikirkan dialek BASIC atau SQL, shell Unix atau Brainf ** k-turunan sepele seperti Alphuck), pertimbangkan untuk menambahkan catatan ke yang sudah ada menjawab bahwa solusi yang sama atau sangat mirip juga merupakan yang terpendek dalam bahasa lain.
  • Seharusnya ada situs web seperti Wikipedia, Esolangs, atau GitHub untuk bahasa tersebut. Misalnya, jika bahasanya adalah CJam, maka orang dapat menautkan ke situs di header seperti #[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes.
  • Tidak ada celah standar.

(Saya telah mengambil beberapa aturan ini dari tantangan "Hello World" Martin Büttner)


Silakan kirim komentar untuk memberi tahu saya bagaimana tantangan ini dapat ditingkatkan.

Katalog

Ini adalah Stack Snippet yang menghasilkan katalog abjad dari bahasa yang digunakan, dan keseluruhan leaderboard. Untuk memastikan jawaban Anda muncul, mulailah dengan tajuk penurunan harga ini:

# Language name, X bytes

Jelas mengganti Language namedan X bytesdengan barang yang tepat. Jika Anda ingin menautkan ke situs web bahasa, gunakan templat ini, seperti yang diposting di atas:

#[Language name](http://link.to/the/language), X bytes

Sekarang, akhirnya, inilah cuplikannya: (Coba tekan "Halaman penuh" untuk tampilan yang lebih baik.)

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>

Sapi dukun
sumber
41
Saya harus mulai memposting program dengan jumlah byte negatif untuk mengalahkan semua file kosong ini!
CJ Dennis
3
Tantangan ini menarik karena memunculkan banyak bahasa 0 byte (beberapa di antaranya TIDAK esolang). FWIW, sebagian besar bahasa deklaratif memiliki loop tak terbatas implisit karena bahasa deklaratif tidak memiliki loop dalam sintaks mereka (mereka menganggap mereka berjalan dalam loop tak terbatas). Diagram tangga mungkin di antara bahasa-bahasa tertua semacam itu. Kemudian Anda memiliki Bahasa Instruksi (IL), semacam perakitan untuk PLC yang juga menganggap loop tak terbatas. IL, seperti rakitan berbeda antara pabrikan
slebetman
Apakah program yang membaca dan mengeksekusi kode sumbernya sendiri diperbolehkan, atau apakah file I / O melanggar aturan "must take no input"?
ThisSuitIsBlackNot
1
@ ThisSuitIsBlackNot Ya, input file diperbolehkan.
Sapi dukun
Bisakah Anda mencetak "", string kosong?
OldBunny2800

Jawaban:

216

Befunge , 0 byte



Ya. Sebuah program Befunge ada di playfield dua dimensi dengan ukuran tetap yang melingkari tepinya. Dengan tidak ada apa-apa di ruang itu untuk mengganggu, penghitung program berjalan dalam loop tanpa batas secara default :)

daniero
sumber
10
Ah, aku akan memposting ini. : /
Deusovi
5
@daniero Ini mungkin memiliki beberapa hubungan dengan celah standar ini ... . Saya pribadi tidak setuju dengan celah standar.
Justin
17
@Justin Celah itu hanya berlaku untuk jenis tantangan tertentu.
Dennis
1
Anda dapat menggunakan <pre>&nbsp;</pre>untuk blok kode yang tampak kosong.
immibis
Hal pertama yang saya cari
Dylan Madisetti
150

L00P , 0 byte



Bahasa ini dibuat untuk perulangan, dan itulah yang akan dilakukan ...

Dennis
sumber
15
LOL. +1 untuk pilihan bahasa.
ETHproduk
76
... suatu hari, bahasa ini akan melingkari Anda
Pål GD
3
+1 untuk referensi musik, dan selamat atas lencana emas lain!
Luis Mendo
Referensi terbaik yang saya lihat
Christopher
138

Kode Mesin C64 , 2 Bytes

D0 FE

Cabang ke dirinya sendiri jika bendera nol tidak diatur.

Cabang adalah offset byte tunggal dari lokasi instruksi berikutnya, dan 254 adalah -2 dalam komplemen dua ... instruksi BNE (D0) mengambil satu byte memori, dan offset mengambil byte kedua, sehingga bercabang dua byte kembali cabang kembali untuk dirinya sendiri. Bendera nol selalu dihapus ketika kode dimuat ke dalam memori.

Perhatikan bahwa ini bukan panggilan subrutin rekursif, sehingga Anda tidak akan pernah kehabisan memori. Perhatikan juga bahwa tidak ada header, compiler, atau overhead yang dapat dieksekusi ... ini benar-benar sebuah program dua byte :)

James King
sumber
13
Bukankah seharusnya ini bekerja pada mesin apa pun dengan prosesor keluarga 6502/6510, bukan hanya C64? Juga, apa yang Anda tulis adalah kode mesin. Perakitan akan menjadiBNE -2
Level River St
55
+1 untuk membuat program aktual yang kecil, alih-alih mencoba menemukan bahasa yang paling tidak jelas yang kebetulan memiliki karakter paling sedikit untuk mewakili struktur.
Knetic
1
@ user45891 EB FE adalah x86. 6502/6510 tidak memiliki instruksi lompat pendek tanpa syarat.
Random832
2
Steveverrill, sentuh, ini memang kode mesin. Dan ya, saya pikir lebih banyak orang akan mengenali Commodore 64 daripada keluarga 65xx pada umumnya :) VIC-20 menggunakan 6502 dan akan dapat menjalankan ini. Jadi, secara teknis, akankah floppy drive 1541 saya ... Saya samar-samar ingat bisa memprogram ulang controller itu. Ah, saya masih merindukan C64 saya :)
James King
7
Kembali pada hari itu, "trik" yang sangat jahat (imho vandalism) yang akan dimainkan pelanggan pada pemilik toko komputer yang tidak menaruh curiga adalah menempatkan dua byte yang serupa dengan ini tetapi untuk X86, pada awal bootloader, menggunakan DOS ' debug. Ini secara efektif akan merusak mesin, dan sebagian besar staf toko tidak tahu bahwa itu bukan hanya drive mati.
Dewi Morgan
105

Brainfuck, 3 byte

+[]

Tidak pernah berkurang: tidak pernah berakhir.

mınxomaτ
sumber
62
Lucu ketika BF mengalahkan sebagian besar jawaban lainnya.
Rohcana
Saya harus memikirkan ini ketika saya melihat pertanyaan di halaman awal SE.
s3lph
1
Pikiran pertama saya adalah BF! : D Itu berakhir lebih pendek dari yang saya kira.
André Christoffer Andersen
1
Alternatif, byte yang masih sama:-[]
Unihedron
1
Saya yakin ada penerjemah di suatu tempat di mana ]akan bekerja
12Me21
102

/// , 3 byte

///

Adakah poin bonus untuk menggunakan nama bahasa sebagai kode sumber?

Dennis
sumber
71
Saya benar-benar terkejut bahwa tautannya benar-benar berfungsi, mengingat bagaimana akhirnya /// ;)
ETHproduksi
@ ETHproductions Itu agak mengejutkan, tetapi jika orang berpikir sedikit lebih banyak, itu masuk akal; itu hanya URLesolangs.org wiki _ _ _ _
HyperNeutrino
12
@AlexL. Tidak semuanya. Server web melihat permintaan GET untuk /wiki////. Sementara itu dimaksudkan sebagai jalur, server dapat melakukan informasi apa pun yang diinginkannya.
Dennis
73

Java , 53 byte

class A{public static void main(String[]a){for(;;);}}

Persyaratan program lengkap!

Geobit
sumber
78
Tuhan adalah verbose itu ...
mınxomaτ
4
@ minxomat Yap, 45 byte untuk main:( kosong
Geobits
3
@minxomat harus suka itu OOP
Luke
55
Itu bukan OO. Menempatkan kode di kelas tidak membuatnya menjadi OO, lebih dari meletakkan batu di microwave membuatnya menjadi makanan.
imallett
5
@ imallett Siapa bilang batu bukan makanan?
Geobits
56

Prolog, 5 byte

a:-a.

Untuk mengetahui apakah predikat aitu benar, Anda hanya perlu memeriksa apakah predikat aitu benar.

Anda perlu memuat file dan mengeksekusi a, keduanya dengan argumen baris perintah. Perhatikan bahwa rekursi kemungkinan akan dioptimalkan sebagai loop tak terbatas dan tidak boleh meniup stack.

Juga, ini terlihat seperti senyuman, tetapi saya tidak yakin bagaimana menyebutnya. Titik tersebut terlihat seperti air liur, jadi mungkin "keadaan vegetatif", atau "programmer Infiurated dengan rambut keriting". Saran diterima.

coredump
sumber
3
Periksa apakah aitu benar dengan memeriksa apakah aitu benar dengan memeriksa apakah aitu benar dengan memeriksa ... yay rekursi!
kirbyfan64sos
50

Haskell , 9 byte

Rekursi tak terbatas dari fungsi utama. Harus dikompilasi ke loop karena optimasi rekursi ekor.

main=main
Hibah
sumber
1
Ini mengkompilasi, tetapi jika menjalankan sistem runtime mendeteksi loop dan melempar <<loop>>pengecualian - setidaknya dengan ghc. Mungkin beberapa kompiler lain berperilaku berbeda.
nimi
4
Melakukannya runhaskell Loop.hsdengan senang hati menjalankannya selama beberapa menit di komputer saya. Jadi, setidaknya bisa dijalankan oleh penerjemah. Saya pikir <<loop>>pengecualian runtime yang ghcmelempar adalah murni implementasi detail dari runtime dan bukan bagian dari bahasa Haskell sebagaimana ditentukan dalam salah satu dari Laporan Haskell.
Hibah
Ini kasus tepi. runhaskelldengan senang hati menerima kode tetapi tidak berulang. Tidak melakukan apa-apa. Namun, tantangannya hanya perlu membuat loop, bukan untuk mengeksekusinya, jadi saya kira tidak apa-apa. Punya +1.
nimi
@GrantS: bahasa Haskell tidak memiliki gagasan "loop"; definisi suka main = mainsecara semantik berada di bucket yang sama dengan undefinedatau error "<<loop>>": nilai bawah ⟂.
lagi mengaktifkan counterclock dengan
1
Saya pikir loop main=main>>main
haskell
43

Python, 9 byte

Bekerja dalam 2 dan 3.

while 1:0

Disingkat oleh @FryAmTheEggman

Ruth Franklin
sumber
perhatikan, ini tidak menghasilkan keluaran ketika dijalankan dalam interpreter Python
Chris_Rands
2
@Chris_Rands Hanya di REPL.
HyperNeutrino
40

Eksekusi x86 ELF, 45 byte

Berbeda dengan sebagian besar jawaban ini, ini adalah program yang benar-benar lengkap, seperti dalam program yang dapat dieksekusi berdiri sendiri.

00000000: 7f45 4c46 0100 0000 0000 0000 0000 0100  .ELF............
00000010: 0200 0300 2000 0100 2000 0100 0400 0000  .... ... .......
00000020: ebfe 31c0 40cd 8000 3400 2000 01         [email protected]. ..

Nyali program berada pada byte 0x20 ebfe, yang ditampilkan dalam jawaban lain sebagai program NASM terkecil. Namun, jika Anda merakitnya dengan NASM, Anda mendapatkan executable dengan ribuan byte yang tidak dibutuhkan. Kita dapat menyingkirkan sebagian besar dari mereka menggunakan teknik yang diuraikan di sini . Anda mungkin memperhatikan bahwa program ini bahkan tidak sebesar header ELF! Sedikit golf yang dapat dieksekusi ini merusak header ELF dan header program sehingga mereka dapat menempati byte yang sama dalam file dan memasukkan program kami ke beberapa byte yang tidak digunakan dalam header. Linux masih akan dengan senang hati membaca header dan memulai eksekusi di offset di 0x20mana ia berputar selamanya.

casey
sumber
9
.compada DOS akan jauh lebih pendek :)
JimmyB
1
Anda hanya mendapatkan "ribuan" byte jika Anda membiarkan gcc menyertakan file startup. yasm && ldmembuat executable hanya sekitar 1k.
Peter Cordes
37

INTERCAL, 42 18 byte

(1)DO COME FROM(1)

Ide diambil dari komentar @ flawr.

SUNTING: Sialan, INTERCAL sebenarnya lebih pendek dari C #. Saya tidak tahu apakah itu pernah terjadi sebelumnya ...

Versi 42 byte

DO(1)NEXT
(1)DO FORGET #1
PLEASE DO(1)NEXT
kirbyfan64sos
sumber
12
Berani-beraninya Anda melakukan program selingan tanpacomefrom
flawr
1
@ flawr Diperbaiki. ;)
kirbyfan64sos
4
Np, saya pikir kita perlu lebih banyak Intercal dalam kontes golf di sini =)
flawr
16
Apakah Anda mengatakannya PLEASE?
Daniel M.
34

Perl , 6 byte

perl -e '{redo}'

Dari perldoc -f redo:

Perintah redo me-restart blok loop tanpa mengevaluasi kembali bersyarat ... Perhatikan bahwa blok dengan sendirinya identik dengan loop yang dijalankan sekali. Jadi mengulang di dalam blok seperti itu secara efektif akan mengubahnya menjadi sebuah konstruksi perulangan.

Saya tidak melihat redoterlalu sering dalam kode produksi, tetapi ini bagus untuk golf! Bandingkan atas untuk setara terpendek dengan for, while, dan goto:

for(;;){} # 9 bytes
1while 1  # 8 bytes
X:goto X  # 8 bytes
IniSuitIsBlackNot
sumber
1
codegolf.stackexchange.com/a/59553/30206 menyarankan 4-byte do$0, yang tidak berfungsi sebagai perl -esatu-liner.
Peter Cordes
@PeterCordes Rapi, meskipun saya pikir itu melanggar aturan "tidak boleh mengambil input". do EXPRmembaca dari file.
ThisSuitIsBlackNot
32

> <> , 1 byte

 

Satu spasi akan menyebabkan> <> untuk masuk ke loop NOP yang tak terbatas

Program karakter tunggal sah lainnya (tanpa persyaratan memori) adalah sebagai berikut:

>^v</\|_#x!"'{}r

Selain itu, aturan menyatakan bahwa program Anda dapat kehabisan memori sehingga kami dapat menambahkan karakter berikut ke daftar program 1-byte yang valid:

01234567890abcdefli
Fongoid
sumber
11
Coba ` `untuk blok kode.
TheNumberOne
2
Kenapa tidak pakai saja >?
mbomb007
4
Jika ini Chem.SE, saya akan merekomendasikan menempatkan kode di MathJax juga.
hBy2Py
Apakah kami yakin program kosong tidak akan menjadi infinite loop?
Aaron
1
Dapatkan kesalahan runtime saat mencoba menjalankan program kosong: Traceback (panggilan terakhir terakhir): File "fish.py", line 493, di <module> instr = interpreter.move () File "fish.py", line 149, dalam gerakan if self._position [1]> max (self._codebox.keys ()): ValueError: max () arg adalah urutan kosong
Fongoid
31

Kode Mesin Motorola MC14500B , 0,5 0 byte



Penjelasan

Menurut manual, sistem dikonfigurasikan untuk memiliki struktur kontrol perulangan. Penghitung program menghitung hingga nilai tertinggi, membungkus kembali ke nol, dan menghitung kembali.

Zach Gates
sumber
3
Saya percaya Anda telah menemukan bahasa golf terbaik, setidaknya untuk tugas-tugas kecil ... bahkan Pyth tidak bisa mendapatkan ini singkat. +1
ETHproduk
Berhati-hatilah karena ini muncul sebagai 5 byte di papan skor.
Addison Crump
C adalah Jump, tetapi di mana harus melompat?
Kishan Kumar
3
Wow, Anda sangat menyukai bahasa ini, ya? : P
MD XF
Ini akan bekerja dalam bahasa mesin apa pun di mana 0 adalah NOP, penunjuk instruksi membungkus, dan memori program tidak menyimpan data tambahan.
12Me21
30

LOLCODE , 24 byte

IM IN YR X
IM OUTTA YR X
daniero
sumber
3
Dalam banyak penerjemah LOLCODE, seperti yang ada di repl.it, HAIdan KTHXBYEtidak perlu.
Alex A.
1
@AlexA. oh, tidak tahu itu. Terima kasih.
daniero
29

C, 15 byte

main(){main();}

Ya, mungkin untuk menelepon main()secara rekursif. Jika Anda memiliki kompiler yang melakukan optimasi panggilan-tailing (katakanlah, gcc dengan -O2opsi), itu bahkan tidak segfault: kompiler cukup pintar untuk mengubah fungsi panggilan menjadi a goto.

Menandai
sumber
4
Kecuali Anda dapat memberi saya kompiler yang melakukan ini secara default, Anda harus menambahkan 3 byte untuk -O2opsi.
LegionMammal978
19
@ LegionMammal978, sesuai aturan dalam tantangan, kehabisan memori dapat diterima. Itu membuat -O2optimasi menjadi "menyenangkan untuk dimiliki" daripada persyaratan.
Markus
1
Jika opsi untuk kompiler diperbolehkan (dan tidak dihitung untuk jumlah solusi), jadi mengapa tidak mengubah kode l(){l();}dan mengkompilasinya dengan opsi-Dl=main -O2
wendelbsilva
1
Sebagai perbandingan, terpendek non-rekursif implementasi lingkaran yang tepat adalah 16B: main(){for(;;);}.
Peter Cordes
3
@wendelbsilva Anda dapat memakukannya lebih banyak lagi dengan mengubah kode ke X (hanya satu byte) dan mengompilasinya dengan -DX = main () {main ();}
LeFauve
26

Labirin , 1 byte

"

Program labrinth mengeksekusi instruksi yang sama berulang kali jika tidak ada tetangga. Mereka juga tidak akan berakhir sampai mereka menjalankan @instruksi.

TheNumberOne
sumber
25

Vim , 7 penekanan tombol

Buka editor, lebih disukai tanpa skrip yang dimuat, misalnya seperti ini dari baris perintah: vim -u NONE

qq@qq@q

Vimscript, 15 8 byte

Tambahkan dalam skrip, atau jalankan langsung dengan menekan tombol titik dua ( :) terlebih dahulu saat Anda dalam mode normal

wh1|endw
daniero
sumber
1
VMScript Anda agak panjangwh1|endw
FDinoff
Bisakah Anda menjelaskan bagaimana ini bekerja untuk seseorang yang tidak terbiasa dengan Vim?
iFreilicht
8
@ iFreilicht qqmulai merekam ke dalam qbuffer. @qmemutar ulang apa yang ada di qbuffer (pada titik ini, tidak ada). qberhenti merekam, dan kemudian @qmemutar ulang whats di qbuffer, yang pada saat ini adalah penekanan tombol @q. Jadi @qreplay @qreplay @q.... juga, menulis sebanyak ini qmembuat otakku sakit.
Wayne Werner
25

Retina , 3 byte

+`0

Jika diberi satu file, Retina menggunakan tahap Count, menggantikan input dengan jumlah kecocokan yang ditemukan untuk regex yang diberikan. Di sini, regexnya 0. Sekarang +lilitkan panggung selama hasilnya berubah dari iterasi sebelumnya. Jadi apa yang sebenarnya terjadi?

  • 0dicocokkan dengan input kosong, sehingga tidak ada yang cocok, jadi hasilnya adalah 0. Ini berbeda dari input, jadi kami menjalankan ini lagi.
  • 0dicocokkan dengan output sebelumnya 0, yang sekarang memberikan satu kecocokan ... jadi hasilnya 1.
  • 0dicocokkan dengan output sebelumnya 1, yang gagal ... jadi hasilnya 0.
  • ... Anda mendapatkan idenya.

Hasil dari iterasi loop bergantian antara 0dan 1, yang a) memastikan bahwa loop tidak pernah berakhir dan b) memastikan bahwa kita tidak kehabisan memori karena string tidak tumbuh.

Secara default, Retina hanya menghasilkan setelah program berakhir, jadi ini tidak mencetak apa pun (Anda dapat mengubah perilaku ini dengan menambahkan tanda >setelah +, yang kemudian akan mencetak angka nol dan angka yang bergantian ).

Pada 1.0, Retina sebenarnya juga memiliki loop-sementara yang lebih tradisional, yang bisa Anda gunakan dengan tahap yang lebih sederhana (yang tidak mengubah string sepanjang waktu), tetapi sebenarnya membutuhkan lebih banyak byte. Satu opsi adalah:

//+`
Martin Ender
sumber
1
Wow, saya baru saja menjawab hal yang hampir sama di rs pada waktu yang bersamaan .
kirbyfan64sos
1
@ kirbyfan64sos Mereka terlihat sangat mirip, tetapi mereka sebenarnya bekerja sangat berbeda. :)
Martin Ender
Pekerjaan yang baik. Saya akan mencoba melakukan program Retina terpendek dalam mode Ganti. Saya ingin tahu, dapatkah +`mencocokkan input kosong berulang kali?
mbomb007
@ mbomb007 Saya pikir itu akan berakhir dengan 2setelah beberapa iterasi.
Martin Ender 3-15
24

BASIC (QBasic 4.5), 10 5 3 byte

Dalam bahasa pemrograman BASIC, RUN digunakan untuk memulai eksekusi program dari mode langsung, atau untuk memulai program overlay dari program loader. - Wikipedia

Sunting: Ini berfungsi tanpa nomor baris di QBasic 4.5, menurut @steenbergh

RUN

Ini versi pertama yang saya posting. Lingkaran GOTO tak terbatas. Juga, ini 10 byte, yang merupakan kebetulan yang bagus!

10 GOTO 10
mbomb007
sumber
13
Mengapa nomor 10? Kenapa tidak 9?
rekursif
25
atau 8 untuk 8 byte? :)
MickyT
3
Ini tidak akan menang dan ini lebih lucu.
CJ Dennis
3
Ini dapat disingkat menjadi: 1 RUN
TOOGAM
2
@davidjwest Terpendek yang dapat saya lakukan di Sinclair BASIC adalah: 1 GOTO SIGNUM PI- karena int konstan disimpan dalam memori dua kali, sebagai celana pendek, jadi 1 akan menjadi 4 byte, tetapi SIGNUM dan PI keduanya hanya menggunakan masing-masing satu byte. Ah, trik pengkodean lama yang biasa kami gunakan: D Tidak yakin berapa banyak jumlah baris memori yang digunakan, jika ada, jadi yang bisa saya katakan adalah 3+ (penyimpanan nomor baris) byte.
Dewi Morgan
23

TIS Node Type T21 Architecture, 6 byte

Sebuah simpul tunggal dengan NOP tertulis di dalamnya

Node Sistem Intelijen Tessellated diklasifikasikan sebagai node "pemrosesan" atau "penyimpanan". Node penyimpanan hanya menyimpan dan mengambil informasi, dan tidak relevan dalam hal ini. Yang tersisa adalah node pemrosesan. Node Type T21, atau Basic Execution Node, adalah yang paling umum dan sederhana (seperti namanya).

Secara teknis, setiap node dapat dianggap sebagai komputer independen. Dalam kasus T21, itu adalah komputer yang memiliki dua register penyimpanan (satu dialamatkan, satu tidak) dan satu set instruksi dari 15 perintah. Ini memiliki memori yang cukup untuk diprogram dengan hingga 15 instruksi. Semua node TIS memiliki empat port yang menghubungkan mereka ke node yang berdekatan secara topologi. Membaca dari port menyebabkan simpul itu menggantung sampai simpul di ujung lainnya menulis padanya, dan menulis ke port hang sampai simpul itu membacanya.

Anda mungkin bisa tahu sekarang bahwa node TIS tidak pernah dimaksudkan untuk melakukan banyak hal sendiri. Namun, bersama-sama, mereka bisa sangat kuat ... well, untuk waktu mereka. Karena keterbatasan ini, sangat jarang melihat seseorang menggunakan hanya satu node. Bahkan, sebuah program yang mengambil input dan memberikan output berdasarkan itu harus menggunakan setidaknya tiga node, karena sistem TIS memasukkan input ke UPport dari sebuah node di baris atas dan mengambil output dari DOWNport dari sebuah node di baris bawah. Ada tiga baris, jadi data harus melewati setidaknya tiga node untuk sampai ke bawah.

Karena keterbatasan ini, node TIS dimaksudkan untuk secara umum digunakan agak seperti ini:

  1. Dapatkan input
  2. Lakukan sesuatu untuk itu
  3. Sampaikan kepada
  4. Kembali ke langkah 1

Karena ini, ruang terbatas untuk instruksi dan fakta bahwa node hanya menunggu dengan tenang dan tidak menimbulkan masalah ketika mencoba membaca input yang tidak ada, keputusan dibuat dalam desain mereka yang membuat mereka sangat baik untuk tantangan ini. Saya akan mengutip dari referensi manual TIS-100:

Setelah menjalankan instruksi terakhir dari program, eksekusi secara otomatis melanjutkan ke instruksi pertama.

Sempurna! Loop tak terbatas adalah default untuk node TIS.

Saya hampir menjawab pertanyaan ini dengan jawaban 0 byte, mengklaim bahwa simpul kosong adalah infinite loop. Namun, saya meneliti lebih lanjut. Pertama, kutipan di atas menyatakan bahwa loop terjadi setelah mengeksekusi instruksi terakhir . Selain itu, saya menguji implementasinya. Setiap node melaporkan "mode" setiap saat. Itu tidak dapat diakses secara pemrograman tetapi ini dimaksudkan untuk mempermudah proses debug. Berikut adalah mode yang mungkin:

 RUN‌ - I am executing an instruction.
READ - I am reading from a port, waiting for it to be written to.
WRTE - I am writing to a port, waiting for it to be read from.
IDLE - I am doing nothing.

Ternyata, karena setiap node adalah komputer individual, mereka mampu menentukan apakah mereka memiliki instruksi untuk dijalankan atau tidak. Jika tidak, mereka tetap dalam IDLEkondisi (kemungkinan untuk menghemat daya). Karena itu, saya tidak dapat mengklaim bahwa itu "perulangan"; alih-alih, setiap simpul duduk dengan tenang, dengan asumsi yang lain melakukan sesuatu yang penting.

Program yang saya kirimkan ini benar-benar sebuah infinite loop, karena mengeksekusinya menetapkan status simpul RUN. Ini adalah yang sederhana seperti yang Anda harapkan, NOPmelakukan No OPtimbangkan. Setelah selesai melakukan apa-apa, eksekusi kembali ke atas kode: NOP.

Jika Anda merasa tidak memuaskan bahwa aku menyalahgunakan arsitektur T21 untuk membuat lingkaran, saya menawarkan solusi alternatif pada biaya 2 bytes: JRO 0. JROberarti Jump Relative tanpa Osadar. Atau sesuatu, kurasa. Tidak ada bentuk diperluas dari instruksi yang disepakati. Bagaimanapun, JROambil argumen numerik dan lompati eksekusi dengan jumlah itu relatif terhadap posisi saat ini. Misalnya, JRO 2lewati instruksi yang mengikutinya (berguna jika instruksi tersebut dilompati dari tempat lain). JRO 1melompat ke depan satu instruksi, membuatnya menjadi NOP. melompat ke dirinya sendiri, mengeksekusi dirinya sendiri selamanya.JRO -1melompat mundur satu instruksi, secara efektif melakukan instruksi sebelumnya sekali setiap dua siklus sampai program dihentikan. Dan tentu saja,JRO 0

Pada titik ini Anda mungkin berpikir:

Tentu, monorel, ini semua masuk akal, tetapi jawaban Anda sederhana NOP. Mengapa skornya 6 byte?

Pertanyaan bagus, terima kasih sudah bertanya. Orang mungkin secara naif berpikir bahwa program TIS harus dihitung dengan cara yang sama seperti kita menghitung program dalam banyak file: jumlah byte di semua node, ditambah 1 byte untuk setiap node tambahan setelah yang pertama. Namun, komunitas golf TIS memutuskan ini tidak adil karena alasan sederhana sehingga mengabaikan beberapa informasi yang diperlukan untuk membuat kembali solusi. Tetangga node sangat penting, dan metode penilaian memberi Anda informasi posisi secara gratis. Sebagai gantinya, kami telah mengadopsi format yang digunakan oleh emulator TIS paling umum, yang disebut TIS-100 yang membingungkan. (Catatan: Tolong jangan beri nama emulator setelah sistem yang mereka tiru. Ini tidak pintar, itu hanya menyebalkan dan membuat semua orang harus terus-menerus mengklarifikasi apa yang mereka bicarakan.) Sangat sederhana: 12 simpul dari TIS-100 perangkat diberi nomor, dari kiri ke kanan dan atas ke bawah, melewatkan node penyimpanan apa pun yang telah dipasang oleh sistem yang ditiru. Sebuah simpul bernomor yang Nberisi # CODE\n# CODE\n CODEdisimpan seperti ini:

@N
# CODE
# CODE
# CODE

Jadi, simpul bernomor 0 yang berisi NOPdiberi skor sesuai dengan perwakilannya dalam format ini:

@0
NOP

Enam byte.

Seperti yang sering saya sertakan dalam jawaban saya dalam bahasa yang menarik secara visual, Anda dapat menonton emulator TIS-100 menjalankan program ini di YouTube . Padahal, mengingat tantangan ini, aku tidak tahu apa yang kamu harapkan untuk dilihat ...

monmon bawah tanah
sumber
Wow-ee. Itu tadi Menajubkan.
Adrian Zhang
Saya selalu beranggapan JROberdiri J UMP untuk R elative O FFset.
MutantOctopus
@ BHustus saya pikir Anda benar tetapi saya menulis ini sebelum saya memiliki pengalaman dengan bahasa majelis lain dan saya tidak tahu bahasa
undergroundmonorail
Saya berharap saya dapat +10 jawaban ini. Saya suka TIS-100
Shirkam
Saya menulis emulator TIS saya sendiri, jadi sekarang Anda bisa mencobanya secara online . Namun, jangan berharap banyak selain batas waktu.
Phlarx
22

C # , 38 37 36 byte

class B{static int Main(){for(;;);}}

Untuk loop tanpa kondisi berhenti.

Pengembalian main harus int, tetapi karena tidak akan pernah mencapai akhir ini harus dikompilasi. (Diuji dalam VS 2015 dan 2013, juga berfungsi di Ideone ). Terima kasih Geobits dan MichaelS .

Versi yang lebih pendek, 35 byte, dapat dicapai, tetapi cetakan Process is terminated due to StackOverflowExceptionyang saya percaya melanggar poin ketiga dari tidak mencetak apa pun ke stderr. Kredit ke MichaelB

class B{static int Main()=>Main();}
Sven Menulis Kode
sumber
1
Bisakah Anda menyimpannya dengan menggunakan ;bukan {}? Saya akan menguji, tetapi layanan online tidak suka banyak loop tak terbatas.
Geobits
@ Geobits Ah, ya. Bagaimana hal-hal sederhana seperti itu lewat.
Sven Menulis Kode
1
Ini mungkin tergantung pada kompiler, tetapi saya menyimpan karakter lain dengan menyatakannya sebagai int main dan dijalankan tanpa pernyataan kembali. Saya menggunakan Pembaruan Microsoft Visual C # 2013 Versi Komunitas 12.0.31101.00 4. "kelas A {static int Main () {for (;;);}}"
MichaelS
@Michael Terima kasih! Bekerja di 2015 VS untuk saya.
Sven Menulis Kode
1
Dalam vs 15, ini mungkin lebih pendek (nyaris). 35class B{static int Main()=>Main();}
Michael B
21

Foo, 3 byte

(1)

Bahasa pemrograman favorit semua orang! : D

kirbyfan64sos
sumber
20

Hexagony , 1 byte

.

Saya tidak tahu banyak tentang bahasa yang luar biasa ini yang dibuat oleh @ MartinBüttner, tetapi dari apa yang saya lihat, ini seharusnya berulang, karena tidak ada yang @menghentikan program. .hanyalah sebuah no-op.

Produksi ETH
sumber
3
Mengapa Anda tidak mengujinya
,:
7
Saya dapat mengkonfirmasi bahwa ini benar. :)
Martin Ender
@KritixiLithos Karena saya tidak dapat menemukan juru bahasa online, dan saya tidak suka mengunduh juru bahasa untuk setiap bahasa yang ingin saya uji. ;)
ETHproduksi
16
@ ETHproductions Anda tidak? Hah.
Martin Ender
1
TIO menunjukkan bahwa program kosong berfungsi .
Weijun Zhou
20

Perl, 4 byte

do$0

Menjalankan sendiri berulang kali.

Lynn
sumber
1
Sangat keren. Pada awalnya saya pikir ini melanggar aturan "tidak boleh mengambil input" karena do EXPRmembaca dari file, yang secara teknis akan menjadi input, tetapi OP mengklarifikasi bahwa file I / O dapat diterima. Yang benar-benar keren adalah bahwa tidak seperti yang setara di Bash, katakanlah, ini tidak memotong proses baru, jadi itu akan terus tanpa batas tanpa mencapai batas memori atau proses.
ThisSuitIsBlackNot
18

Gammaplex , 0 byte

Di Gammaplex, tidak mungkin menulis program yang bukan loop tak terbatas. Jadi saya hanya menulis program yang tidak menggunakan input / output.

jimmy23013
sumber
Nah aturan menyatakan bahwa perlu ada loop tak terbatas untuk memenuhi syarat.
arodebaugh
@arodebaugh Ada. Dengan kata lain, ada loop tak terbatas di setiap program Gammaplex.
jimmy23013
16

Pyth, 2 byte

# 

Pyth mengharapkan token setelah operator selamanya. (Itu ruang.)

Biru
sumber
16

bash + BSD coreutils, 23 22 14 6 5 6 byte

yes>&-

yes menghasilkan "y" selamanya; >&-menutup STDOUT.

Terima kasih @Dennis dan @ThisSuitIsBlackNot untuk bantuan menurunkan ukurannya!

Ben
sumber
4
Dengan bash yang bisa Anda lakukan $0di dalam shellscript dan jalankan, itu akan memanggil dirinya sendiri selamanya.
TessellatingHeckler
1
Kreatif, tetapi lama membosankan while :;do :;donehanya 17 byte.
ThisSuitIsBlackNot
3
ping>&- 0bekerja di Linux, di mana 0dipetakan ke localhost.
Dennis
1
yes! (Saya berpikir untuk menggunakan yestetapi tidak terpikir oleh saya untuk membuang output.) Anda dapat menyimpan satu byte denganyes>/dev/null
ThisSuitIsBlackNot
3
Saya tidak menyadarinya. Jika berfungsi dengan BSD ya, bagus, tapi saya tidak berpikir menulis ke file sesuai dengan menghasilkan tidak ada output .
Dennis
15

Gangguan Umum, 6 karakter

(loop)
coredump
sumber
44
Apakah ada sesuatu seperti Rare Lisp ?
flawr
10
@ flawr Saya akan menganggap itu hanya komentar lucu, tetapi Common Lisp adalah hasil dari proses standardisasi yang menyatukan banyak bahasa yang sebagian besar-tapi-tidak-cukup kompatibel dalam keluarga Lisp. Bahasa dalam keluarga Lisp yang bukan Common Lisp termasuk Skema, Racket, Emacs Lisp, dan Clojure.
Joshua Taylor
Juga (sedikit lebih lama, tetapi jika kita tidak harus menghitung parens, itu akan menjadi hanya dua byte): (do()(())).
Joshua Taylor
@ JoshuaTaylor saya juga memikirkannya do, dan tentang membuat pembaca berjalan tanpa henti , tetapi saya tidak melihat bagaimana melakukannya segera. Tampaknya tidak ada yang mengalahkan (loop).
coredump
@ JoshuaTaylor jika Anda tidak menghitung parens lisp akan menjadi bahasa paling golf di antara mereka semua
Cyoce
13

Fission , 1 byte

Tepatnya ada 4 solusi satu byte:

R
L
U
D

Keempat huruf ini menunjukkan bahwa atom dimulai dari sana (dengan arah yang sesuai). Salah satunya diperlukan karena tanpa atom program akan segera berakhir. Karena kode sumber hanya berukuran satu karakter, atom akan membungkus segera, dan menjalankan sel yang sama lagi. Namun, setelah awal program UDLRhanya bertindak untuk membelokkan atom yang masuk ke arah yang sesuai, sehingga mereka menjadi no-ops dalam kasus ini.

Martin Ender
sumber