Skip to main content
4 of 5
added 2332 characters in body
Nick Kennedy
  • 21.2k
  • 3
  • 17
  • 43

Jelly, 235 225 bytes

“¤ßȷŒȷddðdẎeȤdƤƬddƲdƝ‘s2⁵+€⁴¤żẎṣjƭƒ“Ç=ÇgƲȷ€çfȤeƲ€fƈiÆf¿fÐɦÇÞµÞÇe2jÑصؿg8i€ØµØ½ð4Ɲ5Ɲ2fƲµÞµÞ½Ʋ;æ½f¿f½Ʋ5¤6Ʋ€g¬g½i¬ⱮvðɓȷeðɓȷeðɓȷeḳƁḳeƤııeƤııeƤııⱮp×ædɓædɓædɓd×⁾×eƝçıçeƝçıçeƝçıçd×⁾¤o‘b50U+Ø0U‘Œṙṁ1xⱮ“&ðẏṪ¶ẏ×Ṙ⁷Ƈ⁾1Ẓṁn#’b64¤¤ị“ *#.-”Y

Try it online!

Uses a combination of run-length encoding and replacement of common length-2 sequences with a single digit. Does not use any standard compression library like gzip. Overall has 182 bytes of compressed data and 43 of code.

Explanation

Step 1: replace values in the data between 17 and 26 with prestored pairs of bytes

“¤...Ɲ‘                     | Base-250 integer list 3, 21, 26, 19, 26, 100, 100, 24, 100, 209, 101, 154, 100, 151, 152, 100, 100, 153, 100, 150
       s2                   | Split into twos
             ¤ż             | Zip the following as a nilad with this:
         ⁵                  | - 10
          +€⁴               | - Add 16 to implicit range from 1 to 10
             Ẏ              | Tighten (join outermost lists)
                   ƒ“Ç...o‘ | Reduce using the following, and starting with the base-250 integer list 14, 61, 14, 103, 153, 26, 12, 23, 102, 154, 101, 153, 12, 102, 156, 105, 13, 102, 11, 102, 15, 160, 14, 20, 9, 20, 14, 101, 50, 106, 16, 18, 9, 18, 11, 103, 56, 105, 12, 18, 9, 18, 10, 24, 52, 150, 53, 150, 50, 102, 153, 9, 20, 9, 20, 10, 153, 59, 22, 10, 102, 11, 102, 10, 153, 53, 3, 54, 153, 12, 103, 7, 103, 10, 105, 7, 149, 118, 24, 155, 26, 101, 24, 155, 26, 101, 24, 155, 26, 101, 217, 143, 217, 101, 151, 25, 25, 101, 151, 25, 25, 101, 151, 25, 25, 149, 112, 17, 22, 100, 155, 22, 100, 155, 22, 100, 155, 100, 17, 142, 17, 101, 150, 23, 25, 23, 101, 150, 23, 25, 23, 101, 150, 23, 25, 23, 100, 17, 142, 3, 111
                  ƭ         | - Alternate between:
                ṣ           |   - Splitting
                 j          |   - And joining

Step 2: Run-length decode and convert to string

b50                                 | Convert to base 50
   U                                | Reverse order of bytes
    +Ø0                             | Add 0,0
       U                            | Reverse order again (effectively the last three links add in leading zeros where needed)
        ‘                           | Increment by 1
         Œṙ                         | Run length decode
           ṁ            ¤           | Mould like the following as a nilad:
            1xⱮ        ¤            | - 1 repeated each of the following as a nilad:
             “&...#’                |   - Base-250 integer 36418435425519061363927141799858777786
                    b64             |   - Convert to base 64
                         ị“ *#.-”   | Index into " *#.-"
                                 Y  | Join ith newlines
Nick Kennedy
  • 21.2k
  • 3
  • 17
  • 43