var QUESTION_ID=13152,OVERRIDE_USER=8611;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;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="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><div id="language-list"> <h2>Winners 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><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>
Réponses:
Befunge (1)
Sorties
0
pour toujours. Cela fonctionne parce que dans les lignes Befunge, les lignes se chevauchent et vous obtenez0
si vous sortez de la pile vide.la source
x86 .COM exécutable, 7
en hex:
Les autres ont besoin de kilo-octets ou plus de bibliothèques système et d'exécution. Retour aux sources:
Vous pouvez modifier le 2e octet (
0x21
, ou!
) pour modifier la sortie.Utilise une interruption du BIOS pour la sortie; n’a pas besoin de DOS, mais je n’ai pas configuré QEMU.
Explication
Le code machine correspond à l'assemblage suivant:
La sortie est entièrement dans l'
int
appel - selon cette référence , int 0x10 avec 0x0e dans AH imprimera l'octet dans AL à l'écran.Sachant que le registre AX est un mot de 16 bits comprenant AH dans l'octet de poids fort et AL dans l'octet de poids faible, nous pouvons économiser une charge supplémentaire (et donc un octet dans le code machine) en les chargeant ensemble.
la source
Fichier batch Windows, 2 caractères
S'appelle infiniment.
la source
%0
n’a pas de@
, donc ça produira constamment quelque chose comme...> %0
. Cela pourrait bien manger toute la RAM, car elle est récursive.Befunge 98-2
Sorties ",,,,,,,,,,,", "pour l'éternité.
la source
sh, 3 octets
sorties en
y
continula source
yes
soit un binaire externe, et ne fait pas partie de bash (à proprement parler).y=yes
et si votre système n'est pas ésotérique, vous pouvez en déduire qu'ilyes
est dans votre$PATH
(voir Utilitaires GNU Core ). Avec votre logique, il est possible d’assumer des constellations étranges pour chaque solution.bash
capacité: c’est une partie de base des shell utils du shell POSIX . (Par exemple, s'il vous plaît changer le titre pour sh: 3 caractères ;-)Haskell: 8 personnages
Vieux fil, mais amusant
à Haskell, il imprime
pour toujours puisqu'il est essentiellement en cours d'exécution
Il sait que
x
c'est une chaîne, donc le premier caractère l'est"
, alors il faut y échapper\"
, mais sachez qu'il\
faut échapper ainsi\\\x
, et ainsi de suite.la source
fix$show
cela aurait été plus esthétique :-)import Data.Function
, et parce qu'il renvoie la chaîne plutôt que de l’imprimer, je m'interroge sur l’équité du nombre de caractères. En outre, la chaîne est en fait "\" \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\ "" \\\\\\\\\\\\\\\\\ ... ".Fichier de commandes Windows, 8 caractères
la source
:a\r\ngoto a
parce que Windows utilise CRLF3a 61 0a 67 6f 74 6f 20
fonctionne sur mes fenêtres 8 ...: PBrainfuck, 4
Alternativement
la source
\x01
ni\xFF
caractères imprimables. Je suppose que ce n'était pas une exigence, cependant: - /Java, 54 caractères
Meilleure tentative en Java:
la source
for(;;)
modèle classique ? Qu'en est- ilwhile(true)
?static
bloc.Bash, 4 octets
Sorties en
./forever2.sh: line 1: $: command not found
continu.Parce que
$0
son arrière-plan est en arrière-plan, chaque parent meurt après la commande invalide$
, et donc la pile / mémoire n'est pas consommée, et cela devrait continuer indéfiniment.Étrangement, la sortie devient de plus en plus lente au fil du temps.
top
indique que l'utilisation du processeur du système est proche de 100%, mais qu'il existe des processus trop chargés en mémoire ou en processeur. On peut supposer que certaines ressources allouées dans le noyau deviennent de moins en moins efficaces.la source
$0
échoue.LOLCODE (36)
La pensée que je donnerais un coup de feu à LOLCODE, a une quantité étonnamment grande de fonctionnalités.
la source
HAI
etKTHXBYE
JavaScript: 14
la source
alert()
me donne cette erreurError: Not enough arguments [nsIDOMWindow.alert]
Machine de Turing - 6 personnages:
où
#
is est un symbole vide (sur la bande par défaut),s
décrit le seul état existant (début),1
imprime un chiffre,R
signifie un décalage vers la droite,s
à la fin, il reste dans le même état.la source
s#1Rs
(état actuel, symbole actuel, symbole à écrire, direction à déplacer, état suivant).Haskell, 10
Je pense que c'est le code le plus court
Show
structure de données infinie : capable.Pour les intéressés, il imprime:
la source
Marbelous 4
Marbelous surprend bien ici. Cela affichera une quantité infinie de signes dollar
$
, bien que la limite de pile soit atteinte assez rapidement.Comment ça fonctionne.
24 est un littéral de langue qui tombera du tableau et sera imprimé dans STDOUT en tant que caractère asci correspondant. MB est le nom implicitement donné à la carte principale, puisque la carte principale n'a aucune entrée, elle se déclenche à chaque tick. Et comme les cellules sont évaluées de gauche à droite, le littéral sera toujours imprimé avant le prochain appel récursif.
Donc, cela équivaut grossièrement à ce pseudocode:
Une solution sans récursion infinie 11
Celui-ci fonctionne en bouclant le littéral entre deux portails
@0
, chaque fois que le 24 frappe le bas,@0
il est transporté à la cellule sous le haut@0
. Si elle atterrit sur la/\
, qui est un opérateur clone, elle place une copie de la bille (littérale) à sa gauche (de retour sur le portail) et une autre à sa droite. Cette coopérative tombe ensuite du tableau (car il..
s'agit d'une cellule vide) et est imprimée sur STDOUT. En pseudocode, cela se traduirait par:Une solution plus courte sans récursion infinie 9
Celui-ci jette constamment la bille entre un cloneur et un déflecteur, en plaçant un exemplaire sur la cellule la plus à droite, pour le déposer au tableau. En pseudo-code, cela ressemblerait à quelque chose comme:
Remarque
Les
..
cellules sont nécessaires sur les deux derniers tableaux car les billes tomberaient du plateau (et seraient jetées) sinon. Pour plus de plaisir, vous remplacez la24
bille parFF
et la..
cellule vide par une??
qui transforme une bille en une bille comprise entre 0 et sa valeur actuelle avant de la déposer. Devinez à quoi cela ressemblerait sur STDOUT.la source
C, 23 caractères
Légèrement plus court que la meilleure réponse C / C ++ jusqu'à présent. Imprime les lignes vides à l'infini (mais si compilé sans optimisations, déborde de la pile).
la source
putc(0)
(ou 1, ou 2, ... ou 9). Cela fonctionnerait-il?putc
nécessite 2 paramètres.Python 3: 15, 17 ou 18 caractères
La réponse de mdeitrick est plus longue dans Python 3, qui remplace l'
print
instruction par un appel de fonction (15 caractères):Cela reste le plus court que j'ai trouvé dans Python 3. Cependant, il existe des manières plus intéressantes d'imprimer dans une boucle infinie qui ne sont plus que quelques caractères.
print()
renvoieNone
, qui! = 9, ce qui en fait une boucle infinie; the8
est un no-op qui remplacepass
(18 caractères):iter(print, 9)
définit une variable qui renvoie la sortie deprint()
jusqu'à ce qu'elle soit égale9
(ce qui n'arrive jamais).any
consomme l'entrée itérable à la recherche d'une valeur vraie, qui n'arrive jamais puisqueprint()
retourne toujoursNone
. (Vous pouvez également utiliserset
dans le même sens.)Ou, nous pouvons utiliser l’itérable en vérifiant s’il contient
8
(17 caractères):Ou décompressez-le à l'aide de l'opérateur splat :
La façon la plus bizarre que je pensais est d'utiliser destructuration Splat dans un appel de fonction,
function(*iterable)
. Il semble que Python essaie de consommer l'intégralité de l'itéré avant même de tenter l'appel de fonction, même si l'appel de fonction est faux. Cela signifie que nous n’avons même pas besoin d’une fonction réelle, car l’erreur de type ne sera émise que lorsque l’itérable sera épuisé (c’est-à-dire jamais):la source
*iter(print,1),
fonctionne et a seulement 15 caractères, mais consomme un peu de mémoire.piet - 3 codels
Affiche un nombre infini de 1
la source
x86. Exécutable, 5 octets
en hex:
en asm:
Explication:
inc ax
incrémente le registre AX de un.int 0x29
est la routine "fast put char" de MSDOS, qui affiche simplement la valeur en AL (partie basse de AX) et avance le curseur de un.jmp si
c’est un moyen bizarre de revenir en arrière, car le registre SI a la valeur 0x100 sur presque tous les systèmes d’exploitation de type DOS, qui est également le lieu de démarrage du programme .com;) Il est également possible de faire un saut bref, ce qui utilise 2 octets.Sources:
Valeurs de départ MSDOS
Wiki de taille
la source
Bitxtreme , 0,25 octet
Représentation binaire:
De la documentation:
Le compteur de programme et l'accumulateur sont initialisés à zéro; ensuite, le contenu de l'emplacement de mémoire 0 est soustrait de l'accumulateur. Cela arrive à 0, laissant l'accumulateur à zéro. Comme il n'y avait pas de retenue, le deuxième bit n'est pas ajouté au compteur de programme.
Le compteur de programme est ensuite incrémenté de 2 modulo 2, le renvoyant au début et provoquant une boucle infinie. A chaque étape, l'emplacement de mémoire spéciale 0 est modifié, ce
0
qui entraîne l'écriture de son contenu (a ) dans la sortie.On peut faire valoir que ce programme devrait être évalué à 1 octet, car l'interprète officiel en Python exige la mise à zéro. Cependant, je ne pense pas que le zéro-padding soit vraiment du code .
la source
Résumé: Ruby - 9, Golfscript - 6,> <> - 2, espaces blancs - 19,
Perl - 2Une langue que je connais et deux que je n’avais jamais utilisée auparavant: D
EDIT: Perl n’a pas fonctionné lorsque j’ai installé Perl pour l’essayer :(
Rubis, 9
Imprime simplement 1 sur des lignes séparées en continu.
En outre, un tas d'alternatives:
Solution à 10 caractères:
En fait, j’ai été surpris de pouvoir supprimer l’espace entre le premier
1
et le premierwhile
, mais apparemment cela fonctionne.Golfscript, 6
Mon premier programme Golfscript! : P
> <> ( Poisson ), 2
Espaces blancs , 19
Où
s
représente un espace,t
représente un onglet etl
un saut de ligne.la source
{1p}do
imprime1
et ferme uniquement , car do est une séquence exec-pop-test qui continue uniquement si elle est vérifiée. (Comme il n'y a pas d'entrée, la pile est initialement""
, ce qui, après l'exécution de1p
, est sauté et teste false.) Le simple ajout d'un dup marchera cependant, c'est{1.p}do
-à- dire (à 7 octets).C,
2524la source
s/while/main/
return main(puts("1"))
alors c'était un coup de queue.methodName(void)
accepte exactement zéro paramètre.> <> (Poisson) , 2
Une façon créative d'utiliser l'infini codebox de fish:
Comme le pointeur d’instruction revient au début de la ligne après avoir atteint la fin, ce code peut essentiellement être lu comme suit:
ce qui signifie 'lire la chaîne "o" puis la sortir ".
Vous pouvez tester le code ici
la source
perl, 10 caractères
Voici une autre solution Perl 10 caractères avec des compromis différents. Plus précisément, il n'est pas nécessaire que l'indicateur -n ou l'entrée utilisateur soit démarré. Cependant, il continue à manger de la mémoire à l'infini.
enregistrer dans un fichier, exécutez ce fichier et vous obtenez par exemple:
la source
say
(qui imprime toujours une nouvelle ligne même si elle ne peut pas trouver un argument de n'importe où) plutôt quewarn
? (Cela nécessite l'utilisation d'une variante moderne de Perl-M5.010
, mais cela ne compte pas dans le nombre de vos personnages.)dc , 7
affiche 'pdx \ n' infiniment de fois.
la source
VBA: 12
Le son est sorti, non?
Mettez cela dans le fichier MS Office favori de votre collègue "favori" compatible macro pour un peu de "plaisir"!
Des points bonus s'ils utilisent des écouteurs.
la source
Graine , 4 octets
Essayez-le en ligne! Sorties
11
infinimentGénère le programme Befunge-98 suivant:
Essayez-le en ligne!
La partie pertinente est juste ceci:
b
pousse11
sur la pile et l’.
imprime.1
et49
sont également poussés à la pile, mais jamais réellement imprimés.Animation du code en cours d'exécution:
la source
C,
262524 (pas de récursivité)Imprime des
'\n'
caractères sans fin . Il s'agit d'un octet plus long que la réponse C la plus courte, mais ne repose pas sur l'optimisation des appels de fin de ligne pour éviter le débordement de la pile.la source
for(;;)
à la place dewhile(!
!
car il continue à produire\n
R, 13 caractères
la source
repeat cat(1)
devrait fonctionnerPowerShell 2.0:
17118Ma solution initiale:
Merci à res:
Je pense que Danko Durbić a le gagnant, ici. Je ne sais même pas pourquoi cela devrait fonctionner, mais ça marche et je ne peux penser à rien de plus court jusqu'à présent.
la source
while(1){1}
.while($true){1}
mais votre solution gagne définitivement - je l'avais oublié dans PowerShell$true -eq 1
. Postez cela comme une réponse, et je vous donnerai un vote.for(){1}
.