56
\$\begingroup\$

This challenge is in honor of mathematician John Conway who passed away April 11, 2020 due to COVID-19. He was famous for coming up with the Game of Life cellular automaton and many other mathematical contributions such as the surreal numbers and the monster group.

The advanced math of those topics is out scope for this programming challenge, though I strongly recommend people watch the various Numberphile videos about Conway. In one of those videos Conway says that he'd like to know why the monster group exists before he dies. It's unfortunately too late for that now but we can honor his memory in a very small way by exploring in code the strange number associated with the group.

Challenge

The monster group is the largest sporadic simple group in the branch of group theory in mathematics. But the only thing to know for this challenge is that its order, or number of elements it contains is:

808017424794512875886459904961710757005754368000000000

Your task is to write a program that outputs this number. However, to keep this from being trivial, your program may not contain any digits, 0 through 9. That is, your program may not contain any of the ten characters 0123456789.

Your output must be the precise digits of the number:

808017424794512875886459904961710757005754368000000000

or the digits with appropriate commas:

808,017,424,794,512,875,886,459,904,961,710,757,005,754,368,000,000,000

(Commas , are allowed in your code.)

Any usual output method is valid. No input should be required. The shortest program in bytes wins.

If it helps anyone the factorization of the number is:

2^46 * 3^20 * 5^9 * 7^6 * 11^2 * 13^3 * 17 * 19 * 23 * 29 * 31 * 41 * 47 * 59 * 71

(Factorization is not valid output.)

\$\endgroup\$
10
  • 1
    \$\begingroup\$ Are non-Ascii digits like acceptable? \$\endgroup\$ Commented Apr 14, 2020 at 23:47
  • 1
    \$\begingroup\$ @JonathanAllan Certainly. \$\endgroup\$ Commented Apr 15, 2020 at 0:13
  • 3
    \$\begingroup\$ How is this not a duplicate of the 2014 version of this challenge? The only difference what number is being output. \$\endgroup\$
    – Wheat Wizard
    Commented Apr 15, 2020 at 0:27
  • 7
    \$\begingroup\$ I don't consider this a duplicate at all, just another challenge in the same genre. Different target numbers are quite different--ranging from easy targets (like 2014) to theoretically difficult ones (such as incompressible numbers in the sense of Chaitin). Interesting ones would usually be between these two extremes, like this monster challenge. They're like any code-golf puzzle--you need to find hidden patterns in the target that you can exploit. But different numbers have different patterns! (That this challenge can be interesting is borne out by the variety of solutions already posted.) \$\endgroup\$ Commented Apr 15, 2020 at 3:25
  • 13
    \$\begingroup\$ I feel obligated to link to the real codegolf monster related to John Conway: tetris made in Game of life: codegolf.stackexchange.com/questions/11880 \$\endgroup\$ Commented Apr 15, 2020 at 10:28

36 Answers 36

1
2
1
\$\begingroup\$

MathGolf, 18 bytes

8462NG4896]y♂!♥!**

Try it online.

Explanation:

8462NG4896    # Push the integers 8,4,6,2,25,18,4,8,9,6
          ]   # Wrap the stack into a list
           y  # Join it together, and implicitly convert it to an integer: 846225184896
♂!            # Push 10!: 3628800
♥!            # Push 32!: 263130836933693530167218012160000000
**            # Multiply all three values on the stack together
              # (after which the entire stack is output implicitly as result)
\$\endgroup\$
0
\$\begingroup\$

Javascript, 93 characters

_=>'ÉÉŠ£¨×¬•Äѹ´Óª¶ÀyÄ¿y~Ĥ½yyyyyyyyy'.split``.map(c=>c.charCodeAt()-'y'.charCodeAt``).join``

The function returns "808017424794512875886459904961710757005754368000000000".

Explanation: Each character in the string is encoding two characters in the target. Because low character codes are a mess, we offset them by 121 ("y"). I also had to pad some extra 0s (y's) into the string because for instance a "y" and "yy" both convert to "0".

Port of Kevin Crujissen's answer (63 characters):

v=>"ᾑ䐑Ἂ㉌⊡▒д᭞ᵸ᪑".split``.map(c=>~-c.charCodeAt()).join``
\$\endgroup\$
0
\$\begingroup\$

R, 99 bytes

cat(match(strsplit("iaiareyhjefmihfiigefjjaejgrkhfhaafhfedgiaaaaaaaaa","")[[T]],letters)-T,sep="")

Fairly simple zero-based mapping from digits to letters, and using T as a substitute for 1.

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

BRASCA, 72 66 bytes

`B:B:;A><>AC>?;<BA?BB@>?CC:>C@;A;:A?A::?A?>=@B:::::::::`![al-mA{]x

Try it online!

Explanation

`B:B:;A><>AC>?;<BA?BB@>?CC:>C@;A;:A?A::?A?>=@B:::::::::`            - Push the number, with the ASCII code shifted by 10
                                                        ![a  mA{]x  - Foreach in stack:
                                                           l-       -    Subtract 10 from the charcode
                                                                    - Implicitly output it
\$\endgroup\$
0
\$\begingroup\$

C#, 61 bytes

_=>"ᾐ䐐Ἁ㉋⊠░г᭝ᵷ᪐␀␀␀␀␀␀␀".Select(x=>+x+"")

Try it online!


Converts a series of characters to their codepoints and then converts that to a string:

ᾐ  8080
䐐  17424
Ἁ  7945
㉋  12875
⊠  8864
  59904
░  9617
г  1075
᭝  7005
ᵷ  7543
᪐  6800
␀  0

here is a null byte (U+0000)

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

PARI/GP, 60 bytes

print(vecprod(Vec(Vecsmall("$$$G^ddhhhprstvwxxxxy{|~~~~"))))

Attempt This Online!

Takes the product of the ASCII codes of the characters.

Here is the Mathematica code to find the string "$$$G^ddhhhprstvwxxxxy{|~~~~".

\$\endgroup\$
1
2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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