Print or return these lyrics:

Dea Mortis, iuravi
Carissimam servaturum.
Dea Mortis, servabo
Ut tempora recte ducam.

Etsi cor in Chaos,
Aut Fortuna bella ferat,
Occurram et obviam ibo.

The line break must be preserved, and trailing newlines are allowed.

+20% if you omit the end-of-line punctuation, +30% if you omit all punctuation, +20% if you change any capitalization, -40% if you also print the English translation right after the normal lyrics, separated by a blank line:

Goddess of Death, I vowed
That I would protect the most dear one.
Goddess of Death, I will protect her,
As I lead time straight.

Even if there is a heart in Chaos,
Or if Fortune may bring wars,
I will resist and go to fight against it.

If you print just the English version, add +30%.

And the actual song on YouTube.

Code-golf, so fewest bytes win.

  • \$\begingroup\$ Can we have a +30% if we only print the english? \$\endgroup\$ Nov 2 '15 at 0:35
  • 1
    \$\begingroup\$ And does it have to be capitalized correctly? \$\endgroup\$ Nov 2 '15 at 0:37
  • 10
    \$\begingroup\$ I don't see anything that makes this different from existing text compression challenges. The text has little structure. \$\endgroup\$
    – xnor
    Nov 2 '15 at 0:40
  • \$\begingroup\$ @CONORO'BRIEN I updated the question. \$\endgroup\$ Nov 2 '15 at 0:54
  • 7
    \$\begingroup\$ "Creepy" and "Final Fantasy" doesn't make a basic text compression task appreciably distinct from another. \$\endgroup\$
    – Alex A.
    Nov 2 '15 at 1:31

TeaScript, 123 + 1 = 124 bytes 142

+1 byte for "Safely handle unicode" checkbox

Ld`Dea MƳs, i¨avi
Càmm  rvÂxum.
Dea MƳs,  rva¾
Ut ÛZa c Ýóm.

Et£ ¬r  Cos,
A© FÆ·na Þ)a fÀ,
Occ¨m et obviam i¾.`

Try this in the interpreter. Make sure to check "Safely handle unicode" under options.

Pastebin because StackExchange messed up the special characters.

The compression algorithm used encodes similar items in the text rather than a simple base encoding. The general code is pretty simple though:

  • \$\begingroup\$ dammit noooooooo \$\endgroup\$ Nov 2 '15 at 2:15
  • \$\begingroup\$ @quartata >:D . \$\endgroup\$
    – Downgoat
    Nov 2 '15 at 2:16

Bubblegum, 116 bytes

00000000: 4d 4d b5 19 82 41 0c ed 33 c5 eb 91 19 f0 0a a9  MM...A..3.......
00000010: 18 20 77 fc 2e e1 8b dc fa 58 45 95 3c 3f 54 8c  . w......XE.<?T.
00000020: 8b a8 77 b6 44 17 ca a5 a3 3d 6b 67 d6 4d 3c c1  ..w.D....=kg.M<.
00000030: 2a 2d ec a1 31 ad e9 df f9 e3 93 d0 dd e1 d5 f4  *-..1...........
00000040: 14 65 68 95 bd c2 23 32 7f bc 74 74 eb 90 45 d1  .eh...#2..tt..E.
00000050: cd d8 b7 2c b6 a4 6d 38 4e 9f 7c cc 8c 54 8d 23  ...,..m8N.|..T.#
00000060: a3 ae 94 7d 49 b7 9c 43 f5 b3 56 39 24 95 ee f3  ...}I..C..V9$...
00000070: 75 49 d6 6f                                      uI.o

The above is a hexdump, which can be reversed with xxd -r.

I used zopfli for compression, which uses the DEFLATE format, but achieves a better compression ratio than gzip and zlib.


Stuck, 128 bytes

So riddled with unprintables I'm not going to even post the raw source code. Here's the hexdump instead:

0000000: 2278 da4d 8d41 0ec2 300c 04ef 79c5 3e20  "x.M.A..0...y.> 
0000010: ea1f 500b 37c4 8907 38a9 1196 9a1a 3976  ..P.7...8.....9v
0000020: de4f c489 db68 35ab d998 7057 73e9 1912  .O...h5...pWs...
0000030: 4643 d24a 26bd 4ba3 86ce 36c8 c3a2 2d69  FC.J&.K...6...-i
0000040: fb33 7f7b d1f4 7438 b78f 1ac1 b83a 638f  .3.{..t8.....:c.
0000050: 4ad3 4d57 ef82 aa06 39b1 be49 7b4e 9770  J.MW....9..I{N.p
0000060: dce6 3f4e 42e1 e320 bcd8 c873 7ad4 1a66  ..?NB.. ...sz..f
0000070: b3c6 0e2d 4326 49d1 e50b 7fc1 35fe 2244  ...-C&I.....5."D

JavaScript (ES6), 252 bytes

æ2íÅÖêÚ¾&j¸¬²)k®ö­º»¦eÞic(®Ø¬]k®ö¡-Zצ¦ÚZ·µå¹Æ¦e¶ÈrÖuª,].µah®Û§ifÞV}êÚµvqË«­©zÕ¨nøh¡`.replace(/[W-Z=]/g,c=>` ,

Note the first newline is a carriage return.


00000000: 6274 6f61 600d c3a6 c296 32c2 8ac3 adc2  btoa`.....2.....
00000010: 8ac3 85c3 96c2 8ac3 aac3 9ac2 be26 026a  .............&.j
00000020: c2b8 c2ac c2b2 29c2 9ac2 996b 1ec2 aec3  ......)....k....
00000030: b6c2 adc2 bac2 bbc2 a665 c280 c39e 6963  .........e....ic
00000040: 28c2 aec3 98c2 ac5d 6b1e c2ae c3b6 c29b  (......]k.......
00000050: c2a1 c285 2d5a c397 c2a6 c2a6 c28a c39a  ....-Z..........
00000060: 5ac2 b7c2 9cc2 b5c3 a5c2 9dc2 b9c3 86c2  Z...............
00000070: a665 c286 04c2 b6c3 88c2 9672 c28a c396  .e.........r....
00000080: c28a 75c2 82c2 85c2 aa2c 5dc2 802e c2b5  ..u......,].....
00000090: 6168 c2ae c39b c2a7 6966 c39e c296 56c2  ah......if....V.
000000a0: 967d c3aa c39a c2b5 760e 71c3 8bc2 abc2  .}......v.q.....
000000b0: adc2 a9c2 967a c395 c2a8 6ec3 b8c2 9ac2  .....z....n.....
000000c0: 9968 c29b c2a1 c296 602e 7265 706c 6163  .h......`.replac
000000d0: 6528 2f5b 572d 5a3d 5d2f 672c 633d 3e60  e(/[W-Z=]/g,c=>`
000000e0: 202c 0a2e 605b 2257 5859 5a22 2e73 6561   ,..`["WXYZ".sea
000000f0: 7263 6828 6329 5d7c 7c22 2229            rch(c)]||"")

Edit: I found out that pasting into Firefox console changes carriage returns into line feeds. (Face-palm) Here is a whitespace safe version for two more bytes:

btoa`\ræ2íÅÖêÚ¾&j¸¬²)k®ö­º»¦eÞic(®Ø¬]k®ö¡-Zצ¦ÚZ·µå¹Æ¦e¶ÈrÖuª,].µah®Û§ifÞV}êÚµvqË«­©zÕ¨nøh¡`.replace(/[W-Z=]/g,c=>` ,\n.`["WXYZ".search(c)]||"")
  • \$\begingroup\$ Ran the Base-64 encoded version in firefox and the output seems to be wrong. \$\endgroup\$
    – Downgoat
    Nov 2 '15 at 1:51
  • \$\begingroup\$ @Vɪʜᴀɴ Fixed. Apparently when I pasted the string into the console to Base-64 encode it, Firefox changed the carriage return into a new line and I didn't notice the difference. Escaping it fixed the problem. \$\endgroup\$ Nov 2 '15 at 4:02
  • \$\begingroup\$ +1 One does not simply eÞic in Base64. \$\endgroup\$ Nov 2 '15 at 4:46

Chaîne, 154 148 bytes

(Linked interpreter currently only works properly on Firefox)

Dea Mortis, {<~}iuravi
Carissimam servaturum.
Ut tempora recte ducam.

Etsi cor in Chaos,
Aut Fortuna bella ferat,
Occurram et obviam ibo.

Doing the bonus doesn't grant me anything extra (229.2 bytes):

Dea Mortis, iuravi
Carissimam servaturum.
Dea Mortis, servabo
Ut tempora recte ducam.

Etsi cor in Chaos,
Aut Fortuna bella ferat,
Occurram et obviam ibo.

Goddess of Death, I :/E@:
That I :/eY: :*uk: the most dear one.
Goddess of Death, I will :*uk: her,
As I lead time :-Ep:.

Even if :.&L: is a heart in Chaos,
Or if :%u?: may bring wars,
I will :+XU: and to go to fight :5$: it.
  • 2
    \$\begingroup\$ "Dea Mortis," occurs twice. Is there not even a way to compress that in Chaine? BTW, I couldn't run the code at that link. Is Chaine your own language? if so you should really include some documentation in an easy to access place (webpage, not downloadable) so people can get a feel for the syntax and see if they like it. \$\endgroup\$ Nov 2 '15 at 2:23
  • \$\begingroup\$ @steveverrill Chaine only works on FireFox, due to a weird parsing error that is not fixed yet. There is documentation on the github, if you looked for it. ALSO I was working on golfing it, was kind of busy. \$\endgroup\$ Nov 2 '15 at 2:48
  • \$\begingroup\$ OK, +2 for writing your own language, but -1 for not saying at the beginning that it only works on firefox. So that's a total of +1. User Experience counts. Found the documentation now. After a couple of failed attempts to run your code, User gave up and wasn't going to click anything else to try to find the documentation. \$\endgroup\$ Nov 2 '15 at 3:09
  • \$\begingroup\$ @steveverrill Sorry about your inconvenience. I am striving on browser equality, but I haven't found the time. (I'm so ADD, am working on three different languages ;-; once I've finished what I'm working on in it, I'm going to let it lie for a bit.) \$\endgroup\$ Nov 2 '15 at 3:10

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