g | x | w | all
Bytes Lang Time Link
nanC clang240904T131556Zjdt
485JavaScript ES7240903T214854ZArnauld
nan05AB1E240904T115701ZKevin Cr
160Charcoal240904T104850ZNeil
503JavaScript Node.js240904T062626Zl4m2
972Funge98240904T052319ZAlt Shif
610Google Sheets240903T222006Zdoubleun
156Vyxal240903T214715Zemanresu

C (clang), Score 678 675 669 (312 bytes)

*a[]={">[>]+<[+<]>>>>>>>>>[+]<<<<<<<<<",">,>,>,>,>,>,>,>,<<<<<<<<",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+]<<<<<<<<<",">;>;>;>;>;>;>;>;<<<<<<<<","<<<<<<<<<",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+<<<<<<<<[>]+<[+<]",">>>>>>>>>",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>]<[+<]"};f(s[]){for(;*s;)printf(a[*s++%43%13]);}

Try it online!

Inspired by @Arnauld's JavaScript answer.

Changed the index calculation to n % 43 % 13 to avoid empty strings in the dictionary thus saving a whopping 3 points from the score =)

JavaScript (ES7), Score:  492  485

The scoring scheme makes most compression attempts counter-productive. So what we really want to do is just use as few expensive characters as possible... ¯\_(ツ)_/¯

Expects an array of ASCII codes.

a=>a.map(c=>[[">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>"][8>>c**7]]+`[+<<<<<<<<[>]+<[+<]--]<[+<]-->[>]+<[+<]>>>>>>>>>[+]<<<<<<<<<->,>,>,>,>,>,>,>,<<<<<<<<-[+]<<<<<<<<<->;>;>;>;>;>;>;>;<<<<<<<<-<<<<<<<<<-->>>>>>>>>`.split`-`[c%13]).join``

Try it online!

05AB1E, score 292 (166 bytes)

“>-+.+[>+]<[<]>-[+.[>]+<[+<]-->-+.+[>+]<[<]>-]<[+<]-->[>]+<[+<]>-[+].<->,>,>,>,>,>,>,>,.->-+.+[>+]<[<]>-[+].<->;>;>;>;>;>;>;>;.-.<-->-“„>-¬9×:'.“<<<<<<<<“:'-¡IT>>>%èJ

Port of @Arnauld's first JavaScript answer, with some additional score improvements by using replaces.

Input as a list of code-point integers.

Try it online.

Explanation:

“>-+…>-“               # Push this string
        „>-            # Push ">-"
           ¬           # Push its first character without popping: ">"
            9×         # Repeat it 9 times: ">>>>>>>>>"
              :        # Replace all ">-" with ">>>>>>>>>" in the big string
        '.            '# Push "."
          “<<<<<<<<“   # Push "<<<<<<<<"
                    :  # Replace all "." with "<<<<<<<<" in the big string
        '-¡           '# Then split on "-"
           I           # Push the input-list of codepoint-integers
            T          # Push 10
             >>>       # Increase it three times to 13
                %      # Modulo
                 è     # 0-based index each into the list of strings
                  J    # Join this list to a single string
                       # (which is output implicitly as result)

Charcoal, 160 bytes, score 265

⭆S§⪪⪫⪪⪫⪪-+.+[>+]<[<]-[+.[>]+<[+<]++++-+.+[>+]<[<]-]<[+<]++++>[>]+<[+<]-[+].<++>,>,>,>,>,>,>,>,.++-+.+[>+]<[<]-[+].<++>;>;>;>;>;>;>;>;.++.<++++-++++¦-×>⁹.×<⁸++℅ι

Attempt This Online! Link is to verbose version of code. Explanation: Port of @Arnauld's JavaScript answer, but modified using @Ausername's compression.

 S                      Input string
⭆                       Map over characters and join
        ...             Translation string
      ⪫⪪   -×>⁹         Replace `-` with nine `>`s
    ⪫⪪         .×<⁸     Replace `.` with eight `<`s
   ⪪               ++   Split on literal string `++`
  §                     Indexed by
                      ι Current character
                     ℅  Ordinal
                        Implicitly print

JavaScript (Node.js), 503 score

f=([c,...a])=>c?`;+>[>]+<[+<]>>>>>>>>>[+]<<<<<<<<<;+;->>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+]<<<<<<<<<;-;<<<<<<<<<<;<;>>>>>>>>>>;>;,>,>,>,>,>,>,>,>,<<<<<<<<;,;.>.>.>.>.>.>.>.>.<<<<<<<<;.;[>>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+<<<<<<<<[>]+<[+<];[;]>>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>]<[+<]`.split(';'+c)[1]+f(a):[]

Try it online!

Each map is surrounded by ;<char><mapped>;<char> to allow low-cost indicing

Funge-98, score 972

~:'+-!#[_>:'--!>#]_>:'<-!>#[_>:'>-!#[_>:',-!#[_>:'.-!>>#]_>:'[-!>>>>>>>#]_']-!#]_>
]].....[$"<<<<<<<<<]+[>>>>>>>>>]<+[<+]>[>";..[$"<<<<<<<<,>,>,>,>,>,>,>,>"#;
[<...............]$"<<<<<<<<<]++-[>>+->>>>>>>]<[<]+>[+<<<<<<<<+>>>>>>>>>">
[<<<<<<<<<<<<<<<;+;<<<<<<<<<:k7<<<<<]...................]$"<<<<<<<<;>;>;>;>;>;>;>;>"
>,:1j2_]<<">>>>>>+->>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+<<<<<+-<<<[>]+<[+<]"$[
<<<<<<<]<<<<<<<<;+;<<<<<<<<<<<<">>>>>>>>>+<<<<<<<<+[>+]<+-[<]>>>>>>+->>>]<[+<]"<.]

Try it online!

The program never halts, so if you run it using TIO, you have to manually cancel execution in order to view the output.

Google Sheets, score 610

=switch(A1,"+",">[>]+<[+<]>>>>>>>>>[+]<<<<<<<<<","-",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+]<<<<<<<<<","<","<<<<<<<<<",">",">>>>>>>>>",",",">,>,>,>,>,>,>,>,<<<<<<<<",".",">;>;>;>;>;>;>;>;<<<<<<<<","[",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+<<<<<<<<[>]+<[+<]","]",">>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>]<[+<]")

Dumb solution, compression doesn't seem to pay because of the scoring system.

screenshot

Vyxal, 156 bytes, score 247

kT`;>+-+[>+]<[<];>[+-[>]+<[+<]++;>+-+[>+]<[<];>]<[+<]++-<++;>++;>+-+[>+]<[<];>[+]-<++>[>]+<[+<];>[+]-<++>.>.>.>.>.>.>.>.-++>,>,>,>,>,>,>,>,-`‛-;‛<>f8*Ŀ‛++/Ŀ

Try it Online!

There's not much room for optimisation here, because any trick has to save eight times the cost of the program encoding it. So, all this does is replace long runs of > and < with - and ;, and separate builtins with ++, then replace the corresponding commands.

For a shorter but worse-scoring solution:

Vyxal, 76 bytes, score 601

kT«Wėm¦n½LøsJƒ›WǎQøḢi‹WK⇩f↑¼,uṪ∑¥↳₁ṡ²₈>⊍₌?-₀O∷×Ḟ•ṫ¼i8#S⇧⌐«n8ẎkTĿn∷9Ẏ(n/ṫj)⌈Ŀ

Try it Online!

A more compressed approach that doesn't really work with the custom scoring. This uses various regpack-based compression tricks and it's a bit of a mess.