Çıktı üretmeyen en kısa sonsuz döngü


121

Göreviniz en kısa sonsuz döngüyü oluşturmak!

Bu zorluğun amacı, yinelenen kopyadan farklı olarak çıktı üretmeyen sonsuz bir döngü oluşturmaktır. Bunun nedeni, herhangi bir çıkış yapılmaması durumunda kodun daha kısa olması olabilir.

kurallar

  • Her başvuru tam bir program olmalıdır.
  • En kısa sonsuz döngüyü oluşturmalısınız.
  • Programınızın sonunda belleği yetersiz olsa bile, başlangıçtan belleğinin bitmesine kadar sürekli çalıştığı sürece kabul edilir. Ayrıca hafızası tükendiğinde, STDERR'ye hiçbir şey yazdırmamalıdır.
  • Program giriş yapmamalı (ancak bir dosyadan okumaya izin verilir) ve STDOUT'a hiçbir şey yazdırmamalıdır. Bir dosyanın çıktısı da yasaktır.
  • Program STDERR'ye hiçbir şey yazmamalıdır.
  • Bu zorluktan daha yeni olsa bile, bir dili (veya dil sürümünü) kullanmaktan çekinmeyin. -Bir tercüman olması gerektiğine dikkat ediniz, böylece başvuru test edilebilir. Daha önce uygulanmamış bir dil için bu tercümanı kendiniz yazmanıza izin verilir (ve hatta teşvik edilir). : D
  • Gönderimler, bayt cinsinden, uygun (önceden var olan) kodlamada, genellikle (ancak zorunlu değil) UTF-8 ile puanlanır. Klasörler gibi bazı dilleri puanlamak biraz zor - eğer şüpheniz varsa, lütfen Meta'ya danışın.
  • Bu, dili en kısa sonsuz döngü programında bulmakla ilgili değil. Bu, her dilde en kısa sonsuz döngü programını bulmakla ilgilidir. Bu nedenle bir cevap kabul etmeyeceğim.
  • Seçtiğiniz dil zaten bir cevabı olan (belki de BASIC veya SQL lehçeleri, Unix kabukları veya önemsiz Brainf ** k-türevleri düşünün), başka bir (potansiyel olarak daha popüler) dilin önemsiz bir değişkeni ise, mevcut olana bir not eklemeyi düşünün aynı veya çok benzer bir çözümün diğer dilde de en kısa çözüm olduğunu söyleyin.
  • Dil için Wikipedia, Esolangs veya GitHub gibi bir web sitesi olmalıdır. Örneğin, dil CJam ise, o zaman bir başlık gibi siteye link olabilir #[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes.
  • Standart boşluklara izin verilmez.

(Bu kuralların bazılarını Martin Büttner’in “Merhaba Dünya” mücadelesinden aldım.)


Lütfen bu zorluğun nasıl iyileştirilebileceğini bana söylemek için yorumlarda bulunmaktan çekinmeyin.

Katalog

Bu, hem kullanılan dillerin alfabetik katalogunu hem de genel lider tablosunu oluşturan bir Yığın Parçacığıdır. Cevabınızın göründüğünden emin olmak için, lütfen bu Markdown başlığı ile başlayın:

# Language name, X bytes

Açıkçası yerine Language nameve X bytesuygun öğeleri ile. Dillerin web sitesine bağlanmak istiyorsanız, bu şablonu yukarıda belirtildiği gibi kullanın:

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

Şimdi, sonunda, işte snippet: (Daha iyi bir görünüm için "Tam sayfa" ya basmayı deneyin.)

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>


41
Tüm bu boş dosyaları yenmek için negatif bayt sayımı olan programları göndermeye başlamalıyım!
CJ Dennis,

3
Bu zorluk ilginçtir, çünkü 0 baytlık dil çoktur (bazıları esolan değildir). FWIW, çoğu bildirimsel dillerin üstü kapalı bir sonsuz döngüye sahiptir, çünkü bildirimsel dillerin sözdizimlerinde döngüleri yoktur (sonsuz bir döngüde çalıştıklarını varsayarlar). Merdiven diyagramları belki de en eski diller arasındadır. Ardından, sonsuz döngüye sahip olan PLC'ler için bir tür derleme olan Öğretim Dili (IL) vardır. IL'ler gibi montaj işleri üreticiler arasında farklılık gösteriyor
slebetman

Kendi kaynak kodlarını okuyan ve yürüten programlara izin veriliyor mu veya G / Ç dosyası "giriş yapmamalı" kuralını ihlal ediyor mu?
KıyafetSiyahBeğen

1
@BuSuitIsBlackNot Evet, dosya girişine izin verilir.
İnekler,

""Boş bir dize yazdırabilir misiniz ?
OldBunny2800

Yanıtlar:


216

Befunge , 0 bayt



Evet. Bir Befunge programı , kenarları saran sabit boyutlu iki boyutlu bir oyun alanında mevcuttur. Bu boşlukta hiçbir şey müdahale etmeden program sayacı varsayılan olarak sonsuz bir döngüde çalışır :)


10
Aw, bunu gönderecektim. : /
Deusovi

5
@daniero O bazı ilişkisi olabilir ... Bu standart kaçamak . Şahsen standart kaçamakla aynı fikirde değilim.
Justin,

17
@Justin Bu boşluk, yalnızca belirli zorluklar için geçerlidir.
Dennis,

1
Sen kullanabilirsiniz <pre>&nbsp;</pre>boş görünümlü kod bloğu için.
immibis

Aradığım ilk şey
Dylan Madisetti 12:15

150

L00P , 0 bayt



Bu lang, döngü için yapıldı, ve tam olarak ne yapacağını ...


15
LOL. Dil seçimi için +1.
ETHProductions

76
... bu günlerden biri bu lang tüm tarafınıza
geçecek

3
Müzikal referans için +1 ve başka bir altın rozetin için tebrikler!
Luis Mendo

Gördüğüm en iyi referans
Christopher,

138

C64 Makine Kodu , 2 Bayt

D0 FE

Sıfır bayrağı ayarlanmadığında kendisine dallanır.

Dallar, bir sonraki komut konumundan gelen tek baytlık ofsetlerdir ve 254 ikisinin tamamlayıcısında -2'dir ... BNE komutu (D0) bir bayt hafızayı alır ve ofset ikinci bir bayt alır, böylece iki bayt geri dallanır kendisine. Kod belleğe yüklendiğinde sıfır bayrağı her zaman temizlenir.

Bunun özyinelemeli bir alt yordam çağrısı olmadığını, bu nedenle hiçbir zaman hafıza tükenmeyeceğini unutmayın. Ayrıca, başlık, derleyici veya çalıştırılabilir ek yükü olmadığını unutmayın ... bu gerçekten iki baytlık bir programdır :)


13
Bu sadece bir C64 değil, 6502/6510 aile işlemcili herhangi bir makinede çalışmamalıdır? Ayrıca, yazdıkların makine kodu. Montaj olurduBNE -2
Seviye Nehri St

55
Yapısını temsil eden en az karaktere sahip olan en belirsiz dili bulmaya çalışmak yerine, küçük bir program yapmak için +1.
Knetic

1
user45891 EB FE x86'dır. 6502/6510 koşulsuz kısa atlama talimatına sahip değildir.
Random832

2
Steveverrill, touché, gerçekten makine kodu. Ve evet, Commodore 64'ü 65xx ailesinden daha fazla insanın tanıyacağını düşündüm :) VIC-20, 6502'yi kullandı ve bunu başarabilirdi. Yani, teknik olarak, 1541 disket sürücüm ... Bu konuyu denetleyiciyi yeniden programlayabildiğimi hatırlıyorum. Ah, hala C64'ü özlüyorum :)
James King,

7
Günün geri kalanında, müşterilerin şüphesiz bilgisayar mağazası sahiplerinde oynayacakları kötü bir "hile" (imho vandalizm), X86 için DOS 'kullanarak bootloader'ın başında buna benzer iki bayt koymaktı debug. Bu, makineyi etkili bir şekilde örter ve çoğu mağaza çalışanı, sadece ölü bir sürüş olmadığını bilmek için akıldan yoksundur.
Dewi Morgan

105

Brainfuck, 3 bayt

+[]

Asla azaltma: asla bitmez.


62
BF diğer cevapları aştığında komik olur.
Rohcana

SE'nin başlangıç ​​sayfasında soruyu görünce bunu düşünmek zorunda kaldım.
s3lph

1
İlk düşüncem BF oldu! : D Sandığımdan daha kısa bitti.
André Christoffer Andersen

1
Alternatif, hala aynı bayt:-[]
Unihedron

1
İddiaya girerim ]işe yarayacak bir yerde bir tercüman var
12Me21

102

/// , 3 bayt

///

Dilin ismini kaynak kod olarak kullanmak için herhangi bir bonus puanınız var mı?


71
Dürüst olmak gerekirse, bağlantının gerçekte nasıl çalıştığını görünce gerçekten işe yaradığına şaşırdım ///;)
ETHproductions

@ETHProductions Bu oldukça şaşırtıcı, ancak biri biraz daha fazla düşünüyorsa, biraz mantıklı; bu sadece URLesolangs.org wiki _ _ _ _
HyperNeutrino

12
@AlexL. Tam olarak değil. Web sunucusu bir GET isteğini görür /wiki////. O ederken amaçlanan bir yol olması, sunucu istediğini rahatlıkla bu bilgileri yapabilirsiniz.
Dennis,


56

Prolog, 5 bayt

a:-a.

Yüklem adoğru olup olmadığını bilmek için , sadece doğru olup olmadığını kontrol etmeniz gerekir a.

Dosyayı yüklemeniz ve aher ikisini de komut satırı argümanlarıyla yürütmeniz gerekir . Özyinelemenin sonsuz bir döngü olarak optimize edilmesinin olası olduğunu ve yığını üflememesi gerektiğini unutmayın.

Ayrıca, bu bir surat gibi görünüyor, ama nasıl arayacağından emin değilim. Nokta tükürük, bu yüzden belki de "bitkisel durum" veya "Kıvırcık saçlı şişkin programcı" gibi görünüyor. Önerilerinizi bekliyoruz.


3
Olmadığını kontrol edin a, eğer kontrol ederek doğrudur aeğer kontrol ederek doğrudur atekrarlama yay ... denetleyerek doğrudur!
kirbyfan64sos

50

Haskell , 9 bayt

Ana fonksiyonun sonsuz özyinelemesi. Kuyruk özyineleme optimizasyonu nedeniyle bir döngü derlenmelidir.

main=main

1
Derler, ancak çalışma zamanı sistemi çalıştırırsa döngü algılar ve <<loop>>istisna atar - en azından ile ghc. Belki başka bir derleyici farklı davranır.
nimi

4
runhaskell Loop.hsMutlu bir şekilde yapmak makinemde birkaç dakika yürütdü. Yani, en azından bir tercüman tarafından çalıştırılabilir. Atan <<loop>>çalışma zamanı istisnasının ghc, yalnızca Çalışma Zamanı Raporlarının herhangi birinde belirtildiği gibi Haskell dilinin bir parçası değil, çalışma zamanının bir uygulama detayı olduğunu düşünüyorum .
GrantS

Bu bir kenar davası. runhaskellmutlu bir şekilde kodu kabul eder, ancak döngü değildir. Hiçbir şey yapmaz. Ancak, Challange sadece döngü oluşturmak için gerektirir, onu çalıştırmak için değil, bu yüzden sanırım iyi. + 1'leyin.
nimi

@GrantS: Haskell dilinin “loop” diye bir fikri yoktur; gibi tanımlamalar main = mainanlamsal olarak undefinedya da aynı error "<<loop>>"kovadadır: alt değerler ⟂.
saat

1
Sanırım en kısa çalışma main=main>>main
haskell

43

Python, 9 bayt

Hem 2 hem de 3'te çalışır.

while 1:0

@FryAmTheEggman tarafından kısaltıldı


Not, bu Python yorumlayıcısında çalıştırıldığında çıktı üretir
Chris_Rands

2
@Chris_Rands Sadece REPL'de.
HyperNeutrino 12:17

40

x86 ELF çalıştırılabilir, 45 bayt

Bu cevapların büyük çoğunluğunun aksine, bu bağımsız bir çalıştırılabilir programda olduğu gibi gerçekten eksiksiz bir programdır.

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         ..1.@...4. ..

Programın bağırsakları, ebfeen küçük NASM programı olarak başka bir cevapta yer alan 0x20 baytında . Bununla birlikte NASM ile bir araya gelirseniz, binlerce gereksiz bayt ile çalıştırılabilir bir dosya elde edersiniz. Burada belirtilen tekniği kullanarak çoğundan kurtulabiliriz . Bu programın ELF başlığı kadar büyük olmadığını unutmayın! Bu çalıştırılabilir golf oynama biti, ELF başlığını ve program başlığını hatalı biçimlendirir, böylece dosyada aynı baytları işgal edebilir ve programımızı başlık içinde kullanılmayan bazı baytlara ekler. Linux başlığı mutlu bir şekilde okuyacak ve 0x20sonsuza dek döndüğü ofsette çalışmaya başlayacaktır .


9
.comDOS üzerinde çok daha kısa olurdu :)
JimmyB

1
Gcc'nin başlangıç ​​dosyalarını içermesine izin verirseniz, yalnızca "binlerce" bayt alırsınız. yasm && ldsadece 1k civarında çalıştırılabilir hale getirir.
Peter Cordes

37

INTERCAL, 42 18 bayt

(1)DO COME FROM(1)

@ Flawr adlı kullanıcının yorumundan alınan fikir.

EDIT: Kutsal bok, INTERCAL aslında C # 'dan daha kısa. Daha önce de oldu mu bilmiyorum.

42 bayt sürümü

DO(1)NEXT
(1)DO FORGET #1
PLEASE DO(1)NEXT

12
Bir intercal programı olmadan nasıl cüret edersinizcomefrom
kusur

1
@flawr Sabit. ;)
kirbyfan64sos

4
Np, burada golf yarışmalarında daha fazla Intercal'a ihtiyacımız olduğunu düşünüyorum =)
flawr

16
Dedin PLEASEmi
Daniel M.

34

Perl , 6 bayt

perl -e '{redo}'

Kimden perldoc -f redo:

Yinele komutu tekrarlanan koşulu tekrar değerlendirmeden döngü bloğunu yeniden başlatır ... Bir bloğun kendi başına semantik olarak bir kez çalıştırılan bir döngü ile aynı olduğunu unutmayın. Bu nedenle, böyle bir bloğun içinde yinelemek etkili bir şekilde bir döngüsel yapıya dönüşür.

redoÜretim kodunda çok sık görmüyorum , ancak golf için harika! İle en kısa eşdeğerlerine yukarıdaki karşılaştırın for, whileve goto:

for(;;){} # 9 bytes
1while 1  # 8 bytes
X:goto X  # 8 bytes

1
codegolf.stackexchange.com/a/59553/30206 , tek astar do$0olarak çalışmayan 4 baytı önerir perl -e.
Peter Cordes,

@PeterCordes Düzgün, "girdi almamalı" kuralını ihlal ettiğini düşünmeme rağmen. do EXPRbir dosyadan okur.
KıyafetSiyahBeğen


32

> <> , 1 bayt

 

Tek bir boşluk> <> sonsuz NOP döngüsüne girmesine neden olur

Diğer geçerli tek karakter programları (bellek gereksinimi olmadan) aşağıdaki gibidir:

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

Ayrıca, kurallar programınızın belleğinin tükenebileceğini belirtir; bu durumda geçerli 1 bayt programlar listesine aşağıdaki karakterleri ekleyebiliriz:

01234567890abcdefli

11
` `Kod bloğunu deneyin .
TheNumberOne

2
Neden sadece kullanmıyorsun >?
mbomb007

4
Bu Chem.SE olsaydı, kodu MathJax'a da koymanızı öneririm.
hBy2Py

Boş bir programın sonsuz bir döngü olmayacağından emin miyiz?
Aaron

1
Boş programı çalıştırmaya çalışırken bir çalışma zamanı hatası alın: Traceback (en son yapılan arama): Dosya "fish.py", satır 493, <module> instr = interpreter.move () Dosya "fish.py", satır 149, self._position [1]> max (self._codebox.keys ()): hareket halindeyken: ValueError: max () arg boş bir sekanstır
Fongoid

31

Motorola MC14500B Makine Kodu , 0.5 0 bayt



açıklama

Kılavuza göre, sistem bir döngü kontrol yapısına sahip olacak şekilde yapılandırılmıştır. Program sayacı en yüksek değerine kadar sayar, sıfıra geri döner ve tekrar sayar.


3
En azından küçük işler için en iyi golf dilini bulduğuna inanıyorum ... Pyth bile bu kadar kısa süremiyor. +1
ETHProductions

Bunun skorbordda 5 bayt olarak göründüğü konusunda uyarılmalıdır.
Addison Crump

C Jump, fakat nereye atlamak?
Kishan Kumar,

3
Vay, bu dili gerçekten seviyorsun, ha? : P
MD XF

Bu, 0'ın NOP olduğu, komut göstergesinin sarıldığı ve program hafızasının fazladan veri tutmadığı herhangi bir makine dilinde çalışacaktır.
12:

30

LOLKOD , 24 bayt

IM IN YR X
IM OUTTA YR X

3
Birçok LOLCODE'de, repl.it'deki gibi tercümanlar HAIve KTHXBYEgereksizdirler.
Alex A.

1
@AlexA. Oh, bunu bilmiyordum. Teşekkürler.
daniero

29

C, 15 bayt

main(){main();}

Evet, main()tekrarlı olarak aramak mümkündür . Kuyruk çağrısı optimizasyonu yapan bir derleyiciniz varsa ( -O2seçenekle gcc diyelim ), segfault bile yapmaz: derleyici işlev çağrısını a'ya çevirecek kadar akıllıdır goto.


4
Bana bunu varsayılan olarak yapan bir derleyici veremezseniz, -O2seçenek için 3 bayt eklemeniz gerekir .
LegionMammal978

19
@ LegionMammal978, mücadeledeki kurallara göre, hafızanın tükenmesi kabul edilebilir. Bu, -O2optimizasyonu bir gereksinimden ziyade "sahip olması güzel" yapar .
Mark

1
Derleyicinin seçeneklerine izin veriliyorsa (ve çözüm sayısı için sayılmazsa), neden kodu değiştirip l(){l();}seçeneklerle -Dl=main -O2
derlemiyorsunuz?

1
Karşılaştırma için, kısa olmayan yinelemeli uygun döngü uygulama 16B olup: main(){for(;;);}.
Peter Cordes

3
@wendelbsilva, kodu X (sadece bir byte) olarak değiştirip -DX = main () {main ();}
LeFauve

26

Labirent , 1 bayt

"

Herhangi bir komşu yoksa, bir labrinth programı aynı talimatı tekrar tekrar uygular. Ayrıca @talimatı yerine getirene kadar da bitmeyeceklerdir .


25

Vim , 7 tuş vuruşlarını

Düzenleyiciyi, tercihen herhangi bir komut dosyası yüklenmeden, örneğin komut satırında bunun gibi: açın. vim -u NONE

qq@qq@q

Vimscript, 15 8 bayt

Bir komut dosyasına ekleyin veya :normal moddayken önce colon ( ) tuşunu basarak doğrudan çalıştırın

wh1|endw

1
Vimscript'iniz biraz uzunwh1|endw
FDinoff

Bunun nasıl çalıştığını Vim'e aşina olmayan birine açıklayabilir misiniz?
iFreilicht 16:15

8
@ iFreilicht ara belleğe qqkaydetmeye başlar q. tampondakileri @qtekrar eder q(bu noktada hiçbir şey yok). qKaydı durdurur ve ardından tampondakileri @qtekrar eder q, bu noktada tuş vuruşlarını gösterir @q. Yani @qtekrarlar @qtekrarlar @q.... ayrıca, bu kadarını yazmak qbeynimi acıtıyor.
Wayne Werner

25

Retina , 3 bayt

+`0

Tek bir dosya verilirse, Retina, girişi belirtilen regex için bulunan eşleşme sayısı ile değiştirerek bir Sayım aşaması kullanır. Burada, regex 0. Şimdi +, önceki yinelemeden sonuç değiştiği sürece aşamayı döngüler. Peki tam olarak ne oluyor?

  • 0boş girişle eşleştirilir, sıfır eşleşme verir, sonuç budur 0. Bu girdiden farklı, bu yüzden tekrar çalıştırıyoruz.
  • 0önceki çıktıya karşı eşleşir 0, ki şimdi bir eşleşme verir ... sonuç budur 1.
  • 0önceki çıktıya karşı eşleşir 1, bu başarısız olur ... sonuç budur 0.
  • ... kaptın bu işi.

Döngü yineleme arasındaki dönüşümlü sonucu 0ve 1hangi a) döngü asla sona sağlar ve b) biz dize büyümek değil çünkü bellek yetersiz çalıştırmayan etmenizi sağlar.

Program sonlandığında Varsayılan olarak, Retina yalnızca çıkışı, bu nedenle bu yazmıyor şey (bir ekleyerek bu davranışı değiştirebilirsiniz >sonra +, o zaman alternatif sıfır ve olanları yazdırır hangi ).

1.0'dan itibaren, Retina aslında daha basit bir aşamada kullanabileceğiniz (her zaman dizgiyi değiştirmeyen) kullanabileceğiniz, daha geleneksel olan döngülere sahiptir, ancak aslında daha fazla bayt gerektirir. Bir seçenek olacaktır:

//+`


1
@ kirbyfan64sos Çok benziyorlar ama aslında oldukça farklı çalışıyorlar. :)
Martin Ender

İyi iş. Replace modunda en kısa Retina programını yapmayı deneyecektim. Merak ediyorum, +`boş girişi tekrar tekrar eşleştirebilir miyim?
mbomb007

@ mbomb007 Bunun 2birkaç yinelemeden sonra sonlanacağını düşünüyorum .
Martin Ender

24

BASIC (QBasic 4.5), 10 5 3 bayt

BASIC programlama dilinde, RUN, program yürütülmesini doğrudan moddan başlatmak veya bir yükleyici programdan bir bindirme programı başlatmak için kullanılır. - Wikipedia

Düzenleme: Bu @steenbergh göre, QBasic 4.5 satır numarası olmadan çalışır

RUN

İşte gönderdiğim ilk sürüm. Sonsuz GOTO döngüsü. Ayrıca, bu 10 byte, bu güzel bir tesadüf!

10 GOTO 10

13
Neden 10 numaralı hat? Neden 9 değil?
özyinelemeyle

25
veya 8 byte için 8? :)
MickyT

3
Kazanmayacak ve bu şekilde komik.
CJ Dennis,

3
Bu, kısa olabilir: 1 RUN
TOOGAM

2
@davidjwest Sinclair'de yapabileceğim en kısa şey BASIC: 1 GOTO SIGNUM PI- sabit girişler bellekte iki kez, kısa olarak saklandığından, 1 tanesi 4 bayt olur, ancak SIGNUM ve PI'nin her biri yalnızca bir bayt kullanır. Ah, kullandığımız eski kodlama hileleri: D Varsa ne kadar hafıza hattı numarasının geçtiğinden emin değilim, tüm söyleyebileceğim tek şey 3+ (satır numarası saklama) baytı.
Dewi Morgan

23

TIS Düğümü Tipi T21 Mimarisi, 6 bayt

İçinde NOP yazan tek bir düğüm

Mozaiklenmiş İstihbarat Sistemi düğümleri "işleme" veya "depolama" düğümleri olarak sınıflandırılır. Depolama düğümleri yalnızca bilgileri depolar ve alır ve bu durumda önemsizdir. Kalan işlem düğümleridir. Düğüm Tipi T21 veya Temel Yürütme Düğümü, en yaygın ve basittir (adından da anlaşılacağı gibi).

Teknik olarak, her bir düğüm bağımsız bir bilgisayar olarak düşünülebilir. T21 durumunda, iki depolama kaydına sahip (biri adreslenebilir, biri değil) ve 15 komutlu bir komut setine sahip bir bilgisayardır. 15 adede kadar talimatla programlanabilecek kadar hafızaya sahiptir. Tüm TIS düğümleri, bunları topolojik olarak bitişik düğümlere bağlayan dört bağlantı noktasına sahiptir. Bir bağlantı noktasından okumak, diğer ucundaki düğüm, kendisine yazana kadar bu düğümün asılmasına ve bu düğüm onu ​​okuyana kadar bağlantı noktasına yazmasına neden olur.

Şimdiye kadar TIS düğümlerinin hiçbir zaman kendi başlarına yapamayacaklarını söyleyebilirsiniz. Birlikte olsa da, zamanları için oldukça güçlü olabilirler. Bu sınırlamalar nedeniyle, birinin yalnızca tek bir düğüm kullandığını görmek çok nadirdir. Aslında, bu göre çıkış girdi alır ve sağlayan bir program gerekir TIS sistemleri girdi besleme olarak, en az üç düğüm kullanımı UPüst sırada bir düğüm noktasına ve çıktı alabilir DOWNalt satırda bir düğümün bağlantı. Üç satır vardır, bu nedenle en alta ulaşmak için verilerin en az üç düğümden geçmesi gerekir.

Bu sınırlamalar nedeniyle, TIS düğümlerinin genellikle bu şekilde kullanılması amaçlanmıştır :

  1. Giriş al
  2. Ona bir şey yap
  3. Üzerinden geçir
  4. 1. adıma dönün

Bu nedenle, talimatlar için sınırlı alan ve düğümlerin sessizce bekledikleri ve orada olmayan bir girişi okumaya çalışırken sorun yaratmadıkları gerçeği, tasarımlarında bu zorluk için onları çok iyi yapan bir karar aldı. TIS-100'ün referans kılavuzundan alıntı yapacağım:

Programın son talimatını yerine getirdikten sonra, ilk otomatik olarak çalıştırma otomatik olarak devam eder.

Mükemmel! TIS düğümleri için sonsuz döngüler varsayılandır.

Boş bir düğümün sonsuz bir döngü olduğunu iddia ederek bu soruyu neredeyse 0 baytlık bir cevapla cevapladım. Ancak, daha fazla araştırdım. İlk olarak, yukarıdaki alıntı , son komutun yürütülmesinden sonra döngünün gerçekleştiğini belirtir . Ek olarak, uygulamayı test ettim. Her düğüm her zaman bir "mod" bildirir. Programlı olarak erişilebilir değil, ancak hata ayıklamayı kolaylaştırması amaçlanmıştır. İşte olası modlar:

 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.

Her düğüm ayrı bir bilgisayar olduğu için, çalıştırma talimatlarının olup olmadığını belirleyebildiklerini ortaya koydu. Olmazsa, durumda kalırlar IDLE(güç tasarrufu yapma olasılığı yüksektir). Dolayısıyla, vicdanımın "döngü" olduğunu iddia edemedim; aksine, her bir düğüm diğerlerinin önemli bir şey yaptığını varsayarak sessizce oturdu.

Gönderdiğim bu program gerçekten sonsuz bir döngüdür, yürütüldüğünde düğümün durumunu belirler RUN. Bu beklediğiniz kadar basittir, NOPgerçekleştirir No OPhassasiyetimizi. O hiçbir şey yapmadan yaptıktan sonra, yürütme kod üst döndürür: NOP.

Eğer yetersiz bir döngü oluşturmak için T21 mimarisini kötüye ediyorum fark ederseniz, ben 2 bayt pahasına alternatif çözüm sunuyoruz: JRO 0. JROanlamına gelir JUMP Rarasında bağıl UNC Onditionally. Ya da bir şey sanırım. Talimatların üzerinde mutabık kalınmış bir şekli yoktur. Neyse, JROsayısal bir argüman alır ve yürütmeyi geçerli konuma göre bu miktarda artırır. Örneğin, JRO 2onu izleyen talimatı atlar (eğer bu talimat başka bir yerden atlanırsa kullanışlıdır). JRO 1bir talimatı ileri atlar, a NOP. JRO -1Program durdurulana kadar her iki döngüde bir önceki komutu uygulayarak etkili bir komut geri atlar. Ve tabi ki,JRO 0 sonsuza dek kendisini yürütmek, kendine atlar.

Bu noktada düşünüyor olabilirsiniz:

Elbette, monoray, bunların hepsi mantıklı geliyor, ama cevabınız basit NOP. Neden skoru 6 bayt?

Güzel soru, sorduğunuz için teşekkürler. Doğal olarak, TIS programlarının birden fazla dosyadaki programları saydığımız şekilde sayılması gerektiğini düşünebilir: tüm düğümlerdeki bayt sayısı, birinciden sonraki her bir ek düğüm için 1 bayt. Bununla birlikte, TIS golf topluluğunun bunun, çözümleri yeniden oluşturmak için gereken bilgilerin bir kısmını görmezden gelmesinin basit bir nedenden dolayı haksız olacağına karar vermesi. Bir düğümün komşuları çok önemlidir ve bu puanlama yöntemi size konumsal bilgileri ücretsiz verir. Bunun yerine, en yaygın TIS öykünücüsü tarafından kullanılan formatı karıştırdık. TIS-100. (Not: Lütfen öykünücülere öykündükleri sistemden sonra ad vermeyin. Akıllıca değil, sadece sinir bozucu ve herkesin neden bahsettiğini netleştirmesi gerekiyor.) Çok basit: TIS-100'ün 12 düğümü Aygıt, öykünmüş sistemin kurduğu tüm depolama düğümlerini atlayarak numaralandırılmış, soldan sağa ve yukarıdan aşağıya doğru numaralandırılmıştır. Nİçeren numaralandırılmış bir düğüm # CODE\n# CODE\n CODEşöyle kaydedilir:

@N
# CODE
# CODE
# CODE

Böylece, 0 numaralı bir düğüm NOP, bu formattaki göstergesine göre puanlanır:

@0
NOP

Altı bayt.

Cevaplarıma görsel olarak ilgi çekici dillerde sık sık katıldığım gibi, TIS-100 emülatörünün bu programı YouTube'da yürütmesini izleyebilirsiniz . Bu zorluğun ne olduğunu göz önüne alarak, ne görmeyi beklediğini bilmiyorum ...


Vay-ee. Bu harikaydı.
Adrian Zhang

Her zaman kabul ı JROdurdu J için UMP R arasında bağıl O ffset.
MutantOctopus

@ SBustus haklı olduğunu düşünüyorum ama başka bir montaj dili ile deneyimim olmadan önce bunu yazdım ve dilimi bilmiyordum
undergroundmonorail

Keşke bu cevabı +10 yapabilseydim. TIS-100'ü seviyorum
Shirkam

Kendime ait bir TIS öykünücüsü yazdım, şimdi Çevrimiçi Deneyin'i yapabilirsiniz . Yine de bir zaman aşımından başka bir şey beklemeyin.
Phlarx

22

C # , 38 37 36 bayt

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

Durma şartı olmayan döngü için.

Ana geri dönüşü bir int olmalıdır, ancak sonuna gelmeyeceği için bu derlenmelidir. (VS 2015 ve 2013'te test edilmiştir, ayrıca Ideone'da da çalışır ). Geobits ve MichaelS'e teşekkürler .

Daha kısa bir sürüm olan 35 bayt elde edilebilir, ancak Process is terminated due to StackOverflowExceptionstderr'e hiçbir şey yazdırmamaktan üçüncü noktayı ihlal ettiğini düşündüğüm baskılar . MichaelB'ye Kredi

class B{static int Main()=>Main();}

1
Kullanarak ;yerine bir tane kaydedebilir misiniz {}? Test ederim ama çevrimiçi hizmetler sonsuz döngülerden pek hoşlanmaz.
Geobits

@ George, Ah, evet. Bu kadar basit şeyler nasıl geçer.
Sven Kod

1
Derleyiciye bağlı olabilir, ancak int karakterini ilan ederek başka bir karakter kaydettim ve bir return cümlesi olmadan koştum. Microsoft Visual C # kullanıyorum 2013 Topluluk Sürümü 12.0.31101.00 Güncelleme 4. "class A {static int Ana () {(;;) için;}}"
Michaels

@MichaelS Teşekkürler! Benim için 2015 VS'de çalıştı.
Sven Kod Yazıyor

1
15'e karşılık, bu daha kısa olabilir (ancak). 35class B{static int Main()=>Main();}
Michael B,


20

Altıgen , 1 bayt

.

@ MartinBüttner tarafından yaratılan bu müthiş dil hakkında pek bir şey bilmiyorum, ancak gördüğüm kadarıyla @, programı durdurmayacak bir şey olmadığı için , bu sonsuz bir döngü yapmalı . .sadece bir ameliyat değildir.


3
Neden test etmiyorsunuz: D
İnekler

7
Bunun doğru olduğunu onaylayabilirim. :)
Martin Ender

@KritixiLithos Çevrimiçi tercüman bulamadığımdan ve test etmek istediğim her dilden tercümanı indirmeyi tercih etmiyorum. ;)
ETHProductions

16


20

Perl, 4 bayt

do$0

Kendini tekrar tekrar yürütür .


1
Çok havalı. İlk başta do EXPRbunun teknik olarak girilen bir dosyadan okuduğundan "giriş almamalı" kuralını ihlal ettiğini düşündüm , ancak OP dosya giriş / çıkışının kabul edilebilir olduğunu açıkladı. Gerçekten harika olan şey, Bash'in eşdeğerinden farklı olarak, bunun, herhangi bir yeni süreci çatallamadığı, dolayısıyla herhangi bir hafızaya veya işlem sınırına ulaşmadan süresiz olarak devam edeceğidir.
KıyafetSiyahBeğen

18

Gammaplex , 0 bayt

Gammaplex'te sonsuz döngü olmayan bir program yazmak mümkün değildir. Bu yüzden sadece girdi / çıktı kullanmayan bir program yazıyorum.


Kurallar, kalifiye olmak için sonsuz bir döngü olması gerektiğini belirtiyor.
arodebaugh

@ arodebaugh Var. Başka bir deyişle, her Gammaplex programında sonsuz bir döngü vardır.
jimmy23013

16

Pyth, 2 bayt

# 

Pyth, sonsuza dek işleçten sonra belirteçleri bekler. (Bu bir boşluk.)


16

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

yes>&-

yessonsuza kadar "y" çıktı; >&-STDOUT'u kapatır.

Boyutu aşağı almak için yardım @Dennis ve @ThisSuitIsBlackNot!


4
Bash ile sadece $0bir kabuk komut dosyasında yapabilir ve çalıştırabilirsiniz, sonsuza dek kendini çağıracak.
TessellatingHeckler

1
Yaratıcı, ama sıkıcı yaşlı while :;do :;donesadece 17 bayttır.
KıyafetSiyahBeğen

3
ping>&- 00localhost ile eşlenen Linux üzerinde çalışır .
Dennis,

1
yes! (Kullanmayı düşündüm yesama çıktıyı atmak benim başıma gelmedi.) Bir bayt ile kaydedebilirsinizyes>/dev/null
ThisSuitIsBlackNot 2:15 '

3
Bunun farkında değildim. Eğer BSD ile çalışıyorsa, evet, harika, fakat bir dosyaya yazmanın çıktı üretmeyle uyumlu olduğunu sanmıyorum .
Dennis,

15

Ortak Lisp, 6 karakter

(loop)

44
Nadir Lisp gibi bir şey var mı ?
kusur

10
@flawr Ben sadece komik bir yorum olduğunu farz edeceğim, ancak Common Lisp, Lisp ailesinde çoğunlukla ama oldukça uyumlu olmayan bir sürü dili bir araya getiren bir standardizasyon sürecinin sonucudur. Lisp ailesinde Common Lisp olmayan diller arasında Şema, Raket, Emacs Lisp ve Clojure bulunur.
Joshua Taylor,

Ayrıca (biraz uzun, ama biz parens saymak zorunda olmasaydı, sadece iki bayt olurdu): (do()(())).
Joshua Taylor,

@JoshuaTaylor Ben de düşündüm dove okuyucunun sonsuz döngüye girmesini sağladım , ancak kısa sürede nasıl yapılacağını bilmiyorum. Hiçbir şeyin atmadığı anlaşılıyor (loop).
coredump

@JoshuaTaylor eğer parens sayılmazsa lisp hepsinin en golf dili olurdu
Cyoce

13

Fisyon , 1 bayt

Tam olarak 4 bir baytlık çözüm var:

R
L
U
D

Bu dört harf bir atomun orada başladığını gösterir (karşılık gelen yönde). Bunlardan biri gerekli çünkü bir atom olmadan program derhal sonlandırılıyor. Kaynak kodun boyutu yalnızca bir karakter olduğundan, atom hemen sarılır ve aynı hücreyi tekrar uygular. Bununla birlikte, programın başlamasından sonra UDLRgelen bir atomu karşılık gelen yönde saptırmak için hareket eder, bu nedenle bu durumda no-ops olurlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.