630
\$\begingroup\$

Note to challenge writers as per meta consensus: This question was well-received when it was posted, but challenges like this, asking answerers to Do X without using Y are likely to be poorly received. Try using the sandbox to get feedback on if you want to post a similar challenge.


It's 2017 2018 2019 2020 2021 2022 2023 2024 already, folks, go home.

Woo, 10 years of this challenge!

So, now that it's 2014, it's time for a code question involving the number 2014.

Your task is to make a program that prints the number 2014, without using any of the characters 0123456789 in your code, and independently of any external variables such as the date or time or a random seed.

The shortest code (counting in bytes) to do so in any language in which numbers are valid tokens wins.


Leaderboard:

var QUESTION_ID=17005,OVERRIDE_USER=7110;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
  • 26
    \$\begingroup\$ Even though numbers are ignored in brainfuck, I thought I'd post one anyway. 32 Chars: ++++++[>++++++++<-]>++.--.+.+++. \$\endgroup\$ Commented Apr 1, 2015 at 21:37
  • 8
    \$\begingroup\$ Brainfuck isn't a valid language for this challenge. \$\endgroup\$
    – Joe Z.
    Commented Apr 1, 2015 at 22:49
  • 15
    \$\begingroup\$ I know. That's why I posted it as a comment \$\endgroup\$ Commented Apr 1, 2015 at 22:51
  • 15
    \$\begingroup\$ I wonder if this question gets a small spike in popularity around New Year's. \$\endgroup\$
    – Joe Z.
    Commented Dec 26, 2015 at 23:28
  • 6
    \$\begingroup\$ Waiting for "Come on folks, don't you realize it's 2016?" :) \$\endgroup\$
    – padawan
    Commented Jan 4, 2016 at 23:35

341 Answers 341

1
8 9
10
11 12
0
\$\begingroup\$

C# (56 characters)

Class P{static void Main(){Console.Write(','*','+'N');}} 
\$\endgroup\$
5
  • \$\begingroup\$ This doesn't print anything. \$\endgroup\$
    – shamp00
    Commented Jan 5, 2014 at 15:05
  • \$\begingroup\$ 26 characters = 4 bytes?? I don't think so... \$\endgroup\$
    – jub0bs
    Commented Jan 6, 2014 at 12:24
  • \$\begingroup\$ Sorry. I just included the logic only. Now I included the whole program. \$\endgroup\$ Commented Jan 7, 2014 at 3:34
  • \$\begingroup\$ You need System.Console to use Console. \$\endgroup\$
    – shamp00
    Commented Jan 8, 2014 at 14:24
  • \$\begingroup\$ using System; will be on the header. So.... \$\endgroup\$ Commented Jan 8, 2014 at 17:50
0
\$\begingroup\$

BAT (windows batch), 7 characters

echo %*

save as a.bat and invoke as a 2014

is there any restriction on using command line parameters? – Einacio

I don't think so, but echo $1 still has a number in it. – Joe Z.

not a so valid answer, but noone was posting an answer in this wonderful language

\$\endgroup\$
2
  • \$\begingroup\$ Does BAT have an equivalent to sh’s $@ for “all parameters”? \$\endgroup\$ Commented Jan 10, 2014 at 23:29
  • \$\begingroup\$ @ZevEisenberg that's what i used, altought it seems someone didn't like it \$\endgroup\$
    – Einacio
    Commented Jan 13, 2014 at 15:14
0
\$\begingroup\$

PHP (27) - not shortest ASCII PHP but more readable

<?=hexdec($e=hexdec(E)).$e;
\$\endgroup\$
0
\$\begingroup\$

Bat (Windows batch), 13 bytes (characters)

echo.^T |od -x

(^T is one character.)

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

Bash, 15 bytes

echo "^T "|od -x

(^T is one character.)

\$\endgroup\$
1
  • \$\begingroup\$ How about: printf %x \'— 13 characters. \$\endgroup\$
    – user92894
    Commented Aug 30, 2019 at 22:26
0
\$\begingroup\$

PYTHON

print(str(len('Happy new year to me')) + str(len('Happy new year')))
\$\endgroup\$
4
  • \$\begingroup\$ This has a 1 in it. \$\endgroup\$
    – Joe Z.
    Commented Jan 11, 2014 at 23:16
  • \$\begingroup\$ oh whoops let me fix it \$\endgroup\$
    – Oliver Ni
    Commented Jan 11, 2014 at 23:17
  • 1
    \$\begingroup\$ Must str('Happy new year') be wroted as str(len('Happy new year'))? \$\endgroup\$
    – AMK
    Commented Jan 11, 2014 at 23:28
  • \$\begingroup\$ sorry. I fixed it. \$\endgroup\$
    – Oliver Ni
    Commented Jan 13, 2014 at 4:53
0
\$\begingroup\$

PHP, 22 bytes

echo ord('').ord('')

Edit

SE is stripping the characters. Working version here: http://codepad.org/unzjXNY2.

\$\endgroup\$
3
  • \$\begingroup\$ this produces "00" when I run it. Please explain. \$\endgroup\$ Commented Jan 14, 2014 at 20:32
  • \$\begingroup\$ SE is stripping the characters. Added a codepad example. \$\endgroup\$
    – Michael
    Commented Jan 14, 2014 at 22:40
  • \$\begingroup\$ You can swap out echo with <?=, to make it 2 characters shorter. \$\endgroup\$
    – cjfaure
    Commented Feb 8, 2014 at 19:36
0
\$\begingroup\$

k 11 & 17 chars

this 11-char one is from a colleague

@:[:']*.(.)

this 17-char one is the best i could come up with on my own; it's a variant on ASCII abuse:

.,/$-/"i"$$`zz`fl

and just for interest, here are a few others of mine:

."c"$"RPQT"-"e"$" " / ascii (only 2.x)
."c"$-/"e"$("RPQT";" ") / ascii (all versions)

-_-(s*(exp acos@-`=`)xexp x)-(s xexp s:x*x)%x:+/``=`` / port of David Carraher's solution above

.,/$#:'(``;();`;````) / another approach
\$\endgroup\$
1
  • \$\begingroup\$ @David Carraher my latest improvements on my port of your algo--two implementations, both 39 chars: -_-(xpp:exp acos@-#)-f*x*x*x:f*f:#`` f+(x*_p*p:exp acos@-#)-fxxx:ff:#`` (i don't have the rep to comment on your post yet) \$\endgroup\$ Commented Jan 10, 2014 at 2:02
0
\$\begingroup\$

Delphi (26bytes & 26 chars)

ord('-')*ord('/')-ord('e')

Ascii values
- : 45
/ : 47
e : 101
45*47 = 2115 - 101 = 2014

\$\endgroup\$
1
  • \$\begingroup\$ The specifications say “make a program that prints”. This code excerpt is merely an expression that’ll evaluate to 2014. It’s not a program nor will it print anything. Complete Pascal solution. \$\endgroup\$ Commented Nov 6, 2022 at 10:32
0
\$\begingroup\$

You never said we couldn't put it on an external page!

Javascript - 19 Chars

location='//x.vu/u'

PS. It took 2 tries to get a shortened URL without numbers :P

\$\endgroup\$
8
  • \$\begingroup\$ Yes, but sadly your code is far from being the shortest. :P \$\endgroup\$
    – Joe Z.
    Commented Jan 1, 2014 at 18:26
  • 1
    \$\begingroup\$ @Joe Z. Right, you could include an HTML script src instead :P \$\endgroup\$
    – Cilan
    Commented Jan 1, 2014 at 23:10
  • \$\begingroup\$ location.href.match(/-(\d+)-/).pop() \$\endgroup\$
    – Alf Eaton
    Commented Jan 3, 2014 at 9:18
  • \$\begingroup\$ location='http://goo.gl/miVwHe' would be shorter in my opinion. \$\endgroup\$
    – null
    Commented Jan 4, 2014 at 11:23
  • \$\begingroup\$ @xfix Thanks for the tip, I even removed 'http:' :) \$\endgroup\$
    – Cilan
    Commented Feb 8, 2014 at 19:24
0
\$\begingroup\$

e-TeX, 21 bytes

\the\numexpr`*`j\bye

It contains an invisible control character with code 19 (0x13) before the asterisk. A version with printable ASCII characters needs two more bytes:

\the\numexpr`^^S*`j\bye

In TeX ` takes the character code of the next token:

  • [0x13] (^^S): 19
  • j: 106

\numexpr calculates: 19 * 106 = 2014

The result is a DVI file with "2014" on the first page.

Variant with 2014 as page number:

\pageno\numexpr`^^S*`j~\bye

(25 bytes, if ^^S is replaced by the byte with character code 19).

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

Java without the weird unicode charas @ 115

enum A{A;public static void main(String[]z){int a=A.ordinal(),b=a++;System.out.print(""+(a<<a)+b+a+(a<<(a<<a)));}}

enumerators are pretty handy :)

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

GTB, 38

π/π→A:A++B:A+A→C:C*C→D~B*C*C+B*C-C-A-A

Compile assuming : at front

\$\endgroup\$
2
  • \$\begingroup\$ π is 2 bytes and is 3, bringing the byte count to 49. \$\endgroup\$
    – Joe Z.
    Commented Jan 7, 2014 at 2:18
  • \$\begingroup\$ @JoeZ. All characters at tibasicdev.wikidot.com/83lgfont are 1 byte. \$\endgroup\$
    – Timtech
    Commented Jan 7, 2014 at 12:10
0
\$\begingroup\$

Python, 8 characters

ord('ߞ')

I think this ought to be valid :P

Ok, if you want me to use print(),

15 characters

print(ord('ߞ'))
\$\endgroup\$
0
0
\$\begingroup\$

Cardinal, 14 chars

%n=*+.-d++.
 d

The pointer starts at %, reads in the character ‘d’(ASCII 100), creates a duplicate as inactive value (the bottom of the stack), adds active and inactive values, resulting in 200, adds 1, prints out the result 201, subtracts one, divides by inactive value (100), resulting in 2, adds two, prints out 4. Cardinal pointer stacks can only carry values up to 255 (OEM 437 range), everything above leads to a wrap-around.

0             100             100             200             201
0               0             100             100             100
>n=*+.-d++.    %>=*+.-d++.    %n>*+.-d++.    %n=>+.-d++.    %n=*>.-d++.
 d              d              d              d              d
———————————————————————————————————————————————————————————————————————
   201             200               2               3               4
   100             100             100             100             100
%n=*+>-d++.    %n=*+.>d++.    %n=*+.->++.    %n=*+.-d>+.    %n=*+.-d+>.

print:"201"
———————————————————————————————————————————————————————————————————————
          4
        100  
%n=*+.-d++>

  print:"4"

Result:

Executing program..

2014

Execution complete.
\$\endgroup\$
0
\$\begingroup\$

C, 24 / 68

main(){printf("MMXIV");}

Haha, Roman Numerals For The Win!


Or, for real:

main(){printf("%i%i%i%i",strlen("aa"),nil,strlen("a"),sizeof(int));}
\$\endgroup\$
0
\$\begingroup\$

q, 20 17 bytes

{x+y*z}."j"$"$+."
\$\endgroup\$
0
\$\begingroup\$

TeaScript, 7 bytes

'ߞ'c()

Takes the char code of the character with a char code of 2014

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

Groovy, 48 bytes

For 2015 change cabe to cabf...

n={it.each{print(((int)it)-(int)'a')}}
n('cabe')

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

JavaScript, 17 Bytes

atob("MjAxNA==")
\$\endgroup\$
0
\$\begingroup\$

VBA, 21 characters

?cells(,"BYL").column

Write and run the above code in the Immediate Window. Basically, the code converts column name BYL to its column index (2014).

\$\endgroup\$
1
  • \$\begingroup\$ For future reference, this may be rewritten as ?[BYL:BYL].Column \$\endgroup\$ Commented Sep 3, 2017 at 21:04
0
\$\begingroup\$

C (gcc 5.3.1), 49 bytes

Pure arithmetic! \o/

main(a){printf("%d",(++a<<(a<<a|a))-(a<<a+a)-a);}

Undefined behaviours.

Specifically, use this compiler (languages are defined by implementation).

Without undefined behaviour (which would work on all compilers), 51 bytes

main(a){a++;printf("%d",(a<<(a<<a|a))-(a<<a+a)-a);}

Explanation

Basically 2048 - 32 - 2, constructed using powers of 2.

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

Swift 2.2, 28 bytes

print("\(ENOTDIR)\(EFAULT)")

Falling back on Darwin/glibc error codes from errno.h.

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

Mathematica, 16 bytes

FromDigits@"JAE"
\$\endgroup\$
0
\$\begingroup\$

QBIC, 10 bytes - Not Competing

?z^s*r+z+t

Calculates 2014 from the pre-initialised variables q-z (1-10) and prints it. Development of QBIC started some two years after 2014...

Alternative 12-byte version:

?(u*y)^r-z-q
\$\endgroup\$
0
\$\begingroup\$

Pushy, 6 bytes

`��`j#

Contains control characters, so here's a hexdump:

0000-0006:  60 14 0e 60 6a 23

The first unprintable is the literal DC4 byte (\x14), and the second is SHIFT-OUT (\x0e).

First these bytes are pushed as charcodes, so the stack is [20, 14]. The j operator concatenates these and # outputs the result: "2014".


10-byte solution:

`<:;>`KT-"

Uses char-code manipulation and the builtin T (10).

`<:;>`       Push string as char-codes: [60, 58, 59, 62]
     KT-     Take 10 from each: [50, 48, 49, 52]
        "    Interpret as char-codes and print: results in "2014"
\$\endgroup\$
0
\$\begingroup\$

Microscript, 10 bytes

Noncompeting, language postdates the question..

'js'(s';-*

Explanation: 106*(59-40), using the language's equivalent of character literals. I'd do 53*38, but the character corresponding to 53... is the digit 5. And the character corresponding to 19 is, of course, nonprintable, so that wouldn't work.

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

Pyke, 3 bytes, noncompetitive

Try it here!

Where ߾ is 0xDFBE

Loads ord(0xDFBD-0x20) as an integer and implicit prints it

\$\endgroup\$
2
  • \$\begingroup\$ How does it work? \$\endgroup\$
    – Pavel
    Commented Dec 13, 2016 at 4:04
  • \$\begingroup\$ @Pavel explanation added \$\endgroup\$
    – Blue
    Commented Dec 13, 2016 at 7:35
0
\$\begingroup\$

tcl, 16

puts [scan ߞ %c]

Can be seen on: http://rextester.com/live/SVXB29034

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

Groovy, casting to int, 8 bytes

(int)'ߞ'
\$\endgroup\$
1
8 9
10
11 12

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