The golfing language Jelly has a very complex and clever string compression system which I'm not going to go into depth about here. You can find a very good explanation here.
Basically, Jelly's string literals are represented as “...»
, where ...
is a string of characters from Jelly's codepage that is decoded into a base-250 integer before being decoded into a string which can contain both words and printable ASCII characters.
Your challenge is to find a string that, when decompressed in Jelly, represents itself. For example, if xxx
is your string, “xxx»
must return xxx
to be valid.
You can test ideas here, or just download Jelly and use the sss
function.
Scoring
The shortest submission in bytes (not counting “
and »
) wins. I'll happily accept a proof of impossibility, although it seems unlikely.
I've tested that there are no 1-or-2-byters, but there might still be a trivial one that is a single word.
Tips, notes and ideas
- Compressing ASCII characters is actually less effective than just using an ordinary string, so with enough, you'll have space to fit an extra word.
- You'll have to use printable ASCII (+ newlines) because nothing decompresses into characters that aren't those.
- There might be trivial solutions of 1-2 short words.
The empty string is not a valid solution. The string must be one single string - that is, you can't just escape the string and output it some other way.
“
or»
, so answers don't just escape the string and write a normal quine \$\endgroup\$xxx
would have to contain only ascii characters + pilcrow, as non-ascii can't be compressed. As all the words in Jelly's dictionary are longer than the 2-2.5 bytes required to compress them, we can't have the string ever look up a word, it can only decompress as characters. It might be possible to find a string that decompresses to itself that only uses the characters, but I doubt it (I'll take a proper go at proving it doesn't later) \$\endgroup\$