133
\$\begingroup\$

Write the shortest code you can that produces an infinite output.

That's all. You code will only be disqualified if it stops producing output at some point. As always in code golf, the shortest code wins.

Here's a list of answers that I think are really clever, so they can get credit:

Leaderboard

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>

\$\endgroup\$
16
  • 128
    \$\begingroup\$ All answers disqualified because at some point the Earth will be swallowed by the sun, and at some point the universe will die :P \$\endgroup\$ – Doorknob Nov 9 '13 at 20:00
  • 19
    \$\begingroup\$ Does "infinite until your computer crashes" count? <_< \$\endgroup\$ – Izkata Nov 10 '13 at 1:39
  • 5
    \$\begingroup\$ If I write mine in Piet, can I count the pixels of the text the other programs used? I believe the smallest possible repeating Piet program would be 6 pixels. That beats Befunge if "off" pixels still count. \$\endgroup\$ – DampeS8N Nov 12 '13 at 20:27
  • 9
    \$\begingroup\$ @Izkata So any answer that crashes your computer is also allowed :D \$\endgroup\$ – ɐɔıʇǝɥʇuʎs Jul 11 '14 at 20:11
  • 8
    \$\begingroup\$ @Doorknob So really, the challenge is to produce infinite output in a finite amount of time. Sounds easy enough. \$\endgroup\$ – Sanchises Apr 10 '15 at 21:15

300 Answers 300

1
6
7
8 9 10
1
\$\begingroup\$

Pyth, 3 2 bytes

#d

Try it online!

Prints the string " " (single space) until a print instruction produces an error (which, I mean, I guess could happen).

\$\endgroup\$
1
\$\begingroup\$

PHP, 16 bytes 8 bytes

My first attempt and this Code Golf :)

while(a)

I'm sure I could make it better without that echo? hmm...

\$\endgroup\$
4
  • 1
    \$\begingroup\$ Welcome to PPCG! Hope you stick around! \$\endgroup\$ – Rɪᴋᴇʀ Oct 12 '17 at 14:58
  • \$\begingroup\$ Thanks! How was my attempt? Not as good as the others how do thy do it? :L \$\endgroup\$ – Shaun Moore Oct 12 '17 at 16:27
  • \$\begingroup\$ It was pretty good! Best I could have gotten, at least. Most of the other answers are in golfing languages, which are much shorter, but don't let that discourage you! \$\endgroup\$ – Rɪᴋᴇʀ Oct 13 '17 at 15:30
  • 2
    \$\begingroup\$ First, you can leave out the curcly braces, since there is only one statement in the loop anyway: while(1)echo 0;. To golf it further, you can use print instead of echo. Print allways returns 1, so you can then use it inside your while, golfing it to while(print 0);. You can get it even smaller if you're going for infinite error output: while(a);. \$\endgroup\$ – chocochaos Feb 13 '18 at 9:04
1
\$\begingroup\$

33, 5 bytes

1a[o]

Explanation:

1a    (Set the accumulator to 1, to allow the loop to continue to run)
  [o] (Print the accumulator, 1, forever)
\$\endgroup\$
1
\$\begingroup\$

bitch, 3 bytes

>/<

Try it online!


Explanation

>      Begin loop
 /     Print accumulator value (intialised to 0)
  <    Loop back to beginning of loop
\$\endgroup\$
1
\$\begingroup\$

TSQL, 16 17 bytes

l:PRINT'1'GOTO l

WHILE 1=1PRINT'1'

\$\endgroup\$
1
\$\begingroup\$

MarioLANG, 7 bytes

>:<
===

Mario will walk back and forth, printing as he does.

Try it online!

\$\endgroup\$
1
\$\begingroup\$

Intcode, 8 bytes

4,0,5,0,1

Outputs "4" an infinite number of times.

\$\endgroup\$
1
\$\begingroup\$

Spice, 26 bytes

Spice module that recursively calls itself. Quite quickly hits a stack overflow.

Given the code is saved to a module named 'x':

;return@OUT a;LOD .\x a a;

Un-golfed explanation

;a;return@    - define variables: "a" and the required "return"
OUT a;   - output a, implicitly "[0]"
LOD .\x a a;  - call this module, passing a, storing result in a
\$\endgroup\$
1
\$\begingroup\$

Roj, 19 bytes

while(1)do out""end

This produces output because of the [out]: buffer.

\$\endgroup\$
1
\$\begingroup\$

T-SQL, 15 bytes

a:PRINT 0GOTO a

6 years and 10 pages of answers, and no SQL versions yet.

Notes:

  • PRINT is 1 byte less than a SELECT.
  • A label with a goto is 1 byte shorter than the shortest WHILE statement: WHILE 1=1PRINT 1 (you can't just do WHILE 1 in SQL)
  • Depending on the version of SQL Management Studio, the "messages" pane (which displays the result of PRINT statements), might not immediately refresh; this is a client-side UI issue only.
\$\endgroup\$
2
  • \$\begingroup\$ Seriously? 0goto? yuck. \$\endgroup\$ – Sapphire_Brick Jun 17 '20 at 0:08
  • 1
    \$\begingroup\$ @Sapphire_Brick You take the bytes where you can get them :) \$\endgroup\$ – BradC Jun 17 '20 at 13:29
1
\$\begingroup\$

Go, 59 characters

package main
import "fmt"
func main(){for{fmt.Print(0)}}
\$\endgroup\$
1
\$\begingroup\$

International Phonetic Esoteric Language, 6 bytes

10ɑeoɒ

Will print 0 with newlines forever.

Explanation:

10ɑeoɒ
10     (push the bounds for the loop: from 0 to 1)
  ɑ    (pop the bounds and start the loop)
   e   (push the current index)
    o  (print)
     ɒ (check if index < start. 0 < 1, so loop)
\$\endgroup\$
1
\$\begingroup\$

Ruby, 11 9 characters

loop{p:p}

Old answer:

p 0 while 1
\$\endgroup\$
1
\$\begingroup\$

ARM Thumb, Linux syscalls only, 12 bytes

Raw machine code:

2704 2001 4669 2201 df00 e7f9

Assembly:

        .text
        .globl _start
        .thumb
        .thumb_func
_start:
        movs    r7, #4    @ write syscall
        movs    r0, #1    @ STDOUT_FILENO
        mov     r1, sp    @ sp is a valid pointer. May not be legible, but...
        movs    r2, #1    @ one byte is fine
        svc     #0        @ syscall: write(STDOUT_FILENO, sp, 1)
        b       _start    @ loop forever

ARM Thumb, with libc, 6 bytes

Raw machine code (f7ff fffe is an unlinked libc call):

f7ff fffe e7fc

Assembly:

        .text
        .globl main
        .thumb
        .thumb_func
@ Note that putchar returns the char it put, so we do this:
@ for (;;) putchar(argc);
main:
        bl      putchar @ putchar(argc)
        b       main    @ Loop forever

Fun fact: These programs do the exact same thing, printing argc % 256 in binary infinitely, since sp[0] at _start is also argc.

\$\endgroup\$
1
\$\begingroup\$

Vyxal, 1 byte

Don't try it online

Polyglots with 05AB1E.

Vyxal, 2 bytes

{፣

A bit more of a creative way to do the job.

\$\endgroup\$
1
\$\begingroup\$

GFortran, 21 19 bytes

Endless newlines. Try it Online!

1 print*;goto 1
end

Alternate solution (also 19B), hopefully less annoying for @Sapphire_Brick!

do;print*;enddo
end
\$\endgroup\$
1
  • 1
    \$\begingroup\$ This is why I hate Fortran. No labels, just numbers. \$\endgroup\$ – Sapphire_Brick Dec 25 '20 at 20:29
1
\$\begingroup\$

A0A0, 43 bytes

A0A0
A0C3G1G1A0
A0V0O0S1A0
A0A1G-3G-3A0
G-3

Prints 0, 1, 2, up to infinity forever. This wasn't required for the challenge, but the standard loop needs at least three instructions to work and doing this fits in three instructions (the three instructions are also as small as possible). This is a bit more interesting than printing the same number every time. (There are other patterns that would have worked in the same amount of bytes: 1, 2, 4, 8, ...; 0, -1, -2, -3, ...; 1, 3, 5, 7, ...; etc.)

V0O0S1
V0     ; operand, defaults to zero
  O0   ; outputs operand
    S1 ; increments operand

All other instructions are just there to form an infinite loop.

\$\endgroup\$
0
\$\begingroup\$

q/KDB, 13 chars

while[1;0N!1]

Outputs

1 

forever.

For more information on q/KDB :

Another Solution:

{0N!1}/[0<;1]
\$\endgroup\$
1
  • 1
    \$\begingroup\$ {1}{0N!1}/1 for 11 \$\endgroup\$ – tmartin Jan 30 '14 at 20:54
0
\$\begingroup\$

Quomplex, 6 4

[*1]

Infinitely outputs 1.

\$\endgroup\$
2
  • 2
    \$\begingroup\$ Is there an interpreter or compiler for this language? \$\endgroup\$ – Sylwester Jan 29 '14 at 23:09
  • 1
    \$\begingroup\$ The link in the title gives a 404 error. \$\endgroup\$ – Cyoce Jan 31 '16 at 19:59
0
\$\begingroup\$

Bash - 13 bytes

cat /dev/zero

to see run cat -v /dev/zero

Documentation here: /dev/zero and here Purpose of /dev/zero?

\$\endgroup\$
1
  • 1
    \$\begingroup\$ Why not w&sh $0? \$\endgroup\$ – Sapphire_Brick Jun 17 '20 at 17:07
0
\$\begingroup\$

Windows PowerShell (12)

for(;;){'-'}
\$\endgroup\$
0
\$\begingroup\$

Scala REPL (19 characters)

while(true)print(1)
\$\endgroup\$
1
  • 1
    \$\begingroup\$ You could save one character by substituting true for 1>0. \$\endgroup\$ – Sapphire_Brick Jun 17 '20 at 14:17
0
\$\begingroup\$

PureBasic - 17 chars

r:
Debug 0
Goto r

A slight variation on the classic BASIC infinite loop :-)

\$\endgroup\$
0
\$\begingroup\$

JavaScript, 23 characters

while(1)console.log(1);
\$\endgroup\$
3
  • \$\begingroup\$ while(1)alert(1); \$\endgroup\$ – Timtech Feb 4 '14 at 16:41
  • 1
    \$\begingroup\$ @Timtech for(;;)alert(1) is even shorter \$\endgroup\$ – user2428118 Nov 20 '14 at 22:14
  • \$\begingroup\$ @user2428118 Yep, I've known that since then though. I must learn more all the time :) \$\endgroup\$ – Timtech Nov 21 '14 at 12:05
0
\$\begingroup\$

Processing, 26

for(int i=0;i<1;)print(1);

Prints 1 continuously.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ You might also be able to do for(;;) for an infinite loop and then you can add the print(1); \$\endgroup\$ – user41805 Dec 2 '16 at 18:20
0
\$\begingroup\$

Groovy, 14

for(;;)print 1

from the command line: groovy -e "for(;;)print 1"

\$\endgroup\$
0
\$\begingroup\$

JAVA - 72 chars:

counting everything:

class T{public static void main(String[]a){for(;;)System.out.print(0);}}

Obviously, Java was not built for code golfing.

\$\endgroup\$
11
  • \$\begingroup\$ Assuming you can import anything, import static java.lang.System.out and you can reduce your "actual code" by 7 characters. \$\endgroup\$ – Colton Nov 29 '13 at 19:20
  • \$\begingroup\$ Also your "for some reason" comment is because print doesn't flush() \$\endgroup\$ – Colton Nov 29 '13 at 19:20
  • \$\begingroup\$ @Sparkis Oh, thank you. Does that remove the characters from the output stream onto the screen? \$\endgroup\$ – user10766 Nov 29 '13 at 21:44
  • 2
    \$\begingroup\$ For java, I count everything, including imports, class declaration, and method declaration. \$\endgroup\$ – tbodt Dec 13 '13 at 0:09
  • 2
    \$\begingroup\$ @user2509848 When the buffer gets full it will start to print eventually. It didn't take many seconds for me. \$\endgroup\$ – Sylwester Jan 29 '14 at 22:28
0
\$\begingroup\$

Java, 74 characters

Since Java 7 and later versions seeks for main function at first instead of static block; I think this would be the best option to print infinite loops with small code. For your reference: static block won't execute in Java 7.

class I{public static void main(String[]a){for(;;)System.out.println(1);}}
\$\endgroup\$
3
  • 2
    \$\begingroup\$ For Java 7 and later, this is indeed what you'd need to do. Therefore, I recommend that you add #Java 7+, characterCountOfYourProgram to the beginning of your post, then golf the rest some more. Also, instead of using `s around your code, just add four spaces before the line. Here are some golfing tricks: change the class's name to 1 char, perhaps I. Change the String args[] to String[]a. Change the System.out.println to System.out.print. \$\endgroup\$ – Justin Jun 21 '14 at 19:21
  • \$\begingroup\$ Couldn't you also remove public, since methods are public by default? \$\endgroup\$ – mbomb007 Mar 5 '15 at 1:56
  • \$\begingroup\$ @mbomb007 public is needed to make the code executable. \$\endgroup\$ – dorukayhan May 28 '16 at 15:50
0
\$\begingroup\$

C++ 29

main(){while(1)std::cout<<1;}
\$\endgroup\$
1
  • 2
    \$\begingroup\$ The shortest way to do an infinite loop in C/C++ is for(;;). If the condition is missing in a for loop, it becomes infinite. \$\endgroup\$ – tbodt Jul 3 '14 at 23:27
0
\$\begingroup\$

SCALA 18

while(1>0)print(1)
\$\endgroup\$
1
6
7
8 9 10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.