Japt, 19 14 13 10 9 8 bytes
Currently the best-scoring solution that fits in an answer!
"(()()...()()<"q>)m(l)m(d)q
where the string at the beginning is:
(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()<>()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()<>()()()()()()()()()()()()()()()()<
The total byte count is "only" 6694 3394 3354, so you can try it online!
Explanation
The actual method used is explained in other answers: Split on <>
, map each run of parens to chr(len(x))
, join again on the empty string. Here, it's the golfing that's the fun part.
Before "golfing", the original code might look like
"..."q"<>" mZ{Zl d} q""
which is a quite literal description: "...".split("<>").map(Z => Z.length.toChar()).join("")
Now we need to minimize non-bracket chars. How? Well, first we can do some actual golfing:
"..."q"<>" ml md q
This roughly represents "...".split("<>").map(Z => Z.length).map(Z => Z.toChar()).join()
.
Now we can abuse the confusing way Japt treats parentheses. (
represents going up one level, as in most languages, but )
represents going down two levels (a space goes down one level), which means we can optimize the code to:
"..."q("<>")m(l)m(d)q
This code acts just the same as the above, but uses two fewer non-bracket chars.
Additionally, if an operator is the first input to a function, it gets turned into a string so that the function can decide what to do with it. This means that we can avoid the quotes if we just make every run of parentheses 1 byte shorter, and split on >
instead (with some clever arrangement to cancel out the resulting >)
in the code):
"(...<"q>)m(l)m(d)q
This saves us a further two bytes, since we took out two of the quotation marks.