# Largest Number Printable

Your goal is to write a program that prints a number. The bigger the number, the more points you'll get. But be careful! Code length is both limited and heavily weighted in the scoring function. Your printed number will be divided by the cube of the number of bytes you used for your solution.

So, let's say you printed 10000000 and your code is 100 bytes long. Your final score will be 10000000 / 100^3 = 10.

There are other rules to follow, in order to make this challenge a bit harder.

• You cannot use digits in your code (0123456789);
• You can use mathematical/physical/etc. constants, but only if they are less than 10. (e.g. You can use Pi ~= 3.14 but you can't use the Avogadro constant = 6e23)
• Recursion is allowed but the generated number needs to be finite (so infinite is not accepted as a solution. Your program needs to terminate correctly, assuming unbounded time and memory, and generate the requested output);
• You cannot use the operations * (multiply), / (divide), ^ (power) nor any other way to indicate them (e.g. 2 div 2 is not allowed);
• Your program can output more than one number, if you need it to do that. Only the highest one will count for scoring;
• However, you can concatenate strings: this means that any sequence of adjacent digits will be considered as a single number;
• Your code will be run as-is. This means that the end-user cannot edit any line of code, nor he can input a number or anything else;
• Maximum code length is 100 bytes.

1. Steven H., Pyth ≈ fφ(1,0,0)+7(25626)/1000000[1]
2. Simply Beautiful Art, Ruby ≈ fφ121(ω)(126)[1]
3. Peter Taylor, GolfScript ≈ fε0+ω+1(17)/1000 [1]
4. r.e.s., GolfScript ≈ fε0(fε0(fε0(fε0(fε0(fε0(fε0(fε0(fε0(126))))))))) [1]
5. Simply Beautiful Art, Ruby ≈ fωω2+1(1983)
6. eaglgenes101, Julia ≈ fω3(127)
7. col6y, Python 3, ≈ (127→126→...→2→1) / 993 [1][3]
8. Toeofdoom, Haskell,a20(1) / 993 [1]
9. Fraxtil, dc, ≈ 15 ↑¹⁶⁶⁶⁶⁶⁵ 15 / 1003 [3]
10. Magenta, Python, ≈ ack(126,126)/1003 ≈ 10 ↑124 129
11. Kendall Frey, ECMAScript 6, ≈ 10 3 ↑4 3 / 1003 [1]
12. Ilmari Karonen, GolfScript, ≈ 10 ↑3 10377 / 183 [1]
14. recursive, Python, ≈ 2↑↑11 / 953 ≈ 10↑↑8.63297 [1][3]
15. n.m., Haskell, ≈ 2↑↑7 / 1003 ≈ 10↑↑4.63297 [1]
16. David Yaw, C, ≈ 10104×1022 / 833 ≈ 10↑↑4.11821 [2]
17. primo, Perl, ≈ 10(12750684161!)5×227 / 1003 ≈ 10↑↑4.11369
18. Art, C, ≈ 10102 × 106 / 983 ≈ 10↑↑3.80587
19. Robert Sørlie, x86, ≈ 102219+32 / 1003 ≈ 10↑↑3.71585
20. Tobia, APL, ≈ 1010353 / 1003 ≈ 10↑↑3.40616
21. Darren Stone, C, ≈ 101097.61735 / 983 ≈ 10↑↑3.29875
22. ecksemmess, C, ≈ 102320 / 1003 ≈ 10↑↑3.29749
23. Adam Speight, vb.net, ≈ 105000×(264)4 / 1003 ≈ 10↑↑3.28039
24. Joshua, bash, ≈ 101015 / 863 ≈ 10↑↑3.07282

Footnotes

1. If every electron in the universe were a qubit, and every superposition thereof could be gainfully used to store information (which, as long as you don't actually need to know what's being stored is theoretically possible), this program requires more memory than could possibly exist, and therefore cannot be run - now, or at any conceiveable point in the future. If the author intended to print a value larger than ≈3↑↑3.28 all at once, this condition applies.
2. This program requires more memory than currently exists, but not so much that it couldn't theoretically be stored on a meager number of qubits, and therefore a computer may one day exist which could run this program.
3. All interpreters currently available issue a runtime error, or the program otherwise fails to execute as the author intended.
4. Running this program will cause irreparable damage to your system.

Edit @primo: I've updated a portion of the scoreboard using a hopefully easier to compare notation, with decimals to denote the logarithmic distance to the next higher power. For example 10↑↑2.5 = 1010√10. I've also changed some scores if I believed to user's analysis to be faulty, feel free to dispute any of these.

Explanation of this notation:

If 0 ≤ b < 1, then a↑↑b = ab.

If b ≥ 1, then a↑↑b = aa↑↑(b-1).

If b < 0, then a↑↑b = loga(a↑↑(b+1)).

• Has someone explicitly said "base 10" yet? – keshlam Jan 9 '14 at 14:42
• Does the large number count if it's say 12e10 (12*10^10) as 12*10^10? – hichris123 Jan 9 '14 at 19:36
• I think a better constraint instead of forbidding *, /, and ^, would've been to allow only linear operations, e.g. +, -, ++, --, +=, -=, etc. Otherwise, coders can take advantage of Knuth's up-arrow/Ackermann library functions if made available in their language of choice, which seems like cheating. – Andrew Cheong Jan 10 '14 at 0:19
• I'm still waiting to see someone earn footnote [4]. – Brian Minton May 18 '17 at 15:41
• Say, if my program prints 500b, is this invalid? That is, may we ignore all non-numeric things a program prints? And if so, would something like 50r7 count as 507? – Simply Beautiful Art May 22 '17 at 20:07

# brainfuck, 97 bytes, f255(2552)

-[>-[[>]-[<]>>-]<-]-[-[[>]+[<]<+>>-]-[<+>-----]<.,<[>>>[[-<+>]<[<]<[->+<<+>]>[>]>]<+[<]>,<<-]>>>]


Assumes a wrapping implementation with an infinite tape in both directions.

The algorithm of the program is:

Initialise a list with 255^2+1 255s
While the list exists:
Print a 3
Pop the first element of the list to use as a counter
Decrement the counter
Append counter many 1s to the end of the list
While counter != 0:
Prepend length of list-1 copies of the counter to the front of the list
Decrement counter


This is not infinite, as every time a list element is processed, it only appends elements that are less than it. 1s are popped and removed without appending anything.

A step by step explanation of the code:

- Initialise counter as 255
[ While counter
>-[[>]-[<]>>-] Add 255 255s to the list
<- Decrement counter
]-
This initialises the list as 255^2+1 255s

[ While list exists
- Decrement the first element
[
[>]+[<] Append that many 1s to the end of the list
<+>>-   Copy the element one over
]
-[<+>-----]<.,< Print a 3
[ While counter
>>> Go to first element of list
[ For each element in the list
[-<+>] Move the element over one
<[<]< Go to the counter
[->+<<+>] Prepend a copy of the counter to the start of the list
>[>]> Go to the next element of the list
]
<+[<] Return to the start of the list while appending a 1
>,    Remove the first element of the list
<<-   Decrement the counter
]
>>> Go to first element of the list
]


Big thanks to the folks on the Ordinal Studies Discord for helping me understand just how big the number is. If anything seems wrong, blame them please correct me.

This is the one that first sprang to mind. It's going to be huge, but I've no idea how huge, looking for help on that one. In clojure:

(reduce #(reduce *' (repeat %2 %1)) (rest (rest (take-while #(= (type %) java.lang.Long) (range)))))


If I have any idea what I'm doing, the score should be something around 2^((9223372036854775807!)/2)/100^3

Another version that does the same thing, without using the %1 and %2:

(reduce (fn [x y] (reduce *' (repeat y x))) (rest (rest (take-while #(= (type %) java.lang.Long) (range)))))


Score for this would be something like:

2^((9223372036854775807!)/2)/108^3

Both will take some huge amount of time to execute though, so it only works if we take full advantage of the removed time limit, sorta a bit cheaty there.

• I guess 2 and 1 are digits, though :P – Vereos Jan 14 '14 at 22:56
• You know what, I somehow totally glazed over that, you can fix that by replacing that lambda with (fn [x y] (reduce *' (repeat y x))) though, its just a bit longer. Since the digits aren't used for their values, I think this still fits the spirit though. – natman3400 Jan 14 '14 at 23:00

Ruby, 94 characters, Friedman's n[26]

b,e=%w[aa zz]
t=*b..e
p(b=~/$/)while t=t.product([*b<<?a..e<<?z]).reject!{|*o,n|n[/#{o*'|'}/]}  I suspect this to be bigger than anything currently posted; I'll try to come back later with a lower bound in Conway chain notation. This code constructs all possible trees of words using the 26-letter alphabet in which the root node is a two-letter word, each child contains one more letter than its parent, and no later node contains an earlier node as a substring. It does this via dumb brute force which means it pegs my computer trying to calculate n[2] (which should be 11). It does get n[1] right, at least, and the code looks right to me. See the linked paper for proof that this terminates. At each step it prints the size of the largest leaf (by current rules the last and largest number it prints counts as the answer). • "... as a substring" -- Careful, Friedman's n() function concerns subsequences, not substrings. Unfortunately, I can't read your code well enough to know which you're using. – r.e.s. Jan 19 '14 at 19:47 • You're right, I'd misread. No proof that this actually terminates, then. – histocrat Jan 19 '14 at 20:46 • Actually, if I remember correctly, the case of substrings can be proved non-terminating (i.e., the sequence can be made arbitrarily long without embedding any substrings). – r.e.s. Jan 19 '14 at 20:52 • That'd be my guess, or else Friedman would've used it since it's strictly larger. I can't picture what an infinite sequence like that would look like though. – histocrat Jan 19 '14 at 21:31 # C Not sure if this one counts but damn does it print large numbers. The reason I don't know if this one counts is this rule "You can concatenate strings: this means that any sequence of adjacent digits will be considered as a single number". I am not really concatenating, only printing many numbers. No seed is intentional. Ungolfed #include <stdio.h> #include <stdlib.h> int main(){ while(rand()) { printf("%d",rand()); } }  Golfed #include <stdio.h> #include <stdlib.h> int main(){while(rand())printf("%d",rand()%10);}  90 bytes in golfed version and since output is random (no seed means not that random actually) I think that I can't really give me a score, just here for the consolation prize. • I want to ask however if i need to mod10 the rand. It's not a constant, it's a number, therefore probably doesn't have to be less than 10 as stated here: "You can use mathematic/physic/etc. constants, but only if they are <10. (e.g. You can use Pi=3.14 but you can't use the Avogadro constant=6e23)" – Theoxarhs2099 Apr 7 '14 at 11:11 • No, don't mod 10 it. It's not a constant, plus it uses digits, which is not allowed. – Brian Minton May 19 '17 at 14:04 ## AWK, 100 bytes, Score ≈ 10^(5e80) ≈ 10↑↑2.280320629 func f(x){while(x-++x){printf x}}BEGIN{while(a-++a){while(b-++b){while(c-++c){while(d-++d){f(m)}}}}}  On most modern machines the while(x-++x) loop will terminate when x==2^53+1. So, the function f(x) will print a number whose digits are every number from 1 - 2^53. Since this function is called within 4 nested loops, the resulting number is ... big? To approximate, 2^53 > 9e15, so it has 16 digits. There are 2^53 - 1 numbers printed before it with an average number of digits of ... hmm, just a bit less than 16, let's call it 15. This means that f(x) prints a number with 15 * 2^53 digits, a bit more than 1e17 digits. That number is concatenated with itself 9e15^4 times ~ 6e63. The final number printed should have about 6e63 * 1e17 ~ 6e80 digits. Call it N=10^(6e80). The score will N/1e6 ~ 10^(5e80). I did some rounding down. I'm sure this can be written in some better way. # Python 3.3, 60 bytes, score ≈ 103692 ≈ 10↑↑1.55233497 ''.join([str(ord(y)) for x in dir(__builtins__) for y in x])  This prints (the string) (3697 digits) : 6511410511610410910111610599691141141111146511511510111411610511111069114114111114651161161141059811711610169114114111114669711510169120991011121161051111106610811199107105110103737969114114111114661141111071011108010511210169114114111114661171021021011146911411411111466121116101115879711411010511010367104105108100801141119910111511569114114111114671111101101019911610511111065981111141161011006911411411111467111110110101991161051111106911411411111467111110110101991161051111108210110211711510110069114114111114671111101101019911610511111082101115101116691141141111146810111211410199971161051111108797114110105110103697970691141141111146910810810511211510511569110118105114111110109101110116691141141111146912099101112116105111110709710811510170105108101691201051151161156911411411111470105108101781111167011111711010069114114111114701081119711610511010380111105110116691141141111147011711611711410187971141101051101037110111010111497116111114691201051167379691141141111147310911211111411669114114111114731091121111141168797114110105110103731101001011101169711610511111069114114111114731101001011206911411411111473110116101114114117112116101100691141141111147311565681051141019911611111412169114114111114751011216911411411111475101121981119711410073110116101114114117112116761111111071171126911411411111477101109111114121691141141111147897109101691141141111147811111010178111116656810511410199116111114121691141141111147811111673109112108101109101110116101100781111167310911210810110910111011610110069114114111114798369114114111114791181011141021081111196911411411111480101110100105110103681011121141019997116105111110879711411010511010380101114109105115115105111110691141141111148011411199101115115761111111071171126911411411111482101102101114101110991016911411411111482101115111117114991018797114110105110103821171101161051091016911411411111482117110116105109101879711411010511010383116111112731161011149711610511111083121110116971206911411411111483121110116971208797114110105110103831211151161011096911411411111483121115116101109691201051168497986911411411111484105109101111117116691141141111148411411710184121112101691141141111148511098111117110100761119997108691141141111148511010599111100101681019911110010169114114111114851101059911110010169110991111001016911411411111485110105991111001016911411411111485110105991111001018411497110115108971161016911411411111485110105991111001018797114110105110103851151011148797114110105110103869710811710169114114111114879711411010511010387105110100111119115691141141111149010111411168105118105115105111110691141141111149595981171051081009599108971151159595959510010198117103959595951001119995959595105109112111114116959595951109710910195959595112979910797103101959597981159710810897110121971159910510598105110981111111089812111610197114114971219812111610111599971081089798108101991041149910897115115109101116104111100991111091121051081019911110911210810112010010110897116116114100105991161001051141001051181091111001011101171091011149711610110111897108101120101991021051081161011141021081119711610211111410997116102114111122101110115101116103101116971161161141031081119897108115104971159711611611410497115104104101120105100105110112117116105110116105115105110115116971109910110511511511798991089711511510511610111410810111010810511511610811199971081151099711210997120109101109111114121118105101119109105110110101120116111981061019911611199116111112101110111114100112111119112114105110116112114111112101114116121114971101031011141011121141141011181011141151011001141111171101001151011161151011169711611611411510810599101115111114116101100115116971161059910910111610411110011511611411511710911511711210111411611711210810111612111210111897114115122105112 EDIT, 100 chars, score = 0 for using numbers in code :( Need to find a way to multiply the the strings without numbers. ''.join([str(ord(y)) for x in dir(__builtins__) for y in x])*999999999999999999999999999999999999999  Repeating the string until char limit to get a 3.697e+042 digit number, for 100 chars • Last time I checked 9999999... was a number :P – Vereos Jan 13 '14 at 12:37 • This isn't a full program, just a REPL script. – LegionMammal978 Mar 26 '16 at 20:36 # Haskell, 100 bytes, score ≈ 10↑↑65503 f!x|x<' '=f|q<-(!pred x),r<-(q$q f)[x]=foldl(.)f[f|_<-r,_<-r]
main=print$(\x->x++x)!'�'$[pred ':']


The special character (2^16 - 3 ascii) counts as 2 bytes. pred ':' is equal to '9'.

• Can you explain your number in non-code form? If so, I can probably analyze and provide a score for you. – Simply Beautiful Art May 19 '17 at 20:06
• @SimplyBeautifulArt Not easily, no. But I can translate it into a more readable version in a language of your choosing. I updated my answer with something c-like – BlackCap May 19 '17 at 21:06
• Sadly I don't use C, but I do use Ruby/Python. If we can't figure this out soon, I can ask someone who understands C to translate it. Or we can go to a private chat room? – Simply Beautiful Art May 19 '17 at 21:09
• I don't see where your code increases any numbers. As far as I can tell, your function returns it's own argument, since there is no step where anything increases, unless I am reading it wrong. (But of course, I don't fully understand C, so...) – Simply Beautiful Art May 19 '17 at 21:32
• @SimplyBeautifulArt I pass in a function that concatenates a string with itself. Ruby translation: pastebin.com/xUhiBTp6 (hopefully I got that right) – BlackCap May 19 '17 at 21:46

# x86 Assembly, Visual Studio 2012 ML.exe: 10↑↑3.0114

Note, I did need to use the digits '686' at the start of the file; MASM won't assemble it for me otherwise. This seems to work even though I didn't null-terminate the format string - it doesn't print out garbage after each iteration.

.686P
.MODEL FLAT, STDCALL
.DATA
INCLUDELIB MSVCRT
EXTRN printf:PROC
FMT DB "%u"
.CODE
main PROC
xor esi, esi
dec esi
mov ebx, esi
l_body:
push ebx
push offset FMT
call printf
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
dec esi
jnz l_body
ret
main ENDP
END


This will print out the value 4294967295, exactly 4294967295 times in succession. If anyone wants to work that out for me I'd be grateful!

• If it works as you claim, then that would be approximately 10^10^10^10^0.0114 ≈ 10↑↑3.0114 – Simply Beautiful Art Jun 21 '17 at 14:02
• @SimplyBeautifulArt thank you! – Govind Parmar Jun 21 '17 at 14:13
• No problem. It's what I'm here for. – Simply Beautiful Art Jun 21 '17 at 14:16
• @SimplyBeautifulArt Did you include dividing by the size of the code cubed in your answer? Thanks! – Govind Parmar Jun 21 '17 at 17:09
• Yes I did, the bytes cubed are insignificant to the end result and should not change the first few digits in my approximation. – Simply Beautiful Art Jun 21 '17 at 19:49

# Julia, 10(57*(1-129*1071)/-11)-1/993 ≈ 10↑↑5.27

b=bin(bswap(one(Int)))
z=BigInt(b)
k=-z
while k<z print(b);b="$b$b$b$b$b$b$b$b$b$b$b$b";k+=eps()end


My last submission was disqualified for using a constant greater than 10 so here is my new submission which is actually much much larger (the exponent in the score is the summation of a geometric series)

• Since your last one was disqualified, mind deleting it? Thanks. But +1 to this one :) – HyperNeutrino Oct 24 '17 at 20:23

# Pyth, fψ(ΩΩ)+7(25626)/1000000

=CGL&=.<GG?+Ibt]Z?htb?eb[XbhhZyeby@bhZhb)hbXbhhZyeb@,tb&bG<bhZ=Y[tZGG)VGVGVGVGVGVGVGVG=[YYY)uyFYHpG)


SimplyBeautifulArt has a fantastic explanation of a function that both of our solutions share, namely that I define a function y[b,G] with a global =g[h,n]. The major differences are as follows:

• I begin my value at the base 256 representation of the ASCII codes for the string "abcdefghijklmnopqrstuvwxyz".

• I use bit shifting .< to increase the value of G instead of addition.

• G gets incremented each step that y gets run including the recursive cases, while SBA's n gets incremented outside of his g and thus is updated less frequently.

• Instead of being satisfied with simply doing [[],n,n] (which my code represents as Y=[-1,G,G], I nest Y into itself as Y=[Y,Y,Y] G times, increasing G by calling Y=y[Y,G] 2(x+1) times, where x is as many times as it takes the new version of Y to reach 0 by these repeated applications. Y's value doesn't actually get reset to 0, because we calculate x by counting upwards using the reduce-until-seen-before builtin u.

• I then wrap the entirety of the above into 7 for loops (VG), which will repeat the key inner loop that nests Y and increases G until repeat(y[Y,G],Y=0 G times.

• Unwrapping all of these nested Ys results in a number that, to the best of my understanding, blows all the other solutions out of the water. I'll hold off on adding my solution to the leaderboard until someone else confirms my math.

• I'd say the most noticeable difference in strength between our programs is that in [b,c,d], I'm limited to natural values of c, whereas you are not. – Simply Beautiful Art Dec 3 '17 at 18:29
• I didn't even realize that you didn't allow for [[],[],n] in your program. – Steven H. Dec 3 '17 at 21:22
• Doing so would cost me 1 more byte. – Simply Beautiful Art Dec 3 '17 at 21:33
• Woo... I finally managed to do f[[n,[],n],n]! x'D – Simply Beautiful Art May 18 at 19:55

# Julia, fω3(127)

f(r,s,t)=foldl(|>,r,fill(s,t));!q=x->f(x,q,x);w(b)=a->x->x|>f(a,b,x);w(w(w(!)))(x->x+x)(BigInt('~'))


I aimed for the fast-growing functions corresponding to ordinals in the Veblen hierarchy, but I had to settle for ordinal exponentation. Maybe another challenge...

## Explanation:

#Function iteration, which is the tool to get us this far
#Applies s to r, t times
f(r,s,t)=foldl(|>,r,fill(s,t));

#Here's the first order successor:
!q=x->f(x,q,x);

#Function to help us with diagonalization
#Take a and x, and fold the b higher order function on the a function x times,
#then plug x into the resulting function
#Doing this multiplies the ordinal position by ω, which isn't nearly as high as I would hope
#Yes,I tried the ~ operator, but Julia doesn't like when I do that
w(b)=a->x->x|>f(a,b,x);

#Call it, and implicitly return it.
#Or interrupt it, and and enjoy your screenfulls of stack traces.
w(w(w(!)))(x->x+x)(BigInt('~'))

• Could you ungolf it? Can't help you approximate your number if I can't understand it. – Simply Beautiful Art Nov 1 '17 at 11:41
• Alright, presented an ungolfed explanation for estimation purposes. – eaglgenes101 Nov 1 '17 at 12:51
• As per the not copy/pasting into stackexchange properly, save it on a RIO link or something like that and make mention of it. – Simply Beautiful Art Nov 1 '17 at 13:02
• Your score is between f<sub>ω+2</sub>(15) And f<sub>ω+2</sub>(16). Closer to the 15 than the 16. – Simply Beautiful Art Nov 1 '17 at 13:05
• Good luck then! – Simply Beautiful Art Jul 4 '18 at 21:39

# Ruby, fφω(ω)(126)

Deterministic program:

h=n=?~.ord,[],n
f=->a{b,c,d=a;b ?a==b ?~-a:a==a-[$.]?[[b,c,f[d]],f[c],b]:b:n+=n} h=f[h]until h==p(n)  Try it online! ### Ungolfed: (with numbers and commentary) n = 126 # declare n h = [n,[],n] # declare h f = -> a{ # declare f b,c,d = a # declare b,c,d if !b.nil? # if a != [] if a == b # if a is an integer return a-1 elsif a==a-[0] # if a does not contain 0. t = [b,c,f[d]] return [t,f[c],b] else # if a does contain 0. return b end else # if a == []. n += n return n end } until h == n do # test if h == n. h = f[h] # reduce h. p(n) end  ### Math explanation: For simplicity, let g[h,n] be a function which declares h and n and then runs the second two lines of my program, replacing the last line with (p(n+=n);h=f[h])until h==0 and ending the second line with n instead of n+=n. (The resulting function grows slightly faster, though not by a significant amount (g[h,n] ~ g'[[[],2,h],n], where g' uses my actual program.)) Try it online! g[0,n] = n g[h,n] = g[f[h],n*2]  For integer k, we have f[k] = k-1 g[k,n] = g[k-1,n*2] = g[k-2,n*4] = ... = n*2^k = n<<k (bitwise shift)  Next, we have [], our transfinite ordinal: f[[]] = n g[[],n] = g[n*2,n*2] = n*2^(1+n*2) = n<<(1+n<<1)  Next, we have successor ordinals (i.e. f[x+1] = x): # Choice of y does not make any difference. f[[x,0,y]] = x g[[[],0,0],n] = g[[],n*2] = g[n*4,n*4] = n*2^(2+n*4) = n<<(2<<n<<2) g[[[[],0,0],0,0],n] = g[[[],0,0],n*2] = g[[],n*4] = g[n*8,n*8] = n*2^(3+n*8) = n<<(3+n<<3)  Then we have addition (i.e. f[x+y] = x+f[y]+1) f[[x,1,y]] = [[x,1,f[y]],0,x] f[[x,1,0]] = x g[[[],1,[]],n] = g[[[[],1,n*2],0,[]],n*2] = g[[[],1,n*2],n*4] = g[[[[],1,n*2-1],1,[]],n*8] = g[[[],1,n*2-1],n*16] = ... = g[[[],1,0],n*2^(2+n*4)] = g[[],n*2^(3+n*4)] = n*2^(4+n*4+n*2^(4+n*4))  And we can go on with expressions like [[],1,[[],1,[]]] or even more nestings. You'll notice that n nestings of [] inside of [[],1,...] will lead to n levels of n*2^n. This let's us quickly approximate a lower bound: g[[[],1,[[],1,[[],1,[[],1,[]]]]],n] > n*2^(n*2^(n*2^(n*2^(n*2^n))))  This brings us to the generalized hyperoperator: f[[x,y,z]] = [[x,y,f[z]],f[y],x] f[[x,y,0]] = x f[[x,0,z]] = x f[[0,y,z]] = 0  This creates horrendous things. Already g[[[],6,2],2] will far exceed the current golfscript answers. Next, we have [[],2,k], which behaves approximately like k+1 nestings of [[],1,...], and in Knuth's up-arrow notation: g[[[],2,k],n] > (2^n)↑↑(k+1)  And then we get things like g[[[],2,[]],n] > g[[[],2,n],n] > (2^n)↑↑(n+1) > n↑↑n  And then g[[[],2,[[],0,0]],n] > g[[[],2,[]],n*2] > (n*2)↑↑(n*2)  etc. Some values of interest: g[[[],3,k],n] ~ n↑↑...k arrows...↑↑n g[[[],4,1],n] ~ Ack(n,n) g[[[],3,[[],0,0]],20] ~ Toeofdoom's a_20(1) g[[[],3,[[],0,0]],64] ~ Graham's number g[[[],3,[[],1,1]],15] ~ eaglgenes101's number g[[[],4,2],127] ~ col6y's number g[[[[],4,3],2,[]],3] ~ my older/other number g[[[],6,1],9] ~ r.e.s.'s number g[[[[],6,1],2,[[[],0,0],4,1]],17] ~ Peter Taylor's number  In the fast growing hierarchy, g[[[],n,n],n] is approximately fφn(ω)(n). My number is g[[n,[],n],n], which is approximately fφω(ω)(n), where n = 126. bash script ls -lR|sed s/[^[:digit:]]//g|tr -d '\n'  Score: Depends on system. For my system: Approx. 10^(9031890.226806) Here's how I calculated the score... Script length=39 (L) Capturing the output number (N) to a file results in filesize of 9,031,895 bytes. The file size (9031895 bytes) is approximately equal to log10(N). (The "actual" log10(N) would be something like: 9031894.99999999####+ (or so). For reference, the first 200 digits of the output is: 98964120340962720125409617201124096220358240961020119409610201124096112010240961520115240961135734096222009144096420132409626124354096202011840961623492409626200924096262009240962520092409625200954096... Calculating score: score=(N)/(L^3) score=10^( log10(N)-log10(39^3) ) score=10^( log10(N)-log10(59319) ) log10(N)=9031895 log10(59319)=4.773194 score=10^(9031895-4.773194) score=10^(9031890.226806) • You are missing a -e in your call to sed – Bary12 Jul 5 '18 at 8:44 • @Bary12 - Unfortunately, I no longer have access to (bash/sed on) that system, so I can't retry the command to verify it, let alone reproduce the same output. I do recall that I would have copy/pasted the command to a bash shell on that system to collect/verify results so I'm fairly confident it worked, as-is, without the -e. I can tell you that it works, with OR WITHOUT the -e on a Windows 7 system, running GNU sed version 4.2.1, although the command needs slight modification on Windows: dir /s|sed "s/[^[:digit:]]//g"|tr -d "\r\n" (continued ---) – Kevin Fegan Jul 7 '18 at 21:54 • @Bary12 --- From --help on GNU sed V 4.2.1 on my Windows 7 system: If no -e, --expression, -f, or --file option is given, then the first non-option argument is taken as the sed script to interpret. All remaining arguments are names of input files; if no input files are specified, then the standard input is read. According to that, the -e is not required in this case. In any case, if you still feel you are correct, please feel free to edit my post to reflect the new command-length, and score. I won't object. – Kevin Fegan Jul 7 '18 at 22:05 • Oh, my bad, I was using Zsh, that actually had problems with the pattern not being inside a string. – Bary12 Jul 8 '18 at 8:57 vb.net (100c) vb.net has a 36c minimum to all a basic program to run. So I not include this in the character count. Module M Dim a=MinValue,z=MaxValue Sub Main() For c=a To z For w=a To z For t=a To z For f=a To z Write("MMMMM") Next f,t,w,c End Sub End Module  Note it'll need a machine with cosmos load of memory, but supposing that be true. The result is expressed as roman numerals (No where in the rules did it state it wasn't allowed) I think the value is ((((5000 ^ (2^64))^(2^64))^(2^64))^(2^64)) or as express in Power to 10 representation. 10^(10^(10^1.890039430542323)) Additional Change the M to Z and the 5000 is now 10000. (Medieval) Version 2 (100c) Module M Dim a=MinValue,z=MaxValue Sub Main() R(z) End Sub Sub R(n) For f=a To z Write(New String("Z",&HFFFFFFF)) If n>a Then R(n-1) Next End Sub End Module  I think the follow is correct for the outputted number Z = 200 A = (2^64) B = (2^28)-1 C = Z^B D = ((A!)^A) N = C^D I think N = 101010101.600064490609157 Version 3 (100c) removed the -1 Module M Dim a=MinValue,z=MaxValue Sub Main() R(z) End Sub Sub R(n) For f=a To z Write(New String("Z",&HFFFF)) If n>a Then R(n+True) Next End Sub End Module  N= (200216-1)264!264 = ~101010101.600064490609157 • If n>a Then R(n-1) you are using digits in your code. Plus, I would say that Z and/or M can be seen as constants...? I think it's bending the rules, but not breaking them. – Vereos Jan 10 '14 at 15:07 • @Vereos BLEEP! Now I have find a way to subtract one, without using one. – Adam Speight Jan 10 '14 at 15:13 • I'm fairly certain the score here should be 10^(5000*(2^64)^4). Nesting two for loops from 1..10 does not execute 10^10 times, but only 10*10 times. – primo Jan 15 '14 at 16:26 • @primo the score I'm is the Version 3 one. – Adam Speight Jan 16 '14 at 19:52 # C, almost surely finite but infinite on average / 81^3 Assume rand() is a truly random number generator, and we have unlimited stack space. void w(){printf("%d",!!w);while(rand()&!!w)w();}int main(){srand(time(!w));w();}  With probability 1, every run of this program terminates in finite time and prints a finite answer. Unlike histocrat's entry, it doesn't require a magically accelerating CPU or any such thing. The expected value of the number produced is infinite. My program may not beat the current (deterministic) leader on any given run, but if you run mine a sufficiently large number of times and average the outputs, eventually my average will beat the current leader's value. Explanation: This program performs a simple random walk on the stack. Each call to w() is a step down and each return from w() is a step up. Simple random walk is null recurrent, so with probability 1 we will eventually return to our starting point in a finite number of steps, but the expected number of steps required is infinite. If you're willing to dispense with srand (you won't be able to average multiple runs, since they'll all have the same output, but the expectation of the output of a single run is still infinite) you can golf this further by having main call itself recursively, such as  int main(){while(rand()&!!main)printf("%d",!main());}  Now it's 54 characters, and I bet there is a still better way to get 1 than !!main. (A useful fact: if you don't return a value from main it returns 0.) ## Bash + bc NOTE: To stop once you've tried it (kills all bc instances): for p in pgrep bc; do kill -9$p; done


Suggestion:

echo "((($$^$$)^$$)^$$)^$$"|bc and so on... The $$ operator gives us the process ID.

Depending on your luck you can get a very high number here.

When repeated 7 times (5 + 2 + 2 * 7 + 2 * 7 + 3 = 38 chars...) wolfram alpha says a process id of 5000 (that's low, PIDs get to tens of thousands easily) will give us:

10^(10^(10^(10^(10^(10^(10^4.267064153307629))))))

Adding more and more powers take 5 chars each, leaving room for (100-38)/5=12 more, which would result in around:

10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^(10^4.267064153307629)))))))))))))))))))))

again, for a PID of only 5000.

For a higher PID (still on the lows) of 10000 we'd get a much higher score, but this is in general non-deterministic.

Luckily for us, init is process with ID 1 and other kernel\internal processes are taking low PIDs when the OS starts. This means we can expect the PID to be over 5000, if not higher.

Score: non-deterministic

Bonus: Score should be incrementing with attempts :D

• I do not enjoy numbers that depend on luck. – Simply Beautiful Art May 13 '17 at 15:13

My code is:

x=ord('힠');s=lambda:sum(range(x))
for i in range(s()):
for i in range(s()):x+=s();x+=s()
print(x)


Or a little cleaner:

x=ord('힠')
s=lambda:sum(range(x))
for i in range(s()):
for i in range(s()):x+=s();x+=s()
print(x)


It's python3.

Explanation:

sum(range(x)) is sum of 1 to x. for each x we have

s(x) = sum(range(x)) = (x/2) * (x+1)


a is a function where:

n = 0 -> a(n) = 55200
n > 0 -> a(n) = g(a(n-1))


where g(x) is:

g(x) = v(x) + v(v(x))


and v(x) equeals to:

v = x + s(x) = x + (x/2) * (x+1)


then g(x) becomes:

   g = v + v + (v/2) * (v+1)
-> g = (x + (x/2) * (x+1))*2
+(x + (x/2) * (x+1)/2)
*(x + (x/2) * (x+1)+1)


for a(n-1) we have:

g = (a(n-1) + (a(n-1)/2) * (a(n-1)+1))*2
+(a(n-1) + (a(n-1)/2) * (a(n-1)+1)/2)
*(a(n-1) + (a(n-1)/2) * (a(n-1)+1)+1)


so a is:

n = 0 -> a(n) = 55200
n > 0 -> a(n) =  (a(n-1) + (a(n-1)/2) * (a(n-1)+1))*2
+(a(n-1) + (a(n-1)/2) * (a(n-1)+1)/2)
*(a(n-1) + (a(n-1)/2) * (a(n-1)+1)+1)


our number is:

x = a(i)


where i is:

i = a(0)*a(0)+a(0)*a(1)+...+a(0)*a(a(0))


There maybe errors in this calculations, I'm not a mathematician. I Cannot calculate my score! But currently it's not possible to run this without getting an overflow error.

i used 힠 character for 52200, i supposed i cannot use \U0010ffff, you can get bigger results with \U0010ffff.

code is exactly 100bytes. Sorry for bad explanation, my english is not so good.

# Python, score unknown

import math;w,x=math.factorial,ord("~")
for n in[0]*x:
for n in[0]*x:
for n in[0]*x*x:x=w(x)


If anyone knows any way of representing this mathematically, I will be eager to hear.

# Brain-Flak, 2.1∙10410/1003 = 2.1∙10404 ≈ 10↑↑2.416095652

([(((((((((([()()()]){}){}){({}())}){({}())}){({}())}){({}())}){({}())}){({}())}){({}())}){({}())}])


## Explanation

This program starts by pushing -12 to the stack. It then sums up all negative integers greater than -12, and adds that to -12.

This leaves -78 on the stack.

We repeat this process 7 times eventually yielding:

-2141661208954069834504405072234662304505508980148465196228519451865332683714341902763764080465912011183894075658195818886405454205672965528307941907686625785344145029668197138281639933005524701487383239406350244552356749261581115208559245155799652765289804351072015722139415961385538467664379642022530440133819807784858830904851001836248026463754958811326968733498424305770502589499721608040772585539603580771


We negate this and output.

# PHP, about 2.2e957136 ≈ 10↑↑2.7767719

Code is 58 bytes long (not counting the <? and ?> tags).

<?$b="FFFF";for(;$i<hexdec($b);$i++,$a+=hexdec($b.$b))echo$a?>


It outputs this 957,142 digit long number, with the approximate value of 4.295*10957141.

Code in action here.

Degolfed and annotated:

<?
$b="FFFF"; for(;//who needs to initalize variables? not us!$i<hexdec($b);//loops 65,535 or 2^16 times$i++,//add 1 to $i per loop$a+=hexdec($b.$b)//add 4294967295?
)
echo$a //output$a once per loop
?>

• No need to include the PHP tags (<? and ?>). – usandfriends Jan 2 '16 at 20:32
• @usandfriends: PHP doesn't parse it as code without them (see here). – 9999years Jan 2 '16 at 20:55
• I meant for calculating byte count. See the other PHP answers, they don't include the tags. – usandfriends Jan 2 '16 at 21:19
• tags must be counted, so make it 62 bytes ... these 51 will do the same: for(;$i++<hexdec($b=FFFF);$a+=hexdec($b.$b))echo$a; – Titus May 12 '17 at 13:48
• @9999years (That´s with the -r flag, wich comes free.) – Titus May 12 '17 at 18:48

# C - 92 bytes (score 1.2842113915e4373822 ≈ 10↑↑2.822224398)

main(){char c='~',n='z'-'A',f=c,g=c;while(--c!=n)while(--f!=n)while(--g!=n)printf("%c",n);}


Wrote this before I found someone already posted a C solution. Oh, well.

This program generates the digit '9' by subtracting the ascii value 'A' from 'z', then repeatedly prints it.

Since the characters wrap around the container values, it actually repeats more than just the simple (126-57)^3 from the character values, it instead wraps around the character cells after subtraction, resulting in repeating the digit '9' 4373828 times. (I'm too tired right now to figure out why that particular number, but I'll edit later)

### JavaScript - 84 Characters - Final Score: 2.082941723E+2886 ≈ 10↑↑2.390912646

Code:

(function n(a){b=a.length+'';a.push(b);b.length<Math.PI?n(a):alert(a.join(''))})([])


Output:

01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000


(2893 digits)

Score:

(Calculated using http://keisan.casio.com/calculator)

Output / 84^3 = 2.082941723E+2886


# Javascript, more than 10^(16*2^2718281828459046) / 54^3 ≈ 10↑↑3.069506124

for(a=b=(Math.E+'').replace(".","");a--;b+=b);alert(b)


Description:

• (Math.E+'') is "2.718281828459045"
• The dot is dropped, a and b are "2718281828459045"
• Loop executes 2718281828459045+1 = 2718281828459046 times
• On every iteration b (and its length) is doubled (initial is 16 digits long)
• Outputs value 2718281828459045 repeated 2718281828459046 times
• You're score would be 2718281828459045*2718281828459046, no? – tuskiomi May 18 '17 at 18:49
• @tuskiomi, in b+=b i'm concatenating string from b with itself, so its length doubles. – Qwertiy May 18 '17 at 19:07
• So the above number times 2. – tuskiomi May 18 '17 at 19:10
• @tuskiomi, nope, the output is concatenated string, not its length. And that's not addition, that's concatenation. Try following program for(a=4,b=(Math.E+'').replace(".","");a--;b+=b)console.log(b);console.log(b) - it makes only 4 steps instead of 2718281828459045 and outputs b to the console on each step and the last value that is alerted in original code. – Qwertiy May 18 '17 at 19:35
• @tuskiomi, only with 4 iterations value becomes 2718281828459045271828182845904527182818284590452718281828459045271828182845904527182818284590452718281828459045271828182845904527182818284590452718281828459045271828182845904527182818284590452718281828459045271828182845904527182818284590452718281828459045 that is definitely larger than 2718281828459045*2718281828459046 = 7389056098930651665961070771070 :) – Qwertiy May 18 '17 at 19:38

## Fortran (6.4243e4926 ≈ 10↑↑2.556279837)

Requires quad-precision library to be installed,

use iso_c_binding;real(c_long_double)a;print*,huge(a);end


# GTB

Don't run this on your calculator (it leaks memory)

[%X:"]


Code length = 6 bytes (63=216)

Score = 13,256,072 (2,863,311,531/216)

**Assumes 16 GB free memory on an emulator for Windows*

• one of the rules stated: You cannot use digits in your code (0123456789) I don't know if this counts, dude..? – WallyWest Jan 9 '14 at 1:55
• @Eliseod'Annunzio Fixed. – Timtech Jan 9 '14 at 16:42

# Braingolf, 10 bytes, final score: ≈ 10131 ≈ 10↑↑2.3257765097

#􏿿[l!_]


Note that 􏿿 is a 4 byte ASCII character with the value 1114111

Outputs every number from 2 to 1114111 with no spaces or other separators. Somewhere around 6.7m digits, but can we make it bigger...

# Braingolf, 100 bytes

#􏿿...............[l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_][l!_]


This does the same as above, but 16 times over. Meaning the final number is every number from 1 to 17825792 appended. 131m digits.

Not the largest or the winner by any stretch, but still pretty good, and probably as good as one can do in Braingolf given the banning of operators

# J, fω(256) / 50653

(<:@[$:~^:]])(>:@])@.(=(#>a.)"_)~#a.  ### Explanation: This makes use of what J calls a gerund: The  character is used to form a list of verbs, and the the verb following @. is used to select which verb to apply. This makes it equivalent to an if ... then ... else statement. Also, $: is equivalent to the largest verb containing it. However, since we use ~ to apply our dyad with its right argument as both arguments, this is also part of \$:, which in the dyadic case flips the order of its arguments. Therefore, we use another ~ to un-flip them.

And, one last bit, a: is an empty box, > unboxes it, and # takes the length. So, #>a: is 0

Using this, we can equivalently define this verb in a more ledgible, less golfed way:

f =: dyad define
if. x = 0 do.
>:y
else.
(<:x) f^:y (y)
end.
)


Note: x is the left argument, y is the right

This fits the definition of the fast-growing heirarchy.

And then our program is f~ #a.. Now, #a. is the length of J's alphabet, which happens to be 256. Therefore, our program computes f256(256) = fω(256), since fω is defined as fn(n).

Note: ^: is distinct from ^ :

^: is an adverb which is equivalent to a functional power, which I do not believe is disallowed in the OP

# Come Here, score 1.03x1037

TELL"___________________________________________"-"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"NEXT


Come Here handles string arithmetic weirdly. In the encoding used by the reference implementation, "_"-"&" is "9".

Also, this program prints (in theory) a number slightly larger than 101098, however, it is not a valid answer to this question due to the restriction on using digits (and multiplication, for that matter; though I'm using it for string prepending here) in your code.

0CALL"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"cCALL0dCOME FROM SGNcCALL256*d+57d1CALLc-1cTELLdNEXT

• Note: the exact value of this number is 1111111111111111111111111111111111111111111/107811, or 10306101521283645556678920621375472921+25180/107811. – LegionMammal978 Mar 26 '16 at 11:29
• Also, note that due to padding, this outputs a trailing NUL byte. – LegionMammal978 Mar 26 '16 at 11:34

# C++ - 101 bytes

This runs for exactly 5 seconds - you can't see it, but I have the ASCII character for 5 in there:

#include<iostream>
#include<ctime>
int main(){for(int n=time(NULL);time(NULL)<n+'';)std::cout<<n;}


I wouldn't know how large the number is - large enough that my computer wouldn't be able to calculate my score. I ran this program outputting the number into .txt file, and it produced a file of 16.585 MB.

Screenshot of code in text document:

• Rule 5 says that you can't use ^ or the equivalent library calls. – Kyle Kanos Jan 9 '14 at 2:54
• Oh dear, guess I'd better re-work it. – Hosch250 Jan 9 '14 at 3:17
• @KyleKanos Fixed, is this better? – Hosch250 Jan 9 '14 at 3:43
• Nope, it has several digits in the code. – Hand-E-Food Jan 9 '14 at 3:56
• @KyleKanos This better now? – Hosch250 Jan 9 '14 at 4:06

# C, ??? (91 characters)

main(int d,char**v){long c='\t'-'\b';for(;c;c++)for(d-=d;(*v)[d];d++)printf("%llu",(*v)[d]);}


If I could use ^, I'd write d^=d, but alas.

Run through argv[0] and print its contents as an unsigned long long.Repeat 2long-1 times.

Since argv[0] is the program's path, I'd assume the smallest possible value printed by this program (on Windows) would be A:\ .com with a 32 bit long`. I'm not so sure on that though, smaller paths are probably possible.

• You can as ^ is xor operator, not exponentiation. – user75200 Dec 28 '17 at 15:11