86
14
The Challenge
Write a complete program that writes twice as many bytes to standard output as the length of the program.
Rules
The program must write ASCII characters to the standard output.
The contents of the output doesn't matter.
The output, measured in bytes, must be exactly twice the length of the program, also measured in bytes, unless you fulfill the bonus.
Any trailing newline is included in the output's byte count.
Bonus
Your program can optionally take a number, n
, as input. If so, the output must be exactly n * program length
bytes. You can assume that n will always be a positive integer. If no input is provided, n
must default to 2.
If you do this, you can subtract 25 bytes from your score.
Shortest program wins.
Restrictions
No standard loopholes.
The program must be at least 1 byte long.
No adding unnecessary whitespace to the source code to change its length. Similarly, comments don't count.
Unless you fulfill the bonus, the program must accept no input. If you do fulfill the bonus, the integer must be the only input.
Lowest score (program length in bytes - bonus) wins.
The shortest answer for each language wins for that language.
Leaderboards
Here is a Stack Snippet to generate both a regular leaderboard and an overview of winners by language.
To make sure that your answer shows up, please start your answer with a headline, using the following Markdown template:
# Language Name, N bytes
where N
is the size of your submission. If you improve your score, you can keep old scores in the headline, by striking them through. For instance:
# Ruby, <s>104</s> <s>101</s> 96 bytes
If there you want to include multiple numbers in your header (e.g. because your score is the sum of two files or you want to list interpreter flag penalties separately), make sure that the actual score is the last number in the header:
# Perl, 43 + 2 (-p flag) = 45 bytes
You can also make the language name a link which will then show up in the leaderboard snippet:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=59436,OVERRIDE_USER=41505;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>
1For the bonus, does the output have to be exactly
n * program length
bytes, or is that a minimum? – xnor – 9 years ago2It has to be exact – Daniel M. – 9 years ago
3Looks like the code snippet has to be modified to handle negative scores. – El'endia Starman – 9 years ago
40A bonus of -25 is basically mandatory for some languages, since it lets them achieve a negative score. In the future, I'd suggest using a percent bonus, or just making the bonus the question if you really want answers to go for it. Or, just don't have a bonus. – xnor – 9 years ago
4For "no input is provided", do we assume the empty string is passed in? I can't see how one would deal with the user never typing in an input and the program just waiting. – xnor – 9 years ago
1
@El'endiaStarman I'm not really a javascript expert, so I used the leaderboard snippet. I think I found the regex that controls which number gets used, so I changed that to accept a dash. How long does it take for the snippets to update?
– Daniel M. – 9 years ago@xnor If the program waits for user input, then it is an empty string. For "no input", I was thinking along the lines of command-line args. – Daniel M. – 9 years ago
@DanielM. So you mean that if we accept input, we have to account for empty input and in that case use 2? – Alex A. – 9 years ago
@AlexA. That is correct. On another note, I found the regex that it actually uses, and when that was changed, it updated immediately. – Daniel M. – 9 years ago
@DanielM.: Excellent! :) – El'endia Starman – 9 years ago
Since there are so many answers, I'm just changing it to "shortest answer in each language" instead of "shortest answer overall". – Daniel M. – 9 years ago
ASCII or printable ASCII? (Dunno if that would change anything, but worth clarifying.) – jpmc26 – 9 years ago
Any 8-byte ASCII (for 2 reasons).
I just chose ASCII as it is a standard format, and it's clearer to say to "write ASCII" than "write bytes". Additionally, it avoids the 16/32 bit nonsense of unicode (seriously, 8 extra bits?).
There are already submissions with unprintable characters that I don't want to invalidate.
Should the "Done\n" in this answer count as output?
– lirtosiast – 9 years agoCan someone fix the snippet? Hyperlinked language names are sorted incorrectly. – mbomb007 – 9 years ago
at least 1 byte
Why. – ev3commander – 9 years ago@BlockCoder1392 in some languages, an empty program is a Quine, but that's no fun – Daniel M. – 9 years ago
No, I was like "WHY MUST YOU DO THIS" because anything*empty=empty, so you could get a really easy -25 polyglot. – ev3commander – 9 years ago
Does CRLF count as one character? – user8397947 – 8 years ago
@dorukayhan I'd count bytes for this – Daniel M. – 8 years ago
Would "\n" count as two characters? – Stan Strum – 7 years ago
Why [tag:quine]? – Qwertiy – 7 years ago
1It seems there's some disagreement about what a "complete program" is here. Some answers are just functions; others are more what I would think of as complete programs that take input from stdin or the command line. Can you clarify? – dfeuer – 6 years ago