var QUESTION_ID=93441,OVERRIDE_USER=41723;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:
Sesos ,
11 33 octetsEssayez-le en ligne! Cochez Debug pour voir le code SBIN généré.
Assemblage Sesos
Le fichier binaire ci-dessus a été généré en assemblant le code SASM suivant.
la source
Haskell, 19 octets
Produit la liste infinie
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell permet des listes infinies de manière native. Imprimer une telle liste imprimera ses éléments un à la fois pour toujours.
la source
[n,1-n]
![1-n,n]
produirait une meilleure sortie.concatMap (\n -> [1-n, n]) [1..]
, non? Agréable!Brainfuck, 6 octets
Cela utilise le retour à la ligne et imprime toutes les valeurs possibles. Dans Brainfuck, la représentation native sous forme d’ octets .
Essayez-le en ligne!
la source
int
n'a pas soudainement plus ou moins de bits simplement parce que vous avez ajouté ou supprimé de la RAM.Cubix ,
1412 octetsTestez-le en ligne! Vous pouvez maintenant régler la vitesse si vous voulez qu'elle soit plus rapide ou plus lente.
Comment ça fonctionne
La première chose que fait l’interprète consiste à supprimer tous les espaces et à compléter le code avec no-ops
.
jusqu’à ce qu’il soit parfaitement adapté à un cube. Cela signifie que le code ci-dessus peut également être écrit comme ceci:Maintenant, le code est exécuté. L’IP (pointeur d’instruction) commence dans le coin supérieur gauche de la face gauche extrême, en direction de l’est. Voici les chemins qu'il faut suivre tout au long de l'exécution du programme:
L'IP commence sur la piste rouge à l'extrême gauche de l'image. Il s'exécute ensuite
OSo;
et effectue les tâches suivantes:O
Imprimer le TOS (sommet de la pile) sous forme d’entier. Au début du programme, la pile contient des zéros infinis, ainsi ceci est imprimé0
.S
Push32
, le code de caractère pour le caractère d'espace.o
Imprimer le TOS en tant que personnage. Cela imprime un espace.;
Pop le TOS. Supprime le32
de la pile.Maintenant, l'IP frappe le
?
, ce qui le dirige à gauche, à droite ou directement selon le signe du TOS. En ce moment, le TOS est0
, donc ça va tout droit. C'est le chemin bleu;.
ne fait rien, et l'IP frappe la flèche>
, ce qui le redirige vers l'est le long du chemin rouge.~
prend le bitwise PAS du TOS, en le changeant en-1
.Ici, l’IP atteint le bord droit du filet, qui le retourne à gauche; ceci affiche à nouveau le TOS (cette fois
-1
) et un espace.Maintenant, l'IP frappe le
?
nouveau. Cette fois, le TOS est-1
; comme c'est négatif, l'IP tourne à gauche, en prenant le chemin vert. Le miroir\
renvoie l'adresse IP vers le(
, ce qui décrémente le TOS et le change en-2
. Il revient et frappe la flèche;~
prend bitwise pas encore, en tournant-2
à1
.Là encore, le TOS est sorti et un espace est imprimé. Cette fois, lorsque l'IP frappe le
?
, le TOS est1
; puisque c'est positif, l'IP tourne à droite, prenant le chemin jaune. Le premier opérateur qu’il rencontre estS
en poussant un extra32
; le fait;
apparaître avant qu'il puisse causer des ennuis.Maintenant, l’IP revient à la flèche et effectue sa routine,
~
changeant le TOS-2
et en l'O
imprimant. Comme le TOS est à nouveau négatif, l’IP reprend le chemin vert. Et ça continue comme ça pour toujours *: rouge, vert, rouge, jaune, rouge, vert, rouge, jaune ..., dans le cycle suivant:TL; DR
Ce programme passe à plusieurs reprises par ces 3 étapes simples:
Version non séparée, 6 octets
La suppression de la séparation simplifie tellement le programme qu'il peut tenir sur un cube d'unité:
* Remarque : aucun programme n'est vraiment infini, car ils ne comptent que jusqu'à 2 52 (où JavaScript commence à perdre de la précision en nombre entier).
la source
MATL , 8 octets
Ceci utilise le type de données par défaut de MATL
double
, c’est-à-dire qu’il fonctionne jusqu’à2^53
valeur absolue. La sortie estEssayez-le en ligne!
Explication
la source
@_@XD
plutôt que d'@_D@D
inclure le 0 dans la première manche.XD
+1 pour smileyLangage de programmation Shakespeare , 227 octets
Évidemment, cette réponse est loin d’être gagnante, mais j’ai bien aimé qu’il s’agisse d’un cas d’utilisation à laquelle le SPL est relativement bien adapté.
A expliqué:
Comme vous pouvez le constater lorsque je compare ce code à ma réponse au défi connexe consistant à compter pour toujours (imprimer tous les nombres naturels), la longueur du code SPL augmente plutôt mal lorsque la taille du problème augmente ...
la source
Let us return to scene II.
devrait êtrescene I
.$puck
à 0 et le décompte ne fonctionnerait plus. J'ai ajouté les éléments manquantsI
dans le code et corrigé la longueur en octets (ce qui était un peu décalé quand même oups)Python 2, 27 octets
Impressions
-1 0 -2 1 -3 2 -4 3 ...
la source
05AB1E ,
96 octets3 octets sauvés grâce à Adnan
Essayez-le en ligne!
Impressions
0, -1, 1, -2, 2 ...
séparées par des nouvelles lignes.la source
[N,N±,
.±
et il s'est avéré 3 octets plus longs que le vôtre.D,
peut être remplacé par=
pour enregistrer un octet.GNU sed, 189 + 2 (drapeaux rn) = 191 octets
C'est probablement la solution la plus longue, car sed n'a pas de type entier ni d'opération arithmétique. En tant que tel, je devais émuler un opérateur d'incrément de taille arbitraire en utilisant uniquement des expressions régulières.
Courir:
Sortie:
la source
Brainfuck, 127 octets
Essayez-le en ligne!
Étant donné une bande infinie serait théoriquement courir pour toujours.
Non compressé
la source
ShadyAsFuck , 3 octets
Explication:
Cela utilise le retour à la ligne et imprime toutes les valeurs possibles. En SAF, la représentation entière native est exprimée en octets .
la source
R,
2524 octetsGolfé un octet grâce à @JDL.
Essayez-le en ligne!
Exemple de sortie:
la source
while(1)
parrepeat
pour enregistrer un caractère.Lot, 56 octets
Sortie:
etc. Fonctionne jusqu'à 2147483647; 58 octets si vous voulez (-) 2147483648 dans la sortie:
44 octets si tous les entiers positifs pris en charge sont affichés, puis tous les entiers négatifs pris en charge, puis se répétant indéfiniment, est acceptable:
la source
Java 7,
151134122118 octets12 octets enregistrés grâce à @flawr (et @xnor indirectement)
Après le changement de règle .. (
595663 octets)Depuis Java
2147483647 + 1 = -2147483648
, nous ne pouvons pas simplement fairei++
et continuer à l'infini, car le défi consistait à imprimer tous les chiffres une fois. Avec le code ci - dessus avec une plage ajoutée, il sera au lieu d' imprimer tous les entiers de-2147483648
la2147483647
fois par, dans l'ordre suivant:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Merci à @ OlivierGrégoire pour avoir souligné le comportement de Java concernantMIN_VALUE-1
/MAX_VALUE+1
. Essayez ici.Ungolfed & code de test:
Essayez-le ici - entraînant une erreur d'exécution
Sortie:
la source
int
programme -version, à temps infini, affichera chaque entier pendant un temps infini.MAX_VALUE
, vous pouvez consulter ma réponse (probablement toujours à la dernière page).DC (version GNU ou OpenBSD) - 16 octets
Cette version n’est pas plus courte que la version ci-dessous mais devrait pouvoir fonctionner sans que la pile n’explose sur votre PC. Néanmoins, un nombre infini de grands nombres occupera une quantité infinie de mémoire ... un peu ...
En raison de la
r
commande, il nécessite GNU-DC ou OpenBSD-DC .Tester:
DC - 16 octets
Un peu méchant maintenant. ;-)
Cette version abuse de la longueur de la pile en tant que compteur tout en laissant la pile grandir.
Tester:
DC - 17 octets
Sans astuces sales.
Tester:
la source
[-]P
, fais45P
. "GNU-Dc ou OpenBSD-Dc" - Existe-t-il d'autres versions couramment trouvées dans la nature?dc
ne comptent que quelques opérateurs. Je les ai développés indépendamment de ceux-ci.r
comme "échange". Je suis parfois dérouté lorsque je regarde les versions différentes. Probablement personne ne veut plus coder en ancien Dc (etr
la pile serait vide). Peut-être que je changerais "Dc" en "AT & T dc"? ... et merci pour l'45P
allusion ...C # 74 octets
Sortie:
Essayez le:
dotnetfiddle.net (limité à 1000)
la source
public
modificateurs et économiser 14 octets. Les valeurs par défaut feront également bien l'affaire.Ruby,
26221916 octetsImprime les nombres séparés par des nouvelles lignes. -3 octets de @manatwork. -3 octets de @ m-chrzan.
la source
p
le ferez aussi.0.step{|n|p n,~n}
pour 17 octets.JavaScript,
2926 octetsVersion non infinie, 26 octets
3 octets sauvés grâce à ETHproductions
affichera tous les entiers compris entre -9007199254740991 et 9007199254740992.
Version infinie (ES6),
114112 octets2 octets sauvés grâce à ETHproductions
affichera tous les nombres entiers, compte tenu du temps infini et de la mémoire.
la source
n[a,b,c]
renvoien[c]
, vous pouvez donc supprimer les parenthèses dansn[(a||n.unshift(1),0)]
.1
ou l'autre boucle;for(;;)
fonctionne pour toujours. Vous pouvez enregistrer deux autres octets avecfor(n=1;;)alert([1-n,n++])
. De plus, cela n'utilise plus aucune fonctionnalité de l'ES6 ;-)> <> ,
1915 octetsCela imprime ce qui suit:
... etc. Le séparateur est une nouvelle ligne.
Re-écrit après avoir lu la réponse de @ xnor pour utiliser une version de cet algorithme. À partir de
n=1
, le programme est imprimé1-n
etn
suivi d'une nouvelle ligne avant d'être incrémentén
. Après avoir dépassé la valeur maximale, le programme se termine par une erreur desomething smells fishy...
. Le moment exact où cela se produira dépend de la mise en œuvre de l'interprète.La version précédente:
À partir de 0, le programme se poursuit indéfiniment. Sur chaque boucle, la valeur actuelle est imprimée avec une nouvelle ligne. Il est ensuite annulé et incrémenté s'il est positif.
la source
Utilitaires Bash + GNU, 26
la source
$[++i]
fait en bash.seq NaN
pour courir et après 999999, l’impression est faite en notation scientifique avec une précision de 5 chiffres. En ce qui concerne le défi, cette valeur est alors le plus grand entier que vous imprimez, ce qui est correct car le reste ne répète pas un nombre précédent. Vous remarquerez également que vous pouvez exécuter seq avecinf
, insensible à la casse, tout comme pournan
. +1bc,
1716 octetsEdit: 1 octet en moins grâce à Digital Trauma .
Ajoutant à la diversité des langages utilisés jusqu’à présent, je présente une solution bc qui fonctionne avec des entiers de taille arbitraire. . Une nouvelle ligne est requise après le code et est comptée dans le nombre total d'octets.
Dans la première itération
i
n'est pas définie, mais l'impression donne 0 à ma grande surprise.la source
for(;;){i;-++i}
bc
avait aussi.for(;;){i++;-i}
(même longueur).Labyrinthe , 9 octets
Essayez-le en ligne!
Cela fonctionne aussi et est essentiellement le même:
Explication
Le flux de contrôle dans ce code est plutôt amusant. N'oubliez pas que le pointeur d'instruction (IP) dans un programme Labyrinth suit le chemin des caractères non-espaces et examine le haut de la pile à n'importe quelle jonction pour décider du chemin à suivre:
Lorsque l'IP frappe une impasse, il tourne (en exécutant la commande à la fin seulement une fois). Et l’IP commence dans le coin supérieur gauche en direction est. Notez également que la pile est implicitement remplie avec une quantité infinie de zéros pour commencer.
Le programme commence par ce petit bit:
Maintenant, l'IP est à la jonction appropriée et va tout droit sur ce
(
qui décrémente le haut de la pile-1
. L'IP se trouve dans une impasse et se retourne.:
duplique le haut de la pile une fois de plus. Maintenant, le sommet de la pile est négatif et l'adresse IP tourne à gauche (ouest). Nous exécutons maintenant une autre itération de la boucle principale:Cette fois, le sommet de la pile est positif, donc IP tourne à droite (ouest) et exécute immédiatement une autre itération de la boucle principale, qui affiche le
1
. Puis, une fois que cela est annulé, nous frappons le:
avec-1
sur la pile.Cette fois, l'IP tourne à gauche (est). Il
"
s’agit simplement d’un non-fonctionnement et l’adresse IP tourne dans l’impasse.:
fait une autre copie et cette fois l'IP tourne au sud.(
décrémente la valeur à-2
, l’IP se retourne à nouveau. Avec le haut de la pile toujours négatif, l’IP passe maintenant à l’ouest:
et effectue la prochaine itération de la boucle principale.De cette manière, l’IP va effectuer une itération entre une itération de boucle étroite, l’impression d’un nombre positif, et une itération qui passe par les deux impasses pour décrémenter la valeur avant l’impression d’un nombre négatif.
Vous vous demandez peut-être pourquoi il y a la
"
deuxième ligne si cela ne fait rien: sans cela, lorsque l'IP atteint:
une valeur négative, il ne peut pas tourner à gauche (est), mais plutôt à droite (ouest). (En règle générale, si la direction habituelle à une jonction n'est pas disponible, l'IP prendra la direction opposée). Cela signifie que la propriété intellectuelle n'atteindrait jamais la limite(
inférieure et que nous ne pouvions pas distinguer les itérations positives des négatives.la source
JavaScript (ES5),
32313029 octetsImpressions
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
Sauvé 1 octet grâce à Patrick Roberts! 2 octets sauvés grâce à Conor O'Brien!
la source
[i++,-i].map(alert)
au lieu dealert(i++),alert(-i)
?for(;;)
est un octet plus court quewhile(1)
map
est ES6i=0;
bit dans la boucle for pour enregistrer un octet.Java,
6554 octetsCode de test non-golfé
la source
biggest magnitude of the standard integer type of your language
int
est le type entier standard de Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
C #, 83 octets
Ungolfed:
Les sorties:
la source
void f(){code_present_in_main}
suffit pour le nombre d'octets. En ce qui concerne le code lui-même, vous pouvez en jouer un peu plus comme ceci:void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
( 61 octets )decimal n=0
etn++;
à l'intérieur de la boucle bien que:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 octetsNouvelle réponse:
Clair:
Ancienne réponse (86 octets):
Ungolfed:
la source
Enumerable.Range
et un avantint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 octets ) .J, 25 octets
Fonctionne sur le site en ligne , mais je ne peux pas encore le vérifier sur ordinateur. Imprime des nombres comme:
etc.
la source
Powershell,
20 ans1918 octetsAmélioré en volant sans vergogne de la réponse de TimmyD
Sortie:
Ancienne version:
Vous ne savez pas pourquoi tbh, mais - la variable non déclarée (ou - $ null) est évaluée à 0, ce qui nous a sauvé 2 octets dans cette version ...
la source
Pyke ,
72 octetsEssayez-le ici!
7 octets
Essayez-le ici!
Si imprimer + -0 est correct,
oD_r
la source
Brachylog , 2 octets
Essayez-le en ligne!
Étant donné que le programme ne reçoit aucune entrée, la variable d'entrée du prédicat principal n'est pas contrainte. Au début, on suppose que c'est 0, mais quand l'exécution est réussie
⊥
, elle retourne au seul point d'échec possible: le choix de la valeur pour la variable d'entrée. Alors, il essaie 1, et -1, et tous les autres entiers, en les imprimant séparés pour⊥
toujours par des nouvelles lignes car force toujours le retour en arrière, et l’effet deẉ
est immédiatement exécuté.la source