Output the full name of titin

58

8

Titin is a protein found in muscle tissue. It is a pretty big protein, and its full chemical name is giant as well. Comprising 189819 characters, the full name of titin would take about 3.5 hours to pronounce. Your task is to output this entire name!

Details

The full name can be found here: Pastebin

The MD5 hash of the output is ec73f8229f7f8f2e542c316a41cbfff4 (without a trailing newline) or 628c6eb157eb1de675cfc5b91a8149ce (with a trailing newline).

  • You may not access an external resource, be it a file or an internet location.
  • You must output only the exact text from the pastebin to STDOUT or STDERR. Nothing else should be output to your chosen output stream; leading and trailing whitespace are acceptable.
  • You may not assume there will be any input, but you may assume that there will be no input if needed.
  • You may output anything to the other output stream (STDOUT if you chose to output to STDERR and vice versa)
  • Standard loopholes apply

This is a challenge, so the shortest program in bytes wins!

EDIT

This is NOT a duplicate of the Rick Astley "Never Gonna Give You Up" challenge. Besides the tags, they're not even similar. In that one, output is a multi-line song with a few sections that repeats the first two words of every line. In this one, output is a fairly compressible string with 189819 letters. Please don't close-vote this as a dupe of that.

HyperNeutrino

Posted 2017-04-15T19:09:49.910

Reputation: 26 575

6It also takes 3.5 hours to copy-paste as well :)) – Mr. Xcoder – 2017-04-15T20:04:00.113

46

At first glance, I thought we had to output the full name of Tintin, which didn't seem that hard.

– Arnauld – 2017-04-15T20:16:24.157

But as usual, we can create a file as long as we count it in the bytecount? – Greg Martin – 2017-04-15T20:19:53.197

@Arnauld I would presume that may be a bit too easy :P Dennis was saying too that he kept typing that instead of Titin :P – HyperNeutrino – 2017-04-16T01:02:26.697

@GregMartin Yes, you may. I don't know if you need to count extra bytes for each created file though; I'll need to check Meta for that. – HyperNeutrino – 2017-04-16T01:02:56.553

6

"the full name of titin would take about 3.5 hours to pronounce" Not only would, it's been done: https://www.youtube.com/watch?v=NFR-ADakI-c

– Esolanging Fruit – 2017-04-16T01:42:58.057

Can you import in-built Python modules, or does this count as an external resource? – techydesigner – 2017-04-16T07:03:15.713

@techydesigner It depends. What module do you plan on importing? Basic utilities are allowed but anything specifically meant to print protein names, if one exists, would be disallowed. – HyperNeutrino – 2017-04-16T08:22:32.737

Decompression modules (such as base65536 (which is not in-built) or zlib (which is in-built)) – techydesigner – 2017-04-16T08:24:10.607

@techydesigner I will say that those are allowed. – HyperNeutrino – 2017-04-16T08:25:30.607

I am surprised that nobody has made a Jelly answer with a base-250 number. – ckjbgames – 2017-04-16T13:17:43.263

Possible duplicate of We're no strangers to code golf, you know the rules, and so do I

– Christopher – 2017-04-16T21:46:12.683

11@DownChristopher How is the difference not apparent? In that challenge, the output is a multi-line song with a part that repeats the first two words every line for a bit. In this one, the output is a fairly compressible word that has 189819 characters... I don't see how they're even similar except for that they're both KC challenges. Not every KC challenge is automatically a dupe of the Rickroll challenge. – HyperNeutrino – 2017-04-16T22:32:48.910

1ProteinData["TTNIsoformN2A"]. Ugh why does Titin have 2 Isoforms – Matthew Roh – 2017-04-17T08:57:47.200

@SIGSEGV ProteinData is just trying to be annoying >_> – HyperNeutrino – 2017-04-17T14:49:54.377

@HyperNeutrino Now caaaaarefully make the lists... *Oh crap it crashed* – Matthew Roh – 2017-04-17T14:51:39.427

@DownChristopher Most [kolmogorov-complexity] problems are similar, as they're all "output this specific string." Since there's a tag for the type, it's most definitely not a dupe since it is a different string (and not by a few chars either). – Delioth – 2017-04-17T20:22:54.597

@Challenger5 The youtube account no longer exists. – mbomb007 – 2017-04-17T21:59:42.030

@mbomb007 That's strange, it was working just a few days ago. – Esolanging Fruit – 2017-04-18T00:24:47.240

I thought Mr. Osas have a long name. – Dadan – 2017-04-18T08:51:02.157

You could probably do this in O(1) time, bruteforcing all the possible 189819 length strings, computing the hash, and comparing. I don't know if the hash is unique, though. – Thunda – 2017-04-25T05:47:28.413

@Thunda I don't think that's O(1); I think that would be O(n!) and that would take a long time. The hash would likely not be unique. – HyperNeutrino – 2017-04-25T12:07:22.437

2I'm disappointed that the bash command look titin didn't work. :P – Wossname – 2017-06-16T14:20:40.553

Answers

13

Bash + sed + paq8kx v7, 11682 bytes

The submission consists of two files: an arbitrarily named Bash script (23 bytes) and a paq8kx archive named a (11657 bytes, plus 1 byte for the extra file, plus 1 byte for the specific filename).

Bash script

paq8kx -d a>t
sed -fd b

a (base64 encoded)

cGFxOGt4ADj////9lNl7YOLMnQ0W4tNQaR+2z8um8YSdKwDxDgFaqATIG40F0T57vk6/ecQVh7fU
f7Svr8dv1eChF3zrWq8UgnsrUO6Bn7YlE5XzoDyNYi6bTqSZ5Xd1ThnuEDr6ibyqXoLgQ2hc4jyi
gBfeJpHhdFXSRD7Wh31GccwOT7aHuw0/vZctJIhPVoIqNKEs98wfbDPvXkVeP/hlwUnBJ9ixVKk2
Qn6Yo2XOMdRpmqDjXz/acpO1kWc0meEbNGW7CCJiYChQdCFpUdMeY3gE94Dkz4WF+1Uli3Sn6r4O
u+NOZNQVXwugmAYzxeDkNH4qiyUYvC7e0knysiTw058uyhp7YoQKnm7jbotT2OCN+zIfR8em5e7k
a9vOZ4czRi+nxtxg0KEgs92QA9jtdpwiULTeSG1j8xPr80k1i52yxeBjrMUtH62i2UL2/IkG9mtV
fHA45Katd7Vqz+4W2mWPAaW5NgQPZS3zb0omw6HIcvdruNq+8JyCxy6XpYoYRdCWtkAj1S4hvgB0
6S7SZBV8zNXYeb+Ei72Z1+bnEwFb5z+1DQbayjJ8POn8VVkXmrDuDbNeLJyGhCLHtxMVFO2u3Ik/
KqT8RsIz9adx7VqfLFhr1kOYSISuFfIb0AbtOoj30BTc5F86zEfCNTQPNyKFeIIk16lyDrReZbl9
ub2aS3tfCuJIrgKRTuPPkoFPwh/Q6mSephO9y7pBvQxzU8DkkCdOxe21hPN0XVHW6YeRJI4TydZj
pTe6U6l8vrt6flaeKycVOxTVY0fn92wIeJ4PtgRzrmkGGy29q7y5WgtrItAmVGjff8Clue1s5tVo
vD30cE1eGg2kI8KidXm5qKkZEJRjITV/FPS/G/iC6d7UMZGa2PErBg/5iKZNb89I3DKABsX0lvjg
8Ic8vsbBBQ2otc2RDj24pb31IKTm61ZhKras+K6j1RT2uPvkzgrHZvo+w9VIZJZnbx0RDVQO5Ugj
pW94Kci2J5gc+G2s3OVRmN3vcAI4xPueWPOhYx4gj2CkARGvl/aQ71eMWfWSClCbt+zQ8gektfAb
CHe9i2fJWtTdNwRSngSDbHvOe+yptmiheik6iVuSfovJ9wz2KdnpqFu7fbZLOR7nTMvXdRLjxcNg
aG5aFwcwcjKw7zKG3v20peWRCB8JUF/tAjyrWiy5GTYsoV0Sk2E63/U0YO75K+q14oY61Gcyf35h
dzn1BY0wkEzs2yZ4uN2cq8XJoHu7O15zJ405s4epxn/LCZ3N7/EpG2RA90MfTwq/woEt28+TGuPj
xt6Z3TV1ZiUEF1M+4Ty3JLUl52VC8G54p60Y0LBRhv0edPJVufP/NkttyJTWuEyUAyKl23z45/MS
EqHIALyeqlcpyEaGQUcAuIxPd/ulW+K776EqYmBDQB8BoKhdjNDgEugBeO1jzp2PkW1RnT9ar+MG
ujehXdca0OZQK+Zdh2wim1DvrsRmoows089n0RvyhB2/rGQjT6yfJDsbhoDDi6e2MlxAE6aKr9Ps
y4Yylkj4bO3hKQC5tnxjGu9iSleEFSs40UF0FQ3qh2hL8N0HBa/uuSeh9lIupkK1OqOr73kBu9Y1
Io6QZH/cvUCPZabtXE1D8DNHkvOA41sY+pAKrLfOEbkIM3YAEvc1lUGDMsHtxVDlaC4FJrgTWy5f
KKXw71kJdvcsPbIR5iiEe0h1dTAaMkXWqE/cmSJEE9wVWboyZP8y/tpWbgh9tK7o4QhMEwrABwOb
gU2eeT7t4Nan6lrUE5sElaanqafyOIBFn6EkxN7rExeQ9Lk/s+jvwnPPwFcVIU+lKnDPfg44m93+
Z+yMcO0iRH9r6QIfOlhbHSU8Gvb54Kel2RoxagpwWyyY3IsmOfQEdF39sKbM4/VbrSlCYbGvgXAI
zK9mPLmK7KgJUfDtoU0hdbYMW9WfRJMG4CvPAd1ryC8W9G4+DJBT9oXvvu5+NJkAir2V/8cODuCN
Tolzsr/OHABdpE9NFOSHubsjLbxw0CzExUZGMazLu0q11ML6Fl69GQlsD2eXLD4CMwHODFMSWHlL
FoXDXLN21dZmG4cjKqDVU9RyBh6UNLdJs8Ji0fp+94egCfrS5XNPf54XTGROOMjV5+sugUp9hamz
hZJ7Ho6ALoiuGsAC+NXCDHDMEcYlneJhPew9pxSYuVTwNZwUYj3mwep3gD3voCyl38SnAUPyoPIO
y86aSsQWVC9q2bLb9fWxCbvqNSwBxEr+X7oGJI16I0jdQ0BtVWBqOhhDAuDWvRyQwufj08+iqQAg
H9uJBsXw6JRQHZft5IU+yC3aLaHo4foj9TpnoQ6cAx4kcBMEtltpgLnbIw5kHPHWuQpuzaMHX7aD
onys9wlN/h8HXTsoayh38H5HmAq+T+bGH9DgZJq+JvLQgMPDGgv8H3SQP9ZdhO4uSYQ/kHXt3TSn
3sYNDMgc+U3hvXiAUjjG+0a43C5FzLbkF2yYx4tFPSBhw1ZrGSQi1iiq1Ht70y6YgBOJPwXllV9z
OmGXCkOjrgCT0QHhC/X9dI5EJadjMc1E4uY7+4z/zEGml4m9ojPemJctM3W/UjbXkkvlawg8KAO7
rLXKmEgfumqOY25Iyri84yoLwa8gK1IDIm2rLTXAqGyPwaISM+OcAG+d/BkonOhJ0GoIM8cpPdBC
YtwdbbLmLUrw/pdA/1nCzW0ILwWkhdAXK0yBqJuDUpKWCJveFZbiL9l+jaBHGw1LHC68f99izgQo
N1yK/vQLNkhhTGEwgSGuS+qBp4zqzho7By8LGG5ijhtTFsh0Jkt2wlERzsV2Pv9JNlYXjGf9lVLY
Z9ZV95G7n6UvD+s8ESXoMdHxmxUJNajzgmnogyxUyzQ2yaqS2FHfPvt4jcLkzDvo59NDB1Ez1zV7
Tgy7OAll0YrYjyt91r/wDKTKF7N1bg5vzGBL8dvBQGuQRM3zuhG3j+6UfU2Sz5Jo7baNyytcJ5HK
ozxpmsdEPy01tCADWJHnYXYrHarttTddTfCz0aPs42kLdE3Kmi50NesfGwXGTR8xN0+opzdt7aow
WZeTZDqlDDIJ2PTmFJs1qyRQCJYKd4Wu+1Am2uK02xIlS8hCzDw7nqOgHq4sJiDCJacOSyw/s2Al
a/4+boV82dQI5IJVqcoLt4C2n110e98M932cAmPInTfexLWQr2q6kyCfNx6E5uk5yEEyjkUv8AFH
7qqm8JC2jRduu2/ToV7MAkdPAp7YtMha9T9t3SXTywE3B5x1/5i3YY9YytZe5hqhjQNOyYT6We9f
IW0Fyc0nPgZhBq9ozYkEQA8mBeqI9ruXqdzw984DEVHxxiffta5TWD2CxT923xInlytc6ypgGOdQ
dmhAzz+uSKktQTLRCWWO5+KiA39chP080MtismTeNn5qZfTvNj/lEAkFHMXNvM03LR2jyYvhYs3U
FrDReIp/5MP+JRzpnKn5hEpISa/TtiHVJUF6hBsfYO5Y8fn+p8huP47nw6jg8GXyrhL1pW8pJ7BK
R72Gpf19HooLi8SILug3kpWUhxVIw6DMuklAmJbT6+SGjMBwS/V0pd4l5kQ8z10WHanE002Cnm2t
YtNm2MOoJ2Az3xdsqtK+x/n6sxS9slegXoZLSE0qIAYsHGluMWJVHa9iAOu4szFUioxvvUxcUgA+
rDXt49LKfjaTw17WDOOCiatpj3/SaGH1Hlmztvfj6hTxVF/uSksv7+CFAKzb66p9ADLn/zVJ7uG3
c8X5DYuKXfwmg9XLpWgGDAjN7Cd/zU7z56c/cQrWl3gej4eFhH73CuRRWc+8vQnTctSenQnBVrtf
5LsvYgSnB67ppdyuErA19TuKScTPvPFy9SN2mdvP1+4R53iUYIz56uWeRULJD80eazOOXQmXz/7k
+0XYeXlDviiyflkluupMRKw+FYieFwCrFYaVRbZlbvciCKDJ8usAbl1QUcQwKsjw9L45nG03AXEk
5cV1TOLb6Q+ZqWwd1aHyGaKtlUBZSpSBn60YE86bPeVLTcEymaqC6GBjq7RE1Amj6WGSZgZlnDH/
9/IeFVhjnm50U2p2xK5FL7P24s7xAr4iBd9+ljAnw8B4BycV2TfiW89w4LUoScr2fuV0/pAscAqL
q07Ziuvx22oyWyJ9dzXQCfWPDi3eWxKrlNbit4Um9v0sV+26bzgQlem3NPokS6VgPlnIkGxO6cs8
PMNpILU2/pjQ1V6v6v5eCsM6gucDHIiZqwwoHQmMWS3HHCpDoTfVtQlZ3Bm1KYMr81fgfBcGQqbM
y4ZVqCUVxkNp0G0BR+ceSnn+FcxAbxyWsc0UvuyJgX7KwViILbcd96lbkoVe9S/qzrXxZM3NY00e
mzO/CGcWMzoubrKS/0oUtI+tij10Zly2GDKFXVm/soHzyNKYIWDVGN+Qep1Ssp6Dz+taVrDfBmWa
DTPeX/4NGs2nEIIMYjnI8O0wqHq2e59eTgXeyvbzsRPq5Q0jVRFUfShuzRJeX+CZlFsD370qGlXV
dBzqKgiErsIrohqzyFvaYVusZ01Oh5H16mWfOxCDFPRpiukEcgjJ3KPpONiC+FCmqXK1jP2HAoxg
mFLdJhbV/wx5ebnSmanr2HDCSkRikIzqPIKoWXGBgHIACFruwFU8v+TB+Pv61zkyuKIwS8IMwhEw
HhzTIxf1tKs7Wf18+BH0uwpx/D8+y49bvaxtE+9r+bJ1lnqxG4hI7J1SNwGopjcDsYRxSfYl6QlA
6jvcKk+ummA6PlDp4YvXgVrI3uJsiqN8dWi0FzG1WQVuFITblliSeDNuAGQvS12+GTrLRzoRqty5
ZoojxY7iJFrj1XtlUeIJci0lOow5Muy0/7Y69zLXec0COBh58kMqRttwiCBz8X25HGrTYxo7vv96
z13/I3ae+XTW7Gdjz4w0PxeKXHOgQb7E9hhNM7EbanBE6qvgDV8yKrZwJ/mJLFZhzUl8YZf/JaJP
pbQoEzh7yJQdYjhKCxbYLDPmFKHcgcjeU0I2sArEDcBvFBoFKjyNwWPGB1ScBdPjRuEQW1H8RJh0
B42LDt6vnmT4FNAfoaqkJjLmPds6ya1/I4lzSV1AZei7i+Ojig1U47OdZlbn6PBUCVdeWICqG8ui
AjdBLGqsOcJFoTdLxs4ylnMDPIYY2ShYqOpPFSEKERjkj8qLDxJai2I48BUF6mZXgt3Juod3C8fI
17DZNKbkKraqhWJ2RLVAnOIj0FNffU+4tGZzM2OZAGDKXZ2mks2CAU7UqkGSFqedzDxX9YTv3p4W
VBfCLSdEK/shbvcCoCkCPYIw0S+PZR27/ahdBThsU1gIC0hJnb8ZBoTslYU7Du78qmAK6ksNN1nx
52QgJXUptB4olLk+Oeva+IRyds8WJaAB7RFcyxqx+Ys1TyIeyl5Z/h7IyjWAwFHBHYBAd45AohYD
f1mQEbWxGs/iPx+1QB8qVVMr9QubwM5f//g6m4t0Oz2Gm0eqHZSUq72f9HXbeFQEFSRpPWtY3UMk
3iNxv+G9/Am4T1YIN2xPuj/1JR2Ksr0s6xnh2f8Is43zTK7iGsqj/6xHv12JbR0EkawzjEC4sSpd
tzMC3LgfHoubVE9teQdVn1g0Pa0PwbTJTEfqLUFLIm1yM1GAdavEwBtyfACcwVkH0m/2OIcI657c
oa77ahDgERrCXOCb26mfLT/bav8A6/EyGH0ap3xD/8pYngniYnohotLTDAStZZkC5/WDDGUT/oB9
BMkLZUb3ziC7G+H5O87FRm4fzxETewWtr6oIIEHQBg+2NkvkfCITTbYCksNtOaHW/Osw/Wow3sSq
44s3lC3wCrnLfsLf7QXxkfV3sUumF8zc2rY9AqcpKW5YBscYzLfGm53QFQY1SkuxWOww+hG6RoUv
bGTW7peDmlUswOnZ6O+dv8QUt/AUGRGKfNbPsFbbX1AsntHuxrNISXrD0qT7lpcfpi9yGzv/nc8r
/fQz9L4GC8u8TTSJ3H/7OZ+c/4MNTMyh9PmNzwd51vlpIeEoVm60khIVJlty5CTIhiqJ2+JbKKMB
znQiegHHJYdkw3RxnGb4IRJj4fuuIVrxa+Fh74UPc6G5G0rlb9WvWNQ9wdxA4wLZCkbTvWTHrunk
iOqt1W9OZ4U1C4LkSaKVZdnAmpVoXDA0aVhMxEKEEF/n7QrFMcQAqm8z4qqLuK8LYWtrJ2BNbCT4
zwHEArBJ4UOn7oIbXHrHxqX6rbvkugyLBPlWvbCuf11qIp10W4KbDCbT03DNhY6VSNBKG7UbEX3Y
0A/IKR49XFcV8G+EpgmwV2QDKrBk4TmhU0a1UQFl0M6or+Rux3AZK2pw+Cav7YV4YYxPCImWu5vC
jl320qmoQUveFm+qCm/3soqdPo/lNmxucnXkVfVyW46DnX6hUL5/OcZ12yWGgZ1zcS2u1aJMFTtw
0GSD2royBWN1ZCu49Os1SrB0LHH0DJ9Z07qUKf7IOyIWlaTQFXoZrzlku0nsn1KONn4LuDQQl7BL
+INffYBNiDiVKT0twVVHgnQyb7EGVIDIMeAFbUrgBq9eUUdY0uFiS4jRNsJ885NlSMV53JN63xj7
m4vyIW56pwigz0MrTfwuLR3uGrunKSeZSWReaDawroB5E2QERuPb63lSuGsqC4k0px6cmSzKCnCY
KSOfEwOETTcLpH3cADD7+K4nao4yN8TdWpJTctpvVI2TfCXY5o+BhVfOLuVFLkMOGA4LiFX/ShFv
W4G3kmr9CenHucbtNFVjtRdiU/6W6oBMIr1zowgBCYyzELwX9x6g0lsOURmxKTDTiQitI6Ziayxj
M5gMj9dX5fBWmspN1kims5xftvIecfRg1wzsKLgt35qEvCUyWNbm7m3nLCgazBrOdjS2u9MEGQMK
6YWFJ91bz1gs07TpoF4Mi1AT/REV9vqihRKHXmUuEotKE5vU/KpPAt1IfXbPWrx0BS/MCPxHG6Za
jmrGdEi3qJ1h+U0U8IG3LT1oPAw+bTF52F0wXf8ZEUJeR+nuhCWz0cyfP3PDUO5nDenWCbQnm3ut
ePWn5Emmc7+97WpAKCIvoa49PCi99sMXqjZHv3Kz9ziYpug3I0yMyRI5lDjzrPPDkn0XaHWEOFbR
iC7g2RfoG3FVcZzQAOWqYc/AhX/T0Uwr/xiVhexdhAKRfEH2WO2JGkYXhDc2IPKvyc4MnaCrEKvc
Y4D1hCbUowQmzxj5BXBZV/D4poejd6mR3LAxFlRqZg/2uThXjFKwBHONHitZsIjC8f83LyghidcQ
QzAx1pJUl0K6Y1OM3owyTVrRCeznObtX1BLD5ghmj3aNqbxHGcToPz6mxBaht1HcjX5J56gxq27o
4EqXF7z3f31IqRZ+cVc/4mPxhdytesyMaUrdCI7MeKaLgQSiLLmvk7nyindow7bUUBcMUWkGv7jZ
aEC92hdsCocLphL+MpHNgEIksrjwtZA0boWcu9c9AAe9TPrTkHOCpyQ+9S6Aud3ogIh1v9MMnHo9
SwN70oqkcQWsTAP9xB/Ct9Q/6Ol61Y+VdIxlBO4G9oLpPpfVum42Io4qyLmt/hYs+LDbrXg+3qJ2
l/Ft0okqWW87qHzt+VGyfpiZelNVuIqjGjky2xnBELGkgcI7u5yHa/cnQJXOqOADbXqPhyeN4MLv
CqHH7pHr4HxlktPP8yONgVGvm4E61HO0WKGXI7zzMzgm8TwI3FOB0ePyhD9xBPpSLZc/gigh117/
fUSaloywDwWZYBw7Nn4sSLYMrG0ZUGtXvF4plVKnLd/h1PMko4Yd5Uk/YVZKxYjkpJT+tI/M5Zyn
LlYwX3suLA3QdhJJdGfzV8GFIygk3uLopJ1QnrnAAgwIP1F131x3CHIYRqMw5m/n84JPbSudFho6
oRuocm38gECJA2Ca5m7/3WpERUUhOl/oO3vXbuyw/gSY8cpAvwVQwFYWrt+v2sjPZxD0FIeNeojz
8sZJz6r1bJmhG/kMmAgvJiQYdireyq4ZkAB2WEV9enc6bgIm4ee8pfLj5wlITrx3aHCLlLw68efD
XtFgdaYX3e8KFBmLEqdFrpzI2S0ruwLqY/7UqTKm6zzHqqnCdCQuOTkSRVye1IBCo/rshASU2NW6
e1fEkP+c/q/+XgbsqDm2BWCYCRNkYJuahgNuhLcz7YO+NbMLESKXDvIS6czVH6W5joa811CNmxNN
LwnrYtlLLDlOBvDFhSSHvbII593l504eB5EdgKt032YZ8CuyQEv+8T81MxRHm8+Iw2eFmsRgkhtU
5iTIZy5RFqd6wWOuMQin1rfCJluMx7M8w+4u7KlkULOBU06Iu7WSeFTjZ0v2H1s6H14M1FaRgWba
pInGNwRVKm8cWetuQU/HNSlTmKAuFifCV1ZV0gACXxXTFyyn2kUIvbblYOAAKs7McMELgGZ/8f6p
UorzzgMVAJ5flzy7fTzf8MR57DllhDbOxZFQRPVuRLwPkp/uJjkdlu8pV8K6X0Qo0wMl5iFUDA9v
vO9dmarOlOSpGQF2Vk4AhJ1q+JMAMXIWSxNO34pnkAVjO9T+ysvhMhjBArFO3GU3ndZRGs4t1ZvZ
HA/NoClTZ+jAfGp71tbNQ2kC2C6afvjWztV5w1ed7ypcOMtJ1lcK1YwpvNmnuc6mP7PtVIHl5dth
RSsuknT8iJTM2iWGTe409SpNXDXTembsnXcDlbdSUv+4xzPWlxfnX6UTC9/NSJWlHCB1MUcBIuFd
8gpd0DabBJL/LqvZCgwRPiaAmY9J64h3xsbB4EtJdPZHeHxWxlCUPn09DslvBUtoSaw4JfToHlKn
ES8xwrgrGVocnO5tIlzJ9N9ow8mRLRG6ZJY21BP3GxDnEvw6oUXMve1iWAN/API9uR7e7U4cpS8y
Ufw5sE9tm9vC8RUx23qXLgKvp4jkJNT/WR65KWJkkFlQgkviHiL/USIC/5zTETgfdONe00Uj461O
vUJJbYxqOi/Li6esUPOOVbYW2Lldc4Rh3WCURBEOAUO2kA7krxv68GrFRgoyX7mwCf3H8t/0Mmqe
D3+05FtzpMw4Oa2JlxiLEqR+18IsO2O8wKRN0c4dznc6lYMAxhkwEDw1uwElGcFirTlOEls6bh99
mqFPBHlP8xiHgHX0iRXgXyzHlH/Ug+AF7PG250MPYlI/o6nYLrHupz3yqHvT0o6mqhGykHLRwwQy
fSuxr7p02gOGRrzs5BApfjt18dJkXofat4+e8JFGBP9NjzMDg/FHBCBdj3/FQnT/vyblWRNLA6c/
Io5gQx/S/cQR+wzRQ1JAFs4pa3zQZ89+h1JtosQ7mbK5UKp2fhuAn+0eShZtWip7oOggsG5l8JwM
fYHE3+hYbsfEZxS/0Z+iFByoZPwCV8FSX88iNLSAXQ5Z1vjPz70HeNtAxr6neZ9uW2xvUylGLcky
LUk02pdhb09jY5LKWq6OYDYHCLR1zr4izkxhLAXTQvanxzE8kFCO7KokTsvsfga0duX11rHBV7Y5
XflmgKi5BhZg3zv8krHnFoc7g3quDmuVLUCUC3ab8c3l7hFT4hYBgmpRDr29HoD1wUTpKzmCZKqF
pRSJpGl1WneNr7cQo1CkXT7u4xDaYcvwFP2jM+XY5rKxnBFSBlJ1gvffjB3D89d0MlImnCj/Swpg
8PADeYfkKEQdxjG/AnAFukQD3ujf2puLXd486wrOH3F7emtV5OgPSqVO8jYdZFJ8L+HHSoqVsdA1
jGgQC2EMpyv2EOXJnQ7dcuABjHZemIvxeXgABP4MwmCDSvfqKATJRoxywBBX+vziGk9ZdH5+E5Xg
HCs0rAYWhbiJWEf2kQDDXYuDljJBcC9uPeQ52D3knQHzFw5A7wAesywF5tOqhUEIp31SnuR5pTWp
VgXkBYPKr0tOvtXkwpodU8V0dqZO7v69MkhkKiwqe6fMXE+nlcE6NkLeJqp3lH2ymYmYMNXYAfZP
8+CLQasGgM/qvO5zUDnSGmHNLwDk95g17G26yc37ZMBoBsSM5/ZdnNeBVs2Px1S9A25WNlNIWK34
uCX6s+naPcZVcDsY7Wt5qKitVJNgqueIoWpLfqcyivannn5I6/3+9SNYzatVb7HKsK++DUZBn/Mc
MAKHaGCOpICj5XjDwmJH4BiNNo90WXFQ2cCsIov5/h440wQmkum62bM9tLkfrRSwXHcNzccj4lR3
gXVjW9lerj8BWiy9WCUIR4qT7GQTrRrhs2hw6Q3SyJb/lCLRQHQFhTm4tGizT3kvjxomzFl1Xo+p
/icmDiM2t0mvUekJydiQNvulJAvdrz6D8bsotPboAanM8Iefxh2wiZG4Toy2HflkQYMDgQ4RP6iT
j2doQlhUQsJn8YLBWZ7nsVB962qKFPjO7rCh5hws/IsWVngLTHlmoHooSsghi3vCQEmLl15nCFQm
pH6qhZT7tJli/23PPgz/mqnmpGDg/b2fCtVjgbT/Po35gscAnpsmlmtHZfv0awDGZKGyjbtBw6DO
9Xutof9Xo/CscryzJ6PbtJowUlFc5uXg8ie1B6rauTUZTvDcYUtnyHbH4Tgoj35SThdVpBl2AFRA
Fzd5ppie6AEA7NFNuxz7zL6yvYEUh7qEBk7hSy/GDK1Utk/UZ1TnfKwUIH7NK1YAnaZvg8xJiLuo
jEwzLhyW30TMn4LsS4y8KQWeERuXPujK5xRgCqprQYL22LrjqKtEapdsyY+izZsVxAlZGU/WahGW
7NSCmeQfbCvuurAxxcMPNIpYKKahEYSGgNG7lTRP1lRpssnztwXbi/SZJelbKI0J3GF+B/zrcNKY
8UgR1w6YgoJSxL0Z+Yij4k0NzyySfRlzsdJqnmhsBR0DbWhbdg7nan2tGIWAM241CJjko/oSi9dU
aS0azbIdYRy10RLl6etaB4Lo0DHF0+V+OfxH6PIeIEhTCWpMt8TvyuAI1f0LviE7XiSI1QD7zugF
hg+pNVFkhr7+IYwyxymMEvNslDQYl4W0k4yu+Uw63lyuNGUHJ2HiF4geAkG1KeF8oyWstnnyLKx5
XbSb9elLI2uOfWAOF0rzOsi89qMh+ARRaEfWz7BXhAYsboOWvVosp/tgljyj54X4gM/Q/JBxdDoE
1/LkNiLtyEP/azGIURBviVdakoI6uZEoL6Rrvq3C0yqj/akqb49Ajt4XslbDJAH+JXZDwQY8eGM3
Yfmujnnmji8JG00BB4fAb4tVoZb8qskwu85n6ota5IU/42iPNu8kbTQgKINy22WfrQ4i81m0bgPl
W74AiIBNbxnruOT7Rr7q47/UT5B4cB/Q5Kd9u6B5sS9Pi9vhkgbPPmxTUpOPZXCJiA8R8QMZolLr
19SnNtUL+8LHxodcAky5+2XoO3LMvOaYoa+P7otNjDfKWXbrbKASlnLoqGshKcpC8uDIjqvx/ktm
9VtdXlaoJNgeS3ivSLqlRccRhiY9tiHVrPHX/SozscUcNPPBGuBhjxpQfqCtMQm8IieC71CA5dCN
tYhpBpkue2VzC/KGxb16XE0y5APWM7IlVTM7VWeObZLBR9xBp8cV+RxlkiUowAeiYwNwn/a2oZZQ
FI60dyHv3D5E2s0doAAqh511E+xvLwRtHuPvtQCPEZZEOZDj1qL3DGUuXFFIqF9/M90BOSx7j3yz
YjijEWDs8SGqqe3h9HEiOT5HlvmravlpTiKhzo1sFJAKOfvZbv2SeBdSPdRxbvEoz15nA/QPIjqa
UJb/VleVCg3rYTzNCndEMP52aQh4++SMCb/brYiBEA7QEXup8MmFYx3SEaZPAVLeNXI4UTWC/kP1
rHt4dA8M91PpeyTBcc1sOBysCbkbnbenBU3pgvHfzaePgte4s7ZninHJ2upG+ENsPzs4SKk+D06p
FgjtEWcT+D2REMnfvVrHQdjRaolwjl878KTgf1toPgOKk2Dtmm41pTWQ7n3POcSac+D5+wX/QYw4
qVPw7uhH5WaVNhn3PdBCSY8yt2kVRyF5mVYJVz3KrGoZtFaA8S9UxGaAdor3qVPGPxxLkOurM5ld
k3FxYDLbX9uAxS4sMeOoh7S7M5oAnkPWoFzKsnaDT/8coHc3i4R9Wop2XXvAGX7RXPwX84xndVH3
9mJwJM6qQafZy67ZZdGm/uqwZmYGfRsnHOXYcdhcQbAKnwqPK3drg+i+6LlYMxEwTY9ja0X6Jw+x
kmaaK95wj3wMl07xfjaqMYyFWKQ/wyRNHUZbr+H0VEe4Mpfz393g2kmVsAZFLxN80Vwj/QqDL7E6
jK7Ss1mOcHs7zf1OE946sL3QMty0SCfkdNxfrx6ZNg4t7RUQyh8dM6OyPpsc7PxxjDoFDl8GGl+k
dh1v2H9etaTD/wElqed1jEBTB5WltcWNgo0nN3QcPdcN0eMf8yeVUl1fWDY3xR31M5XV4YZpMtWG
uxNmSDkMxIaiyplHNTN0MrVj4B4tT86Uev7bbEc7qKKsGgAfPKq4Ot7SQkkgyoLD6IBqiIB7Qns6
JZZ1QB7hXGYiBVrzZwqdlQ79RkRYUcACuqjMBjwCtkEPsdRUYIEGIjDpuoeR+Xg3JQBgFFLvOVzk
jUN4E412isfORC2BkcwPrDt6HFDVNLtsBfVsdvX1tUgMMDs5vn1nXiv/BzL64+FH2plCGVCMPUm5
G6eSSYF2aE3aLkXwPUBIas3/9Q1Q0TG9bBLY2hNaR5tqv43RMEN3FxnGpKMVfNcEL7RRMIjHQZMv
hDf2jaw2JFZZq2Xi9By2PzU9VAOkIJkN5BG1KwPNyDMmmwV2prT+e/QJZbMkIIos29Qpavv0sVlw
jm4DySNLDZ8RETHWjWtimW3yqyVfcJMTJbMzyaLiUTwiU/xOy2OMIlcs8f+ZwEiRePtv/8XmkF9T
TH7qDDBAwakUIZzhOB2jeS/JL3qRMyHpTBrEI56yq2E+iaFlR/oHTmumn/QcnnwbconZX1tqbBjs
wfNGF7HIMUl7AdbO7X0D6P3oY8J4rTFdiGbX+jWsyX+1FmWPV4VA9H8ay2im5wI/2HJEOxfNZS3D
5hiqXA9vZAuCBEBX35BEZeyBAcR3p6mjxShZhltzN32+o2ffgkNCWJyr3ppXaBn06QFL5NXIOMcD
nrjBwkNiCc2ytEmeOBNNCq/noW16kuS63ZQ06nHZz1lG99s2WewRM5xmomBtFvxroE6KMltE+MqU
Mn6HSCzyWnhyUU9cwUJ5Q+RG0RgRlKoztkGvbIiMekPwdlnfFqbRP6C06AMpWJdByUdIEEauM7Qk
dgJUXH4ihsC2d+hWd3P8FwavYv23V9ESLD8MXUriKZvILhQvdIJ+Fvjfq5WFP93UMnrmBlrwPA6b
qpQGta8viEnulxcZ7oRPEILb6bTJH8OEkk9eMUJ+gAMjbhRTYhodLklgt+Pc3ZGzInmsx3joxGG+
DBGDbUfabMHQYsIdyQlCDxtDUwMwMkHwIYZZzz/flps8LIcvfeh7j413Q9rlhGDOY7o0Hp5pDRJ0
s3kMIkJYwnCjcIOWgpxZsip0NLTZMqkAwqoX1rBYRNKZJHwHxmJ7PGDUZnA5f9F9Rv+pjhDpfcoy
vesNMQpjOaSPBhaueJ0ZMfAnW54vITuryLewC+BHx79DsLPszxd2G8hZA0yCS12JKsVxbtauwTHL
NEZvEXTwra4VsobiOvbZvCgB7gYuZhkzsFUIJe6GusAReKB2E8MzlI3mhPbJFxbYP7hTNCkmiCy1
KxIVPWZM9YnCV2gptVApPMYXQqn8zoYmDL6QULw23S50w2EguYmEUAxEHi9S4c5zuHes6kRNDepX
rzFbpVIDLDILKY5hfnUxdwpcinvnDFVBg6sRwzU8NQBcrVR8T3lbeKfnix1+Qr9EIFo/31/QSwqN
RSD1lEG3nc3OLxBPtycfY3vJV8ZpweG7t81JAYErIlwrn5PL7hCxFsEO8ZUEK3mfx8+y3JjXJ4S+
9jul4cNBamhLHZRphEn5V2uc7m0gzIOet7GB0Jy6AiBN6Fig625DVvG+HGOYM9gaJHM9oh1YV2C+
ICtHzLaUFmlrRU26kKJULox8ggv+caQAL5j5d8ZmN/ehTBEeok7TDcYu36i8/N4ZagW60Ecz0Ol2
bG24T2briIW/fFZoiHtwUT5cemHbalAuqoGvoxlGhaa1+IZeuLY+DYnfxHRV8xJLBSsX3pU1IBwv
k724tKbNjBXPDOGOF4/M54Vce9rAflpcihFIcXGaMbvO3lh2ISekIa+obQL8yH/mfoUb0zjM27ch
pEajiihwoFFpgjw7TKIIPx39OAtNTAgr7ptLJnHMv2cHZE5JuGmGhTw0QB+RALbaWFC6N1kKZiZI
k6DULt/1z7Y7v9T5lXuqYHEIY0BqtVA6+xYRALAgajlVjrAvgK5uQNKeiOefTqEHHXFs4VK12MoU
Mhm1Z8ndPI1dfhKpd94JgyOvLr7Cv9zn0/PyUFF/h59d+bPGJjHHXww6K0Tm1wdFYXjowZcHEsRs
HyTnnqkWMLQ/d/J43szFFfpTG/Ij3aspLrEqmj6pysSJRLJn0S6Lgqa2xUlVUZ0/Z8g6FszJ8YSq
42H6rolsFumXc1LkO+wmzYW8Q10bWZ7g8/m+/SzdlGmOXyDMV7Kuy9itLarhtLCHOxejj3XpKf3c
fRUkZ1efzjA/QdQluzHtVmxPPzU56rxNy64Z0qU8/wu0gruPvBAhleO407X3i9sch0DPHkvu/+Oa
61NM6PZkQnJiSe/FZSWHdb7MN3iiOxMURtzzu1KeRTrvbbAZuCG2Uj6zyMAYYAjJ7lSCQUFpSTMf
hSo6+Zl+yydTNnsN862juJL9RJdnwKpPrXEHJau1Rcmo1YHn+2JmSa/eUte9dpyGqW9tNzzUM/pQ
dPKmg1cLsyWlp42YAAyw2hzVRx2lGB1YCR/SMQxLFZqOxWcwmsKlzhX1faFSqj/EVjjHYIze+crz
SRWyHX7R5Z36x6oY8K2O5BQZ9XK6/eeoCQfsyQa6Bp37jzJQde5kjQfxeuPoqQWsv2xsYbQvx4mq
Hs0CRcAh+lmJuQN6PqrVbdXGMa1/+WF1AEP+ReBvDrEbbJxllqyv0jrJR4twjM8ajxlNkiuH0Dfg
FSOJhNPdBOtEXmjClW07o+dv5bc6PdAtfjCPVeu/rkJmy4lRTTBlPMN4adSQNuub4O64OxB1SDIQ
1sncK5zZc06dTgFJOoV9WKd3fjof39PKwJ5LfiSFjqmu4AJHGgRtr99gHIBPXjdyKx66SVyFa6fO
SVcFoW2N58UwjQp6ypGkLfZ1iU3U2vWoDOA9iA/W/bXpzgEVPi6pjatuVXUYs/EGUGHVUJOkHLBc
eykVI/rEh80DMQTO4heUlFpB00QJFCurJSe+x1MHwuOOHpICd01N6+CmmQ2Vjbz1WzLbtghFez62
0Gz2X3QWUpE2xYYMzpTEDhrFKlGxcyg/2VwDgm9T+PH+1rDHLFJMIoAEYgYM2II2XAP64+ed5u1l
Yfxz3+ooBElCqhhGT+Njf/i4tU4VupKEM1UxsN3zTH0KvlZN4zR930wTyrNq6eArBLNe6PKQpxln
PXSm0sTjCgYLGdCIvGJqfcECY+XLcHOYkOMMgxviDUzZDERP3sKlNGh6EyYhaLR/bqcDkhiXCTm6
I73a0K9oh4SyJNOn8A8Lj6ZTAmw1LeRJ9dwZK9Y=

Verification

$ bash titin.sh | md5sum
ec73f8229f7f8f2e542c316a41cbfff4  -

How it works

The first line of the Bash script – paq8kx -d a>t – decompresses the archive a, redirecting its output to t. The redirection is required as paq8kx prints information to STDOUT, which should not be part of the final output. Said information will look as follows.

Extracting ./b 26926 -> done
Extracting ./d 307 -> done
Time 15.36 sec, used 1929185730 bytes of memory

This creates a sed script d with the following content.

s/T/methionyl/g
s/S/cysteinyl/g
s/R/histidyl/g
s/Q/tryptophyl/g
s/P/phenylalanyl/g
s/O/glutaminyl/g
s/N/tyrosyl/g
s/M/asparaginyl/g
s/L/arginyl/g
s/K/aspartyl/g
s/J/alanyl/g
s/I/isoleucyl/g
s/H/leucyl/g
s/G/glycyl/g
s/F/prolyl/g
s/E/seryl/g
s/D/threonyl/g
s/C/lysyl/g
s/B/glutamyl/g
s/A/valyl/g
s/..$/ine/g

It also creates a large (printable) binary stream that encodes the different parts of titin's name.

TDDOJFDPDOFHOEAAAHBG<26886 more uppercase letters>EHGMBPGEKEJDAMIRILEI

Finally, the second line – sed -fd b – executes the sed script d on the file b, printing the desired output to STDOUT.

Dennis

Posted 2017-04-15T19:09:49.910

Reputation: 196 637

Watch out, Mathematica is coming! – Matthew Roh – 2017-04-17T08:49:13.280

Sorry Dennis, but ATaco beat you. Hope you don't mind the re-checkmark ;) – HyperNeutrino – 2017-06-16T02:28:23.207

Well, ATaco was wrong so +15 again ;) – HyperNeutrino – 2017-06-16T02:45:04.353

23

JavaScript (ES6), 16840 16825 16814 bytes

Saved a couple of bytes by:

  • inserting the last acid prefix in the packed string as suggested by ETHproductions
  • choosing the next character group in a slightly more efficient way when there's a tie

Assumes Windows-1252 character encoding. Outputs without a trailing newline.

Below is a simplified version without any actual data.

[...Array(256)].map((_,i)=>i<52|i>126&i<161|i==92|i==96?0:s=s.split(String.fromCharCode(i)).join(`...dictionary...`.slice(j,j+=2)),j=0,s=`...packed_data...`)&&[...s].map(c=>'methion|threon|glutamin|alan|prol|phen|leuc|ser|val|glutam|glyc|histid|isoleuc|tryptoph|argin|aspart|lys|asparagin|tyros|cystein'.split`|`[c.charCodeAt()-32]).join`yl`+'ine'

And here is the full version:

Try it online!

The TIO link includes some additional code to print the MD5 of the output rather than printing the output itself:

ec73f8229f7f8f2e542c316a41cbfff4

How?

This was compressed by:

  1. Mapping the 20 distinct amino acids to ASCII characters 32 to 51.
  2. Repeatedly replacing the most frequent 2-character group by a new ASCII character in the following ranges:
    • 52-91
    • 93-95
    • 97-126
    • 161-255

Which leaves us with a dictionary of 336 bytes (168 entries of 2 characters) and a final compressed string of 16161 bytes.

The above code is doing the exact opposite.

Arnauld

Posted 2017-04-15T19:09:49.910

Reputation: 111 334

1Very, very nice. I was going to do something similar but had to leave for a couple of hours. I think you can save another couple bytes by including the last ylisoleuc in the compressed data and just doing +'ine'. – ETHproductions – 2017-04-16T00:49:21.840

@ETHproductions Ah yes, you're right. I'll do that tomorrow. (I've just switched to another computer and don't have the compression code at my fingertips anymore.) – Arnauld – 2017-04-16T00:55:25.423

I actually thought about doing just the same, only up to 126; but actually I had more important things to do these holidays. Very nice work! * bows * – Titus – 2017-04-16T22:51:02.877

16

Bash + sed + xz, 13322 13290 12785 12706 12694 12687 12681 bytes

sed 1d $0|unxz|sed /`sed 's:[A-T]:yl/g;s/&/:g'<<<AvalBglutamClysDthreonEserFprolGglycHleucIisoleucJalanKaspartLarginMasparaginNtyrosOglutaminPphenylalanQtryptophRhistidScysteinTmethion`yl/g\;s/yl$/ine/
<12479 bytes of binary data>

Try it online!

Dennis

Posted 2017-04-15T19:09:49.910

Reputation: 196 637

I think this is using LZMA, right? As a side note, I did a similar test with paq8l which is compressing the uppercase letter string to 11877 bytes.

– Arnauld – 2017-04-16T01:34:34.383

Yes, it's LZMA. Brotli does better, but not as good as paq8l. – Dennis – 2017-04-16T01:36:44.183

15

Mathematica, 319 + 14971 = 15290 bytes

For[p={};a={t={{{{{tyros,asparagin},prol},{ser,threon}},{{lys,alan},{glutam,val}}},{{{{phen,{methion,cystein}},argin},{aspart,{glutamin,{histid,tryptoph}}}},{leuc,{,glyc}}}},r=Join@@IntegerDigits[BinaryReadList@"b",2,8]},r!={},If[AtomQ@a,p=Join[p,{a,yl}/.{,yl}->{iso}];a=t,a=a[[1+#&@@r]];r=Rest@r]];##~Print~leucine&@@p

Incredibly, this is exactly one byte more than this bzip2 answer. Can somebody find a couple of bytes to save?!

This is a program that prints the full name of titin to STDOUT. We use the same structure described in Jörg Hülsermann's PHP answer, and additionally note that all the words except for "iso" end in "yl", which we add separately each time unless inappropriate (this is what p=Join[p,{a,yl}/.{,yl}->{iso}] does). We store the data in a 14971 -byte file called "b" in the working directory (hex dump is here), which is converted to the list of its corresponding bits by Join@@IntegerDigits[BinaryReadList@"b",2,8].

That list of bits has been determined by Huffman coding, which is a lovely data compression scheme that takes relative frequencies into account; it requires the decoding template, stored here as the binary tree t, as well as the raw list of bits. Inexplicably, Mathematica doesn't have a Huffman decoding (or encoding) built-in, so that's what the For-loop implements.

Greg Martin

Posted 2017-04-15T19:09:49.910

Reputation: 13 940

Never would've expected to see a Mathematica answer here, nice! How did you get away with not using strings for the words? (Also, if I let this run, how long would it be expected to take?) – numbermaniac – 2017-04-16T06:17:18.557

2(It takes a bit less than 2 minutes on my machine.) All those non-strings tyros, asparagin, etc. are interpreted as undefined variables, which can still be manipulated by a hopeful Mathematica; fortunately, Print is perfectly happy to print the names of undefined variables, and also (super conveniently) prints whatever arguments you give it without intervening spaces, thus doing away with needing to 'StringJoin' anything. – Greg Martin – 2017-04-16T07:37:00.977

10What about the Mathematica function IUPACName["Titin"]? ;) – Beta Decay – 2017-04-16T08:45:33.960

1Also, I feel that the amino acids are a built in in mathematica (citation needed) – Rohan Jhunjhunwala – 2017-04-16T11:58:14.367

@BetaDecay Trust Mathematica to have a builtin... – Fund Monica's Lawsuit – 2017-04-16T23:19:34.403

What about ProteinData["TTNIsoformN2A"]? – Matthew Roh – 2017-04-17T10:16:18.460

7

Pip, 27747 27081 19701 19229 bytes

Take that, Bubblegum!

O("alan argin asparagin aspart cystein glutam glutamin glyc histid isoleuc leuc lys methion phenylalan prol ser threon tryptoph tyros val"^sA*Y"..."R^(PA3,68)."xyz{|}~
 !"Y"uttscfkmovgsmmoshiwnqtwjgioettdwnmvmfisgnjdgkrvik nrdrerjikomezastkvktssdewmdogtvtwweidsrineogsiwedkngwfotnsdtnomowrmsqemikiksoidiorntgkmtniwswowirrwt"<>2)J"yl""ine"

where "..." is a very long string. Here's the full code as a Gist.

Try it online! (Results are truncated.)

Strategy: split the name on yl, and encode each piece as one of the lowercase letters d through w. Use their code points (between 100 and 119) to index into the list of pieces (which is of length 20, so the indices are taken mod 20 automatically). Join on yl, output, and tack ine on the end.

Further compression: find the most common pair of letters in the encoded string, and replace it with an unused ASCII character. Repeat for all ASCII characters # through c, xyz{|}~!, space, and newline. The code takes this twice-compressed string and replaces the characters that aren't d through w with their corresponding two-character strings. Goto paragraph 1.

DLosc

Posted 2017-04-15T19:09:49.910

Reputation: 21 213

5

PHP 18731 Bytes

echo strtr(bzdecompress(base64_decode("$base64encodedstring")), 
[A=>alanyl,B=>arginyl,C=>aspartyl,D=>asparaginyl,E=>cysteinyl,F=>glutaminyl
,G=>glutamyl,H=>glycyl,I=>histidyl,J=>isoleucyl,K=>leucyl,L=>lysyl
,M=>methionyl,N=>phenyl,O=>prolyl,P=>seryl,Q=>tryptophyl,R=>threonyl
,S=>tyrosyl,T=>valyl,U=>isoleucine]);');

Try it online!

Create the Base64 string

Replacement of all words with uppercase chars in the range A-U after that bzip2 and base64 encoding

$a=preg_replace(["#alanyl#","#arginyl#","#aspartyl#","#asparaginyl#","#cysteinyl#","#glutaminyl#","#glutamyl#","#glycyl#","#histidyl#",
"#isoleucyl#","#leucyl#","#lysyl#","#methionyl#","#phenyl#","#prolyl#","#seryl#","#tryptophyl#","#threonyl#","#tyrosyl#","#valyl#","#isoleucine#"],range("A","U"),$titin);
$z=base64_encode(bzcompress($a));

PHP, 19920 Bytes

After replace the words with numbers and create a very long decimal number I can only read the word "leucine"

I have 20 words found that I have replace with numbers

After that i use bzcompress and the last action was base64 encoding

$g="base64String"; # see online version
echo $o=strtr(bzdecompress(base64_decode($g)),array_flip(
["methionyl"=>9999,"cysteinyl"=>9990,"histidyl"=>9909,"tryptophyl"=>9090
,"phenyl"=>9009,"glutaminyl"=>9000,"tyrosyl"=>899,"asparaginyl"=>889
,"arginyl"=>888,"aspartyl"=>800,"iso"=>70,"glycyl"=>79
,"prolyl"=>78,"seryl"=>77,"threonyl"=>6,"lysyl"=>5
,"alanyl"=>4,"glutamyl"=>3,"valyl"=>2,"leucyl"=>1]));

Online Version gzinflate

The words and count

[methionyl] => 337
[threonyl] => 2083
[glutaminyl] => 724
[alanyl] => 2304
[prolyl] => 1834
[phenyl] => 672
[leucyl] => 3351
[seryl] => 1910
[valyl] => 2414
[glutamyl] => 2324
[glycyl] => 1731
[histidyl] => 391
[iso] => 1658
[tryptophyl] => 401
[arginyl] => 1405
[aspartyl] => 1430
[lysyl] => 2199
[asparaginyl] => 902
[tyrosyl] => 829
[cysteinyl] => 356

Jörg Hülsermann

Posted 2017-04-15T19:09:49.910

Reputation: 13 026

("19 words" should be "20 words") – Greg Martin – 2017-04-15T23:21:02.717

@GregMartin Thank You – Jörg Hülsermann – 2017-04-15T23:37:51.480

I bet you can save a few bytes by flipping the array manually and omit the quotes for the words. Why the weird numbers? – Titus – 2017-04-16T15:47:26.557

@Titus Yes but I found a better way to make it. The first way was my first thinking and i have try to convert these numbers additional to base 36 but this was not a good idea – Jörg Hülsermann – 2017-04-16T16:45:25.793

4

Bubblegum, 19655 bytes

0000000: e2 e5 7a 4c bf 5d 00 36 99 4a ef 2b 08 5d b1 93  ..zL.].6.J.+.]..
0000010: 69 cb 7a 61 51 8c 3c 7c 04 41 de 7e ea ed 68 3c  i.zaQ.<|.A.~..h<
0000020: ca 5c e1 c8 6c 5b b5 31 2d 0b 4e e2 8e 52 06 ec  .\..l[.1-.N..R..
0000030: 5e e6 da d5 f2 f5 d3 8f 83 a3 51 0b 45 5d 19 c6  ^.........Q.E]..
.
.
.

Here's a full hexdump.

You have to paste the code manually, but you can Try it online! (only shows the first 128 KiB)

Dennis

Posted 2017-04-15T19:09:49.910

Reputation: 196 637

... Well, at least it's shorter than just straightforward printing it... – HyperNeutrino – 2017-04-15T19:41:32.023

When the output is cut because of a single word. – Erik the Outgolfer – 2017-04-15T21:32:29.637

Yea, bubblegum got beaten! – Joshua – 2017-04-16T15:32:30.383

Can´t You save about 35% by using 5 bit to 8 bit encoding? – Titus – 2017-04-16T15:44:46.933

@Titus I'm afraid I don't understand. – Dennis – 2017-04-16T17:14:16.753

would be easier to help if you´d say what you´re doing. I assumed you did the same translations as most of the others. – Titus – 2017-04-16T17:19:23.890

2@Titus Bubblegum only understands plain DEFLATE and LZMA encoding. – Dennis – 2017-04-16T17:23:08.387

3

bzip2, 15287+2 bytes

BZh91AY&SY...

Full source (hex-encoded). Run with bzip2 -c. Where do I pick up my "best programmer" trophy?

Sneftel

Posted 2017-04-15T19:09:49.910

Reputation: 545

5

I'm afraid bzip2 doesn't qualify as a programming language.

– Steadybox – 2017-04-16T00:16:20.673

1@Steadybox Peter Taylor's idea of what "qualifies as a programming language" is a flawed one (see Bubblegum). In any case, it's not endorsed in the question. – Sneftel – 2017-04-16T00:22:20.310

Well, yeah, Bubblegum stretches the rules quite a bit to fit that definition. – Steadybox – 2017-04-16T00:51:20.313

2I would say that this is not a valid answer because it's just a compressed file; bzip2 is not an actual programming language, it's a program itself. – HyperNeutrino – 2017-04-16T01:05:23.067

@HyperNeutrino CPython is just a program as well. On PPCG, programming languages are defined by their implementations, which are (usually) programs themselves. – Esolanging Fruit – 2017-04-16T01:45:17.563

@Challenger5 You have a fair point, I see what you mean. But then where do we draw the line between programs and languages? – HyperNeutrino – 2017-04-16T03:05:22.997

@Steadybox https://codegolf.meta.stackexchange.com/a/10426/8478

– Martin Ender – 2017-04-16T07:21:22.360

5@HyperNeutrino I don't think it's necessary to. The size of the stupidly-compressed output makes a useful goalpost, if nothing else. If you've done some clever stuff in a KC challenge, but you still haven't beat bzip2, that's a good sign you haven't found the right approach yet. – Sneftel – 2017-04-16T08:30:49.050

@Sneftel That's a good point. I agree with you. – HyperNeutrino – 2017-04-16T08:32:36.523

On the basis of the upvotes on Geobits' comment on my answer about deliberately making languages to create/exploit loopholes, Bubblegum answers should get at least 12 downvotes, and I don't see any reason why this answer shouldn't also.

– Peter Taylor – 2017-04-18T15:51:05.110

2

PHP, 19851 18639 bytes

204 bytes code + 19647 bytes base64 data
207 bytes code + 18432 bytes base64 data

for(;$c=bzuncompress(base64_decode("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"))[$i++];)echo[val,glutam,alan,lys,threon,ser,prol,glyc,leuc,isoleuc,aspart,argin,asparagin,tyros,glutamin,phen,tryptoph,histid,cystein,methion][ord($c)],$i<27598?yl:ine;

or, without the data:

for(;$c=bzuncompress(base64_decode(""))[$i++];)echo[val,glutam,alan,lys,threon,ser,prol,glyc,leuc,isoleuc,aspart,argin,asparagin,tyros,glutamin,phen,tryptoph,histid,cystein,methion][ord($c)],$i<27598?yl:ine;

I took the words ordered by number of appearances (descending), replaced them with bytes 0..19 (isoleucyl and isoleucine share code 9) followed by gzdeflate gzcompress and base64_encode. In PHP:

echo base64_encode(bzcompress(strtr($o,[asparaginyl=>chr(12),glutaminyl=>chr(14),tryptophyl=>chr(16),cysteinyl=>chr(18),isoleucyl=>chr(9),methionyl=>chr(19),aspartyl=>chr(10),glutamyl=>chr(1),histidyl=>chr(17),threonyl=>chr(4),arginyl=>chr(11),tyrosyl=>chr(13),alanyl=>chr(2),glycyl=>chr(7),leucyl=>chr(8),phenyl=>chr(15),prolyl=>chr(6),lysyl=>chr(3),seryl=>chr(5),valyl=>chr(0),isoleucine=>chr(9)])));

Moving from A..T to 0..19 did not only save 4 bytes of code (65=>), but also 3 bytes of encoded data (with gzdeflate; I didn´t test again).


replacements, words and count:

 0 val          # 2414
 1 glutam       # 2324
 2 alan         # 2304
 3 lys          # 2199
 4 threon       # 2083
 5 ser          # 1910
 6 prol         # 1834
 7 glyc         # 1731
 8 leuc         # 1694
 9 isoleuc      # 1657+1
10 aspart       # 1430
11 argin        # 1405
12 asparagin    #  902
13 tyros        #  829
14 glutamin     #  724
15 phen         #  672
16 tryptoph     #  401
17 histid       #  391
18 cystein      #  356
19 methion      #  337

Titus

Posted 2017-04-15T19:09:49.910

Reputation: 13 814

18432 Bytes bzcompress against 19647 Bytes gzdeflate only for the base64 string if this help you – Jörg Hülsermann – 2017-04-16T18:08:32.690

1

Python 2, 18409 18403 bytes

(with no libraries)

n=sum(95**i*(ord(v)-32)for i,v in enumerate(r'''~'W/P58:`Ote}|QRokHosM/W%~zh%Ab*ZI~i4?=Z/$_-Y*6D{ EGAP\ENvC,4=v$YQ#Z=<)e^5!p5*|K/Ap|.?CyO*51Ladt8c`it>w~1w2@{8.kb%;2n}Xvp8d{/GE4_c'8dO\)Qu(5G8[::X-(cMkgKeUli@0HJNa@Y84p^~:8'Jn #BoNyJn#5KAy[Lb} K{i=TlKzA^#EBWd>,|Ut!V.y5GCiXrO?~'dGYY;Pg6A|ub<ASiLi_@gL?Fb14=!x4-HE@4>3<_thTv&~8X%T2@;gaQy8Ao=DAnI50|7N6_lh=~7gF-@;CmFz:]?aBr~]K}eoFh{nG!4&:T>MSKxB6{N0TJ<ig@Md(ix?*\$;E0H5<f/M7EubRYLA1`A_Cuu0g"]!#w,Hf/uH2(a~~41\D.w"pg|{vO=.a)(xEqiW4/h7GIc3=vVKH[{7gTMpubkk5*YJ=b7Cn*MAmqsrTU%RE53E9{u^6@\FH&00={e2?EaeKu6>X3*B4g=b7'OW;p@2-+IoWPJVsg"`D-6yiwE)2Rd|"tM!|LVJ&gGLQGdv8WXAnT[me5~+$(~cJYxBx%UgO^^Eo|?fE/6~@wb`;7pw pHln{[PyjV}bfbbB`JBo$mt'@jiPZ.Rq"fpBe'IDiqCtV?JP80jZuxl#-,V&5oQ<.{/kn>bR!G;2sK#w8qXxQ-1VloKc+D5*EF3 qt*t9S\fq?^T54>\THI0#:l?guj}p&,yWNV1TZP^O.(BW8YK}?sD6IV"haFpfNZV>[CA<$tWVru5JiN+[j)KZyfg-axjd?E70,ae5(<)GR:9B?k0~ju#YoZb9CglDy<d9qSx\$5d[9scc8Bpc}X_NU^&K@- 0k* D'Pyy kI8&^:5=cTclE};`2r,^)&(t'f]^o-ZPHG"q^q;D^H[rFh1}O9qUEYWeg6F@y2!OwUnG2<)7qinEFJxa+%!b`yTu>oQOa+dhh{W4Ud"<FHl(r%Wjn>la[zgz"S:AubNNuYIjj*:FB1Aco.zjI~QHqy{93] Po^k3 yj/yL7'}lf24=R/`osaJHa9OF5%l*$MiBV=`=m_H=sJd/G)Ew2k-X|g$~E)s;s.R55x+6pmQIct0,ToJkoSu?D3@`O=cO+ZWg8FfsVhq?D^AB2|OzY~e;/9M~KDP)GMyC%v].1.u_'6A"y=|HE2h~GQjwW7j;1%KZ4fe8&x.{clSU'}rUsX+(q*mzzDtMwNZZa$c_a?SsIN*tA^{<Q\c'\(-M$&7douJ^@uhr##?|z\zoq$#POF|sbvI#*+IPeq<'EG'eTOhyd8M^i*|-h$aVa}.9r@\O6P-T<B!B<5d@r/|O](J8TW=Wjt=rS^H)qZ-la/"|" D49PxtBPmv;ir<:w7~x@jf[q_:z3e@p.+5/>)(NYqe]0#cP+7U<cglKWTR-JS4-;C_Ha#*N1IGV;,(GA5;9F<4ZJ0^u,]B{DNDIc{uu8<M\2~X3?`Ym7.ij%:86}8~!2w7oy8!#_k%/hQyn)DLBOqE7w]w8@d[lSE4:)w\'&*>#?b|ty2'z(!HNJ(oHkZ fTbR{WC^?]4wkPqT+&ka;XL(N?7*[{a$(@**GFl\4Do84*&DI\TL"HR:NKiXXtC(5?vYHm'g0J*w+(8?M4d:? L=|{2ld^@_M%;zz27JOVZU\Yr(~cmw>#dA!oQj*v`:Z6uO2Km,}gGYQ>" ;1$]'p[:s/z>_Dbj,}dET=B\/mq]+Iy/8[^PXQz7M~^30l[|E-{SPi^>wJ2D^[fU#[("yZ:ij-V>T{Etro9={/4As$tUe#4e"nqBkE%:~Q/%[&Q?#8$9[v6!I9:m#a]hP;'CuO2bj|8W:DNle/H[ra;o(;9>a-AJ4<Y2W1j{fP2*a?6EAR@hc!Z=&Ai]7vTN geg.rd4Mru|2u1t?5# DK19#:B}~EB9-]*Uo igH$;AO!6PZ=:^Ug{1M-M"im}jmezk,.P*KeD_3H*|]',?c412GLa;qa5#[tsjjRVGyT[5 tY-QGc2QjZs/5Z>g+=,:NG ccTmgW9<&Q3kma$FPec(=}h:NlHWh"x;Y9"&~y2l6RWq*Gc`28!+D$hnK5=Lto4.X*G&LCq0JNZJoC-l2!n9B#A&=kPjuz2C3CVXIW{v7d6zy!/%|dt:x^i^*f=]+~r!U8P{ejrlN6ktBm+ViU)d3Of.]&xRKtlOi!gQLKtms<g;\&-'rUU!@M4dq(3J``&vX)#:]"qbCtp@S<?~y]vxSp.u9F\FyOq3=xXd*X|]JP-[08{*>ek,Cd;-Mi;Jj~U~hCI&^i]BrP`yr{O76FCP=n_R>h!(hXb>ZTx\.qqbVD>#kx;*Pp%7BxUrV7'M,;/cJ&pD/pVu+!){ft.MV|d2Dzq;^aA.I$,NuCKMCS|BGVNup_4F0)f~/{wzL9789F.d{IZ+ E?}g1d{ne [>~uB#S<.6H#'[OAvg^O,P-_OHai]oHjf].s2KCWd Va$3Bp5NA~HN1y"@h6F5wuPi\'-AG-T!#j=i.Z'cp'7gv=l|Rf:=QIJi29j1T h)?QB=n2Q7*z]cF#6':^85Cd[RIl{8.Xx~')EvtuIP#kfy_WoxE3,iwd$;<yP4o>1()MhfY-?"bm/PORKI~,X\'ry.Pr#7;nOnzCfa)NCv*T~a1"~#w"ZBb<@xy-|GH=a-cL5 X ZeWEss8Vvv|ZBqZ"l&wAk`@R?P]E,N$O6"n=,M_{E#{2k]xo"d.&w i_q!1Lz0o=0OYs5Xo<S"R,joLW<Sxqu`'aZrq?rWsQ2/C&A*Lknz#x$;+nHbKX.KsC>1)P98s@=3D!{,MBy~9Z1(t,Hj\nJR%/ft,#OkTMCD-8t0^R^&k[~evH@sAr)E'L[,LJ8Q]&K:$C#}qE`nH;m:A79M&HpG%V1'OhbL#m/j:mtR\L[6mN=Wb>d,l Z=sADm4A\roI'Sk0UaW=#3[tx.U{Ms)G^[!\Vc|8AL.=,4MK##F/4!EmuXM8+|ppYpzE@ 6YzOdtxl*snP4Ct7wUWYYmH`f`jplhw^O&@gWBN@BTJHY&DyZvvYM@?kk].z}6,k<`REY{>pOCIy"%Wpi9_i'G-<9$=#}T,h3X<[{{**!OEeBn+*mWM9A<>,A(8By rz](GI=a(_t.8M6R#>t!Btvq7Zy]G:-x)BCc9Od6bR"VK^<-k!KYlrcdp9P!%Zs33p~4o}\bb\_{ d'oq{/no-0+b[5%:HCTgnWe=5v0d6hX23:6/5@vHw_(r/'uDu\Bp4%hS:OcX8x 4_fi*zeB8?k(iWQ^y_(nhx"b: =_}Fb.!|<F9cokSKbcm2CGgZHh/mh0OjWiptM3c7.v;.>:.BMc"D),[a;8[GB>c3dC1E-/Nt,8bfw"ybs"=r!Tjx'!I#V|5k}Xm!+"AN1f1?,XwU{6jiWb6D?MyOGSb2j pkIUz!eMj&MswS!kxt`~wG"~((:14tBFI/oEkqtpp9#b8_V4/V_^E_jc^@JS1PC_'Z$mM2iu=-fi}WC=T-Q}Q@/|!Hs_{wAd#Yd&Cc(!_ )a~iMFUU &s2[&n<0N!ni?/QY{:m;{.,9,PB]js<q@(cPL9M+qgk/@CwNQQj^"F:1 x-~15A$d-"xy$3$Jh"eJv',%V_j$w1u =8^{ITa;/{ht9U0|}RH0?1YdhM=b wrDo`H;z\bZ+FU]m03gK+/ltk)5H,hnOcmvKnW%FPO=FbO%wFf(]y!`#@]3=)A@?!|zLl~GQS{9{A+J2N:<4BaZ5Rd F**Vd5$QHgCUhE01,O!l.jf`~d\r>ratuneztP*OxS>$*Lo9vFe_CR&IErniM/VR*~=UwqgZ1oY0Zq($koaM0*ACn<bh|Zs8cG`XMAV*j#EI>+b}uA3E%.#]8U$p-3#P5%lg=#n@?]%H/`"c\`~p]5:I+iK'La(LIkhWDW~FF1*VwxzHd*a0gpL"ZwjWu59^LgBYBZ\)mT-2I-gNC#yrqY0),[^=^:1["e*pt\i3zplubVY7jr0p}ea?<~-IzA^jb$YWYO)<!WCJyCK'o1=1=_ sIfk/|7?uZ~<LhGtrXEH"3aM1RrL58UPbc,,NhFHTZ&%U~4A}W[C-tx55AdcJ?~E7%fG.nJ&#2c,#.${:F1ZHFcVd<!9UE`Dx^*q`S_}w34;d3K6=Pqd{V5arXF9z3vva{,AV2pttVV$)D^.%"`ZN'(yvxCZ0^I:W7\TOg|2)nr`\WG_CVpJN5-Tmt*gF#|/;v*@Gm!:U81diKU&Be;6R(N(@RcpuD~y3d(+tPI$xM^$&<"%WTP4K46Cy=}y@rzP.c@.LA5.@v+wC 3,5->Bg'2A{QL@yXi#|\\>!,IKA;CY+~w%4~SnY6`tM=ySey1hjCe?N~`,nxwEXZ?B5k\g"1i;Me^)dV=iS-;aM9nD5:%,_CsO:NnZ?(_qjZXPSTbE}45|fvs,{2-fmKm)oN|/nGG|Ajk7}T=f.'95B@QFR.]h<CfRsKsN;b1!0%i3zj4{5'|~8\o.3TcabH6i6XD{G d9y*\[:o^(cI6{DBoixs7p`lq]j,Gy>qb/=mH~5`]]^wMs.7#9*P*sj}(\:2qCc,3ialk=;?be7LE2!S<'68s<nPXu(_aXdo9f5jN!#2B[,>,DAB35k>VVIm{U@?'ke1F|U:p07NO*h.*rb,G-qCEn(70ojniIlKg,<VK}8$wa&>AqE"VL}5"B hLRKELQ|~8,'sxF$sI.3z+gurn0N"K]>_qK[2/ dnX99T>]lc1AE[EA^u%od,l%j\bO^$\kz5P.6OnnzLv|A3.8YY&L2I^a[=Emogzs~a[kVnx~/]K]mzC]Lx/#kkkVj{S4drJ-M>EZ{a@-+=><*1>";<[BZS{2EzW#xh8$wLZAN9>^&K;<;t=F|%2+aZZy'.1#%Ncw8V8>]&FE/;a<0wuZa.WJ%GTOWC!`Q^YKmgKJK%m}'.l:<$Gvjm*ED&LsY4-PZ/\nD`h,@Bfh|'&En;qe@TL!]Ks|G#.)n~Xto6GT{*02^WVvw[?s3#U7}uD}wA"<n@[Qgs-vOOu+%7Jl;Ph5tgF3lUwOS7xmCa??B:g3:CW lrjmH`-}j60A_xl)k[!2\2br3*\])# &asbz-|;uEYHUyo(hiv]+TUs2YBXC}Pn_>WftsZFh/`)hR~l@'W'xvLmh{<MBQ)P{zUM`8He$|`WTUfcVIXxr>,\*ldRT\56E`#OC]`.u*;\`_Gpq%i_<*?a SQ:(WKojXHL=ltohR`g?MGz;!F\t'cU+3lb&@uKLYyzJ-RzYKKcO4\8ij9fa}y%MjQ(d:viR9N(V6y0[=r@rR$9I-DfLOddn-1RxW>bcZgUF$Z51C7%g&0;\4#;OEO2p=My|8])3vxk~!_NLvJC[D<4X|v=$~2!FLZ.*R:u*a9;+#\s.Lm=4'8+"MoZxGu#xnx'ld:TX,3|Ar+QY0d?rQV,1@|!YJ=|S}TzS0aYCf4;hce}}S:cGs!yr*Jhya3\tSHK{3JJaKb-(?_z7]p{C]Oo)+~U6;L*8t{@<#,x9h@,\2Q!%e{cerzZuP:d#cZ6@$yqi`%MU2e; /(zKXGT=B8{~L:(mw?C]4wf)A"AqdZQvTIh\\<7:VBp0'9IQP0]Hz"?_,LJLv}iIWz8{k8q/R]s:g&d0Z0=>aa#D5p5USbpA 5 &Pe1|uaR~VMamMV#8CDE,unJMNOYC3rXnZySA,@tf+s9PV;`GK.0s@iv7i7(M/<q>NvSV>X1w`5b83C-2IwC6nblw@NAN/vI:?q,T?qQhk'<AfB\IL_phJXk-qG}L'P/^i]X*'7!~kS^!uBCD.?a_[:$K!sUB*+LMW:kEDxY)YjL#ohefM9>:o2O9K$,uH^zz?p( !Ep5G*cQe2Q1{&\-;Y8;G0W9+mlD&Z"D 87Q<5H~J[+Hq.Nk41v{C,U?1Pg]kZi 8U:g!K@t @k0rqq44Ptu}Ye}<k8{Hbz7>:rp@NIB%;be&t<h}AO~W]7uG@IX']](|W2_U)TqDGTBQ'Ap`a;@UB!I.65CN[m$lSLl9cSh=`7D0bp#^3/Lc=vF#g.kbkP""g@PKSX4K2a8-r'Dp%$"mQ,Dz1f?;ob'4*9G(Ew!wF:RL%|TCO>csigdhL"`2o'h\plI64r(cv4[1mz+EGF1*|z6Oxvpi:p:.~|!Qm<:,{,^[/tjm,*5k`xr1LPU6VJ6*%{[Iq;+1vdDyahWoD0DcV@|\^$Se-G~5"2!JAiMd7*K/,>b+P?wPvBzya1zj;@NwO;ctV$s-LXxf#<T" Ag/{E*{)2g9gn.Hz<ZQCITusb0$+v-!DNO,Ad0X-8^A\!OE.a&tCVDFg-:lfS$c4-9~0Yl|h$VIhN{uA8(YjfRx1&!0{69SXy]@#QCa{@bZC`"*<ZLI.W,(>hr1D>qvR7Eq.Pvarvh4gSfg6Z,|6^1/Sue|;S[sz*9;O3,*=%rsN{Ex0g+Z&1B8NX\4y"FEnQ.H[bHwe`PH&mn^pV/KG NO'6fVkHG ';Q:sv$Q#w'>oC``;aL.Kz8CmGVe;erD-vIJD8-y%c`f;+e<";]by?TH,')n/wIY/V)8S^56&uq*[xvJRWkKvs#j77G(ESZJ#?oLBk^-YMBi"w(7+M`4Jey,/?-mVeqGtz+tsy7uza`'_mLQ*!&E.U9#:["cCUxQS<]uh8&\BX7(_n17a?YA].^k4qBJB{I|Je_0\TTl_SRXTnRW'jCVRsM:]`!6'  %8H@Z8a^KE$YH]Rls_9CAWHJUv8 `YZ0$NgG'O~^kkQR{X~Nm]%8C0eH(.3U{+QdzF;97>K/p?sm7B7<V~l6JdbsN^[U[v$ FOZ1Ts,L.d@w#6@KLZJnVe:m5 E. JsmPMBEKfXI>hRz:O'3vhP 2o4+S\d]:`:U`D@aD2F;<^fj7I|pLd(h/G^tV!N?=LlrKmaX>*NRchlLA2vEs++g.uI](Y2RQAr:,>S4&%Y-jZ`)e$/B(}Xgvt+qv~+?xXg3gWWZ\F?2M%UM@$7(85QEW,;i]$!C(taaMec1@r]1m[Jm=D)`6zkxUw<W|@%Rip'H P"2O!BNqMh:. '9lS!PMZX1-!j,cu;uV6#'6MtMG|x6Er;l2gNm[Y[Q9;u8K^\2MU[=m \v@'Bh8ZW!8\>Y&x;/.S1[%6O1H`*1_LmNi|r4<&)wv8.KgW-u^{]7zfgH>hb!hG#>N028;.j;PhdxNiG[_EN>e^tY:&*Bcq,,!'\?}Fy+'sR*o;qq"m"uIS#P{3itm*S.3w@ks&1!/>>akBJQAXl~d4_*m-7u*_`4JvPy3DYlr7g+=Y.~JEi>JES(5a\a>7.m3LxFBW-NsnX,etcd/2  *_Pg/U>@9fT@#|RFb2Dl,J:-K?6{L,zlcX3~N%DSZQ%.LG:\5*Itw_4}@htw3eFrUs/0dvnS|<?MVAX$C.8^iIB:V,*iLO/cG_kSue>:R~hZCT+287BFh[b9@=ijYm^cS_xT!8KmGQAVyBL|_'06\Eui%VL"C<u~NhyyY'ISHC'=]=r:v(?W!xOc`1nfZG=3R]\Dxq`_?Efgd"y05O.5wTC`rx8NsA-lb:&{i9|j,!5NrDbQ{Y=rOA:cOC3E$I)ZX]u?RMvnv`1g6S#SIRD]GJ&X><sB-L(mS^*Qop22R[C43'`M%*pPJr&{~vz5b\qI*+#xUpiYh&Qnej"~)`e<v?S#vwO^R3=Y/LMO"<Qw=2W }\@h{G07XWJs[^|ujS1t?e|5;fztaDgfl=(!VLzQ,0YJv !|s;Ihm0C:#\z<pS3"|%NL"bAo5lR:42ut`Q/F0Ud}F,'"7dl"Cmb!HKkq&suhMee;~[7rkwy>Z,x.~iGLrb,!vINadqQoLA+A1f/fBMksw4\[B-]H:`R0)NWm$sAgimDIo~&GFx@K#a(O|-(HJ@%0D@^a/4QYV3eO9h!|5G9.NijhgZJ!=hjKVuiNF\vty_sWjqU p+.^9Op:uLpU:11I>Pg%W3){Z6h}%q/|^>b-:DFi3tatgrwsKb}Vd#)JC#eY+?d7=PB_XXR/iPC,%$w/HS5jbVH30R%hWoi>jQWQ*Mo_nm?BX:z>+,b<UX9=Muwb%mC#}qKYj=S](#|)/s&^~Ps(/Lk][._HRh8N!N=u3rz8D@d&2<h,!WJ+Fv3SZheC&Z.dN$F%8]kmjbxGQo>}#EfUp]0y?u&zS9eIVKxp}E ojpEPz1"$OOxCNOa0?T@:~zBzn`sK*.T:s~q7`e3,\)/^)XNSex+@T9rx:l{tb/a`%0}BKA>LM`B:qJ5<}26GThpIV8"Afi6v3z!~~*ur_iwkcu\c)7Bu6Q=FO<BP0Pw%ZXzzqKn4*;,bcTuJG1<ZVm8g*05ApaStn8B5CfpIAiz[Aq{5]^&o%?o6Mf^Re';Bj8z#p>|DPt^u,8!T7$uPHvq#s-bMebl:R|%w)]aNxI^'Uw/R*G\i4^:k5+7&@}Nfi$9Y"p}EQ2*uQD!63{bjbBR[(:f~ePB/EUH!}-&l]<W}"2c6<FObUYw ~Pn^P!9<]'TmwBRZZ[!]VZHh=C@*K_yW;u|P7B;yV7kGC+X[t2c>STk7%%4Ot35?;u2&[6B OUvbzmr+_{(R@gShda<QA2cPHKveK9_Lm$|'=Zzo]'m4\0Mefm0dYa7"Q;eQ"Sjp\!Da@G4k#=,@OPzuB(Wz^{<B&Fi0yl/W_5R&i*tO+xm}^c0ajC&ngdPj2#:I/#=XJ6Y!ViV[N!q;h,khSFix?|1]N0J=7'T76c_gpCu`$b6E+v:6DZz!aH1zt(1tP:xYb~'Gj8]veI{zkf$X{QH(.]Q1h\eEO&?Gdmc,\}v`H20,WW-Cr,}X}2]+f&pdrVKKBk0x0Y\/'YQ"X*Gt;]*B*!*,y%N.rz[b^,(yO{\UVJNXni>$T5lL0}T5+|Z1J"0;\;E&'x<%tC,wVe'<> PODeq_ny5\.K!qpN!.$46t d?\H`l%NldfL@1a^fy3mSeQ6{BRd;(?%s_{TbfX1@xGeupV4/K20gehEX~8X~`}_Fm}w"lF[;pF~YyDP?0;-*&y(:k9ro.n61d=OPTVT_.TR3Nz%_-YK4kD/^^'CMr=EJ(30<{C*[l}Si<0QuD!_}RY#~g{VE6]72nxK6=aJ[8LK$HnI3'J`y6K[s>uD8+4[KRsw*;|OK|re3H/gQgZ4;UMzeV+~oM2.HTn@2d-%73i'UB%-;Mn/{pMMevaHv@}j5|/.ie>m|bw?4ddXyN@,6zfVe"TxVjP+Q!`TPDM#p+F3</DKbPv2QMc)~3b\d<e`H!0xDw}p|@:S\W)ROuipuv@"&2bV8D}o6C=297#)s-Mm-n,toL""0l$^<BGWX@<ya%@l+dRTF)eZ5l{w/W!VtJ79D,{^55ygGagSMxF</De<Y_n?Qu#gO7D&:qXr%S|m'rZ&V)Hv,`Xpy{H;y9CZuk7]62m@JLAP%T0CEX*9@}13ZJN]TvW<)$(\ [ Mz$'fC!'dB(1"Cz;Y-RIHSZ&6_N@UeOeU4rR>w7irW'C#Kcj>K2J$5%)@O5hCh2[S`5E#Rum/.0Os {YI<C{(Mk?z;ON(p-3dJj,dR1-,jQdDPF5/AzN>-ZYG%|A 'Bh}TJ?*$uI2Z|,hM`C_HqlAA=s#}%bW$"}U}QEx.LV/GX-*wY>ZbuSi]?}(Nq{y/f3c4<{G5M;.JsGVY%rY$)%K>D~*5E+{@nAR$S+6{|yK|EcV$yu&gikcQ''}9]t?P}_|Xgwbu~ys5|& GN$X{p"mO.w &?h}R .wOFU",r3hmHwABK"8\'xC~(OD%t_d5#!J{5JsNU[J?$<Nu1~B|mi`s(;"~WOZ{7> 52p80Zwzyq;*hn~dp<t[SHm^`H9OcfyV$;t<'Wi$F-!ioQzOmev@i6:.nNrSQqQv%tS|V93q3a\?iTac;*R_~m~'LpzP0,)Ng\33yQ0ZI7(L6vXAXD#'DlD.8V.73VIl\T}gF3&FD-a6FU6K8FIZI"}fG)Nk"*b,nKW&JQ~OUP1I+w/h2_yU7f"wK/@r.8~m.qtbZ wP;J9K;c++C0&:J%ccfGFV-_[G<I|Wx|Mz+ 'v:ch]%fODW2LSH.J6C"W-$9)heW;/GH*<ZWr$UWM"DJU`4IllUaQ|"?#Wvsse-I]CH/AFI)d&{RYH:.Cn-WGah0U2^2RAR,-j91EdGQss*\jK:Fj#e_%))g;<g$W TPOkv(#H~c+u>zWECzZ]pC%x?Q HKvQ.FX.'~$5*0DAL*8gzXGlG<|tB b&D\Z)whgNhMP8pQ{P^v|edwyFCDK+i0)Abn/0@:.#y{;bCN~[um ;3<|6* |cA_S:sosROm1>Ob30p'\T'=5:>B<[7.>z@=\AD>dS`cQpLa^H;{A~E6gTZXRWu;e)/7jUNA}n${48TKYIz[tO'{EyzX!|w|<dl.mPt[s.ykT7C18%,Kurh/&HqR=8p*3{$X-HEU6naPv&R2-$84D5>o6tTZ8Z=W2L%1d @G}h .4[KS`h wkN%ODDt~X_dK4PC%B']6D6M6V]{tZk^u`7q=:4BFtZ8q+^>s@ I5&.|Jk?p>`!t|mNZoE,%wLr+SQmRrSWo5KIN{>+@<gH[z9imD9V^I3ZJl(9i|^*4J^}]U/.~SNza3+ wO9xbL<o54+%~~`.D?\?5iB01!rZq=[ ZgB1PIAOU)MrO}`yQHc\O~.a0h=d5"^NI HI6u_1U(yb~v_FK^%5C(1LG`UMg"Eo~@jrOTF9vLhL~#<3_<j}bzLKD6u/{/C?cT?:PB'fgnn;&d9=T8?j{dA"jSLDI2AvReMnh=B<NCkCU[ PtCTp_G\:5=$_gp8!A6P(,Y N3+@8v*]-?r+^p:{RLSWCA\~="'vbROXh&K~3(4DnLr~JCHG5$snK8WwQ/<D90&7n^fgc8_#6[3`D.OphAX;5k]2>k6@=j0&v,ZY|^P\g**es+b@tl*dUzX;u_\Sad+7#4V3xf2&[vb'8-GZNS2 El9q>(yY7:,iF*".!<us*Pb[K@}30+&&TG=8?rqY m;?e#=Ggi|8="!8@<3*H}\g#ATW&KfH `=WJ#V)&c#] ;Gp<&9-5y.Zz0o|[XR>P2]5C}Z_)g(<XH!Ra6>vGd`5msAWpx-m7XTY}0t+9W>s}4~aO&Wm%B"(9v4+@Mb6b/Kidx|iO`xTLYy}%ESx?6k1CO8>VWOIY4I42u5}Xw/j&]<,H$=/.R6h|0D=5>OQDo]ntuhOgZ(mc}Y%PR4C'4+5A_'\'A(@)5HJLvW|rtrNiuCuNOjVW+FF;e^]i&m/3o0ep|R'/U&#xEG0)p_+x'[K6NfS!`>NK5%^Qm7rb9!lPOm]E>[e;ch^OvL[m2}P|'_"#!laGM4d2VF]-=JcJ:eUm:>f4-`iHrx{*v|VTNOr_#rII{}j$@K0.uPU%x+'8b2ui+6239OtaF8&J|&7Lb@CWj+`gJ<t^.<~/v/IwuXnwUM&O4j/FVGG%\P0_SFwN\4qoE-]YcW,2ml;So]P/7o_FNZZR<i2$#Oi`\OhSx:tISE!6n/KeYGqbaPEFx_I3"wWbAoUkx+0R$)C) 34GOZx2x6d|<Wf Z4;"%Dr9oZxaIJv-ii$yOug~V|leOe<5*:d>EnZREh1\Upub42{.a]<&s-isg\0>TkwF&U \.Be"'tXt-k*Xx?"O8;t.Kk\<#gank&!1IozlTghZWrj<gNYPa+Zpr|^3Ss/59#O=prD9AdfrWvyLKYKl d|17$kPz]C]$K03S<CHLTfPV +e2j,nwZk8_x~eqdf/'O32_D&vRKO<^ODUD(.jYw=sjve2'Qc8Fr4#D)_#k<E$X4NyXx%mDAV3(^4'#~G1.g|wo>aT/w^CC)*d3)x2bubQbn>JonC!NS=Z-]q#g+8Dy8.&"L{KF_'a-h_&hM~} x3)HnwF6V$eFQTjbXSO?u~'Lw4rC+MZ1EpZ>i%AcoMOEl{!BG n5fK-O}A|_3k(q)YZ;iTTIzHh2q{r1Iw50V}%_1iSWgAVa#06#U-'2')V,oznU^#KXf-&jmXb0#<O+mkoZF%Mrc Sm=),w1V],9\JXSv~M_zSZG|_20`Je.](!L5I0SV>q#2+?Lqe|_ou3jnR=Y/PV }$u:j:GSo2>0'p*(qX8GXI?KN0Z]Vv2h*;@7v|L,U[="he8boXyE~%pJ#:+*P!ur;WhW(>7O] ci9T[cwPiv<L2uiY6z9Zh/0@F*9E"/8yb(q;:4&%s]~ie_Fjxb%~dR;s[9pvZZE>ECGD$!(_zQg:+*%=!5pk8^DMg`@y:;;hF38xJ*\kOni+HYf8B_@!#T]3UP<_s/@aK$M{:?0{g;\TM4U~yr!g;3F+PbgCW`[aKt?kAfh]:L:~m|C&^Y})C1OTnp 6waM^o|eWCl>_*&G=RDf{#}COC+T!<X8'=zqf\m'@gr#7hp"M/d3M@Ap2Iu}.!0MF;E}sz8\R]x?c_`~T>"MAK]Zmc^xx(*+Ed<0tF2mRa~yu;IdPmc,fg#Zcp+AF(k%4gr3f1gs`fDt?>r!3;\5L[$zL*)g`}"6fwK mP`%CD|W]=+V53g<4URck~%Ef>f]dcE-":l6&)]eY]"vxA\:?!\$L#mOn2idtd;vo*u=d|!jMUBo__Uy(YwSFE^\8$z?(Bb)37(DlB\3~$hGOB&T8YecOel$=R yxT9@O5-XVpth*fXL+88}}zeH<}d&:6Dn*@z7<~4fmNIT|97{]f_P*U<6Cnx1~Z2lE|B;`<uIxxV< 8@pw}];S+A pp7f"2d2DH#@dn^@Ia?gCK$5 MZ)th"z`cV#bCz/d'Z &MD,HufENZb"V!L$Xve)C0dn(=zzcdrfP\3Q(^F< QE;<\L:Xy70Wg?k"2j:z7/{9%(o nVc2,kOt{DHMh(L{+hRy!^5$k9VuD:+<Jr,.b%^p+h+~L3Ke'a{P_jd1Kqo+n(_*MD?E}d=}*2H@#"m@onl5BF 3>`u*%ww,Xo13SD86r>&/%;|`OOLaM5wQ+f+A*2?xA^iQe @]Md,fi"G>}CtgsP[2VYP69*hXPVHap:/O20%yg60E\7aFAwt0vUU=c9:.iKID'6.WF8:J*Q#{-umBvzq`!(#. ]z\7sclqq*mTQy&6*/|Z:q{_8C;:!-p]mqm&XKne|v9v{g<e7d!o|4"hlp,{BgH-`pV=V$k.n|~#`Yk/\/KCAG<4;GhUZb\pd_wz}z+{v&\Cup8O~n*qgFu!4V'XEBhMf*gm7x-AnWfA.6S!7&X$&B;zdDob2 kzHGgur;q:}E!NQt cj]diJ'g/IXk@*}160=>zqXm.jUQ`^EZN/'uUIh&6\R:z!vP`XhD27gzEn{~<TGP^Xweg2V&oMdFVG.l>i&cHnA85wr6S(K)U7udBEONUnTk='6a&9hyVa>Z,wQz 1FT :IA/3n$ 0mozt[xl$XJ69-kT[+ 14cCpTl]TR=QqkE 9o_czE6]D64ApY@H ~;TTEhc#eSW{_bO.HJ-qe|P2c)[PX|gIeIyJH4HYFrj55pQY"D^< HQ2nx/&_43Z]W=<$ 7ciOkTWr7rCDU{z{er(7:/I|T)bH(pRBLaVSu ?&vh$Ge%rA>O^yJm5u5fAqjI+Q'j7C{=q\@XFn}T\{8#BYHa}eHWh*Npl$9>OZ.^0q2d}lyl^zL'%A7pHw1@FjE\S~K$N8O%mq"MBrB,fAYN"_|:bpu*f<&+wSev'_c30>Oyh`HQ/s+{-{pbhMY8-tE"N@z{m=wx`H5|y2D(*_r0,Y>udqIdsr][+=zLq#w`Eo-xLjhlxVuQ0rk3[ugW!G~@}j%zQ)xHmT+Q*Z|;g}@NlV[LkO7zwU|Ov!P7h|aYHRRF@kK^X/8S2staUS|UR=dSjS]j@{-H~t|SB#J-b0-@|?AW^![5e[(KYX,s%TZ OVasreul-Rfv,i080@k:glb1W2W3Xc*JjafH9$QU~<td3'1m>hWja`w8Aav^.{|s_\UCqbz<4/)[80D\ijM#I?_^e;L?]7>{l`W8-W jTPP7UV?B]fnXhhJz|I?o;9L1ZVGTorHC-ll@=OfcchbABF\8#oT8u=t;]-Hcv/|M;|XOMA"&k83N8g%y{.uNw5@%n$F5IpVXi(qJ#Hy`4r[f8%>ul-@OI%!N?ndsAUx|=~"u-,zOE}%xGSV1wndi6 m4tcRi7hty4@YXIZQ2 ",#"Cd`}';}T" O6a.a@Yl/e'<04(_M}kze{AJ7]1#[S~D^ur.:os.@'E$vOt%^'~P<^d\&CKi(|XX=7Lah<E]FA;`]:H&<7D]}'NJ<Q~)5\m0"Z:*~Vn\q\id(!_PaGseR';q~,Ifm3YP/9|+bH(RDZuPMk[S*iK"&]_g}X'<3kaOtVk4,ud0J&U?FgRIL>D>!OU8nb?Igf(XVZ$%yi7o].1vAKaB7(b6FDfrB{2,k4CaPSY)-Jw@2sH[YBX;%sMY'yqSGL~YiODLTir[$-ydu9kK>PeKCBl)"'oW%:nj1Ia($6*{/C"W>wozYw'0]$tOk8CLc9E:A}5\!t*$M&Cb~ps{Hx3ro&>2O&Gp&D}|NGXh$AG/W(:3CvZTwa`"2]/knd?Gb7r-%(,T|:.>T].&h4CI;2rlR{i':H5omu0uAb%Lc'v|eYw2c-6:nvY?#ri&vvKR{{g+UEN,\WGI3'p-i9`}MjGQzg^_(Nh\,{hmQl6b;g'kM~: R|-&Ue(}|)8YR0\46~-E)8Y2[\iI9ssX4"\m_de[l=}DT(hvFud<ItmjJgL_--7'EZx}|)\3'k{d*C[u7%FgPj[!Z0AFpK0s~Pc^!yRT0([_'!B6UgrOEhK< %Y/_B9S1l21H"6-tA7FBQl\ZNqP<3}QHY,1]-{5"dDI>n/@2Yg86nx[H`cEq+JL\)4`]XQhjCuCT~]`q~)o,(O?CC5@<%is=s"LBh+nIq Ao+AiGS0Hm}?E+;W.I%j`j!Dko>I^\|~.T97m7k?z7qff};vkS~QrB+{ D)x<(s5(M1)r[~_#sDLV>`(H354k((!Wh4:~y6t#/8E4?Y1FdJg,"_@Vf^T(7Tdgsv2:6FQo!O?H=+y-ehph- QY(8DlK\xe;Yx?~a`t^xX($qST(_b4qx'0N6Y*Z,XshH,3P"p72pad,|y3lazk{}eM6N7Y,|WIr05}kw/qm(T/nKHt..QecJe&qattc{vbU9MCZcf,:cX#z,^gFb%#+Du-q~&w^.xfo9bn7OKx'"cW9k.[Iek}MgX(6< CIq|Lq6X3r(o_^(C)l/Af$_ej(W0UwD!^ct5-X`re:.UdH'Uuc3<5@)1XuN+/>V%Mcp.W9*<`uh4B_R>#87XYt03lJ*,]lj7mNF.BuRP"/M6C_#V_A$u8*%zr=$X:R^@hlT, V4\z.52'qCrhW+N=G_'Jhw3Ht/:8FUY~LK1U;1ids^T[?/dcp\0>0=$[])=F0`6.f9KI.cR%"QRbN6o8o*df.wCqGVxq!Ms|c84oYqAh} [pr}q5DIZ+{k'!x[w6XP}9K{eXT_0)Ya:=#&y[U&:2n?deVh#Utfv]@XWq+fw+MFRCOr7LE2BO'*:6/)s);f`*Z&ZhIQecuZ#!F0{GV<B<!/Mb|CQ|"*KK;yB$q!tR).`f":+P/b39/DY1unosh@C>=w43$Q[SSKK:ir7|@BED|oU1VFn%&?^V~%O[swaNxfvtIp^]]lgyHx/^p8 Gq-PvNz,IR^Yvzub+j%>)>ytm46V([9^Sup #GwYgIanB^ZrL`ED|'t*5$7,?Y}&%T@D's+cG_!iyugEr7A:.r[b{\ .DKg8T71eQ D)<eEoH!5?~Qr{_p{|`[Yq#.X~H}e+GPV_B-`D,yLP2n<HFz_O=$=\CzK!vb|-V,sH|{6%cF>dfFFMP5,wnZB~j/%bYTe_^|->p5:Z<<<37xa|^#|4n?%10,"&Kg&dAt#-5[.v'R4+2}-9RLc&Hhn ]pp:)mvMBaB=@AotqwM3S>!1D\Ugt$^gaM4l!_Cxstd[-E!Xz-r1IFV`\@]Sk/1c(>48)U6!ofn$|;;~@8&d.eCO[0=vMcl86$ X]2MD_uEQ|lr{Z[+`ImV+WRv`7Q/458WXZf"Pl7m,0-7o\\XbO+\{k+*sJvG6"T}5$IUd8sx= l)(-i4{H2l,0pBfph!T{SWhVs$S8K{t2lTZ!wPzp.ywm0U5V&MbRE--}(B#<wRN\^m0X&QQXW_DB@CA$X0qsAy**FdemyLA52xQP:>i;XM)19>c\'o?*N: htHoNZF{2kcW}-(Q9cxnqFY_ya'DX.}1]g$M{B;Io?RNG'Hsr=P38X/.`%j|[r9>?w_y*~HX;?tY?G00Pd~ItNjyo'0JR=\ Z>^u[QiJmJq<-1f\j=%^?5xbaj+tVTSCEdAW&-}"p4a#KeT_9D2LqlH1n1KO|q8O~:JrTB8z'T<f/)q^wu,4YeO\WlQ7>w^yy6gJQ.cC/nPCQ5Zxx,AH?F9U|clDgx(q>hp?X,\WyMD)ehFBlLDIaxa;TWi\-w:8G4O>;Ro7s0e!GL0?HZXCjv%4&rL|V1S4$ODjoE*4JQ lFnFvDoqe?idhMLz)Bscd@5"|@|4'cO[gK=,;Kr=R2edWauL8402!;VNFP}CrLQw)l9--O,gm( %_CV[pmW1US_Rh,[1+sN@0z/<k2^9IFKU_qk"PS=>[IjVXJ6bEtkm<sjvkFWsz9Xn]m{2KeC27}wrYLeZmlVe/Y!^uEG*I2:hfw5&WUj[jE$*_g#QMleW}4qBWxPhsPn:+`5b<Njvr(J^o.V*Wgp$XY-'#Nh86,Cm'pkeSBc-~j(]lgr~Vt=|J-HlaPL!C:hGzN_h2Qcf@Mi.#px[mpTeaTF1plT3dS4M%PRCS5P!V!i@<nn5B_-s[v (YOrHFRa5d*a , gr):,7>.Xcga5|D6Ja&D(%Q|"|k]X)`Ebs 2O0\\6ZsadkX`Z.0.E=5=&=,3'q]"ZTj(7)s)W}\ wagSP2'??Ne!94!mkA4pZunCj#dCA#B/nfFa&TqT,F7bDX*EP`(<9"ou1\.JKC[%oaZNZ_/K)/*}`",^5K"ZaY&EwEGq$()uEH,T?W,MvaYr=O*_2@R>?$vL=O{xd<tp>i*-iloTm $fPx+}x59'wZ9#3-a0{P2l4v%.a.A_y<6d6b3M6ASzF.8S}dUQ,mrv\a$yMEvWN~~G?):N^tGDm@=3(yf6,~k`UW|X'I)n05{'6<TK=`8)N\sX:{@'A-Md@k{1s?^IxRxuU7>)=r;9']Ggm[T@<Fru;4?G4itu,YC7"/<g"FMA&9uX`M)wLYtIf-f8%i8>[@+,/5P}4TT!@bN^s8,#(.{Kv{q$#kR"^Ttow!FK6diiS\!\3R1+U'`CHOa]MkK^&hXQ@5P|M%.+@P@IH'xm3T4)*,DXve&iUE"J+8aNr9/[[IoBt**U`!8d1]1gmKzvh3/W.*!0%#KM8Zf%FO#>Uc4nT,{:G)([6tt>9+)AWnn(_cKX3"1g4zcY_V@ISco*+T1f'1Zj31"1.lnA8i9SA>[dsW(%7aZ!jK7\wTRUR!B$l|A=n,z3=d{i-h?Ml&fua!WHVW%_,i6M^d4`W((94@2{EL`Imi7A0ier!\khUxPOP*{U:+j]-jpg%WYblvhQ_WU\?_*KCN{h9gOX577md'JM<h"i1|:X:+evKXnL#zPJz3HG"d(Z[kT_Vm$''C$.O2o{>gTb>F%~S@+.fulOCiWzn.\sp5:6;\VQ8?yxuq_urn&tY"*}~~$;x723{#k9p4gH!ps|PnFU'@qRb,n?#1N>,2/-cH7h[t2?K*@s #v3LbD%XKx$=Jw+Vdd=<2p!p oyhMvMviQ\8G|sU *4^k!YM'y&cxi_#Uon!h."C^sGA"Y6sHCs.P8E/{v]CMm%9.!/K8*@W:0hiN*vUb.1;M h.`;DOw5lF#gRWt/$MH(!.@$._Mic>kPV|.|>jr[h]V'O$*d()E{L~:0YBm;&;, #lCm1nto$MzWg'/h0h!S\Bx/Pz~=n1Ejn[lycN.cz'kGA5]$d{+Tjeja72,^)ODF@sR"AxH_.w[lmt:Moa38Y_EU]QGO,:tBCtPy$\<nNSl='M}B)i<o~q/Wj1fpk$vU!F3`q^kG5f%u,J*$C)Ru>^R$\nJ:S_WC=(x2BAlQXJ:n1c?K+]*(],K$3l(F/w3*Nm+xZa?r@56@hBAL['\kh8nIG:.cmLziq,."(SAAddoMBCo4!cqp5k54T Ix|QE0\',2j#]X2x9l-L#`X(/o8'*CVM_FkOD0&glK!\g5XC(N7I`P3o|LlSvz572xjsA_2eDAFDxO|Rk8,m]TL4Lt]/|nCU.xPG$i$Xz\Y<:tv+E%Gl`A&},3(BzDRLJC?&<`fB`d,jsch+ib4Fl?eMGcU RpQ1`l4u$:pHe)ihm{#L"NbN @S@BUI-{V)'@6Ug?ZMK]**fL'''))
r='isoleucine'
while n:d=n%20;n=n/20;r='cystein methion threon glutamin glutam alan prol phen leuc ser val glyc histid isoleuc tryptoph argin aspart lys asparagin tyros'.split()[d]+'yl'+r
print r

Creates a number, n, by reading a raw string using characters between ' ' and '~' as digits in base-95. Decodes that as a base-20 number using parts of the full name of tintin as the digits adding 'yl' each time, and initialising with the trailing 'isoleucine' and prints the result.

Jonathan Allan

Posted 2017-04-15T19:09:49.910

Reputation: 67 804

1

Python 2, 14627 bytes

  • Encode the amino acids as bytes, from \x00 to \x13 Special treatment for phenyl which only arises as phenylalanyl. No special treatment for iso in isoleucyl, just a different group than leucyl. Special treatment for the -ine.
  • encode the string with bz2
  • custom base 216 encoding of the bz2 binary string (218 printable characters in cp1252 excluding ' and \ for ease of use in a string literal.) encoding 31 bytes in 32 printable characters.

Source with cut down string s:

#coding:cp1252
a='glutamin tryptoph leuc val aspart isoleuc glutam methion alan glyc phenylalan prol argin threon asparagin cystein lys histid tyros ser'.split()
p=[chr(x)for x in range(32,256) if x not in(39,92,127,129,141,143,144,157)]
s='ª9W¾½ÍWÕiì7.{ç5æÄ‚¯g×;NíbdXÔùP¯ ...'
d=''
for i in range(0,14241,32):
 c=s[i:i+32];n=i=0
 for c in c:n+=p.index(c)*216**i;i+=1
 for _ in s[:31]:n,c=divmod(n,256);d+=chr(c)
print'yl'.join(a[ord(c)]for c in d.decode('bz2'))+'ine'

user68335

Posted 2017-04-15T19:09:49.910

Reputation:

1

R, 17684 bytes

E="/Td6WFoAAA..." # base64 string reduced for better readability
U=unlist(lapply(match(utf8ToInt(E),c(22:47,54:79,5:14,0,4)+43)-1,function(x)x%/%2^(5:0)%%2))
D=memDecompress(as.raw(sapply(split(U,0:(length(U)-1)%/%8),function(x)sum(x*2^(7:0)))),'x',T)
for(i in 1:21)D=gsub(LETTERS[i],paste0(el(strsplit("phenylalan valylthreon isoleuc leuc val glutam alan lys threon ser prol glyc aspart argin asparagin tyros glutamin tryptoph histid cystein methion"," ")),"yl")[i],D)
cat(D,"isoleucine",sep='')

Try it online!

The approach is similar to other answers :

  1. Remove the suffix "isoleucine" from the original string
  2. Replace each occurrencies of the following tokens with an uppercase letter in the range A-U :

            TOKEN   REPLACEMENT
     phenylalanyl             A
    valylthreonyl             B
        isoleucyl             C
           leucyl             D
            valyl             E
         glutamyl             F
           alanyl             G
            lysyl             H
         threonyl             I
            seryl             J
           prolyl             K
           glycyl             L
         aspartyl             M
          arginyl             N
      asparaginyl             O
          tyrosyl             P
       glutaminyl             Q
       tryptophyl             R
         histidyl             S
        cysteinyl             T
        methionyl             U
    

    obtaining a string of 26610 characters

  3. compress the string using the R builtin memCompress(string,"xz") obtaining a raw vector of length 12936 (bytes)
  4. encode the vector to base64 (because I don't know a better way to store these bytes into the script) obtaining a string of 17248 characters

The code does exactly the opposite (from points 4 to 1) and prints the string to stdout. The TIO captures this outputs, save it to a file and compute the md5 hash to verify that is correct.

Note: we can't compute md5 directly on string because we need a package that is not installed on TIO.

  • saved 37 bytes thanks to J.Doe

digEmAll

Posted 2017-04-15T19:09:49.910

Reputation: 4 599

There are only 20 amino acids. I noticed you've got some that don't exist: valylthreon (really valyl + threonyl), phen (really just phenylalanyl), lyc (doesn't exist) and one extra isoleuc are in your code.

– J.Doe – 2018-09-29T18:39:08.147

@J.Doe: Yes, some of them are "pairs", replacing them gave me some advantages in compression (e.g. phenylalanyl is repeated 672 times, so replacing the pair instead of replacing the 2 separatedly saves some bytes). But isoleuc repeated and lycyl are definitely leftovers of some tests, thanks for pointing it out ! :) – digEmAll – 2018-09-29T19:55:48.263

Sorry, I didn't explain that comment well. I mean that "phenylalanyl" is a single amino acid. They will always occur together. Confusingly, so is "alanyl", so replacement order matters! – J.Doe – 2018-09-29T20:47:11.897

@J.Doe : ah, so I can remove phenyl from the tokens, thanks ! – digEmAll – 2018-09-29T21:01:19.497

0

Python, 32148 bytes

Due to the Programming Puzzles & Code Golf body limit, view the code on Pastebin.

The code looks like

import zlib, base64
exec(zlib.decompress(base64.b64decode('eJzN...zYN')))

with most of the data removed from the decode statement.

Explanation: All that nonsense inside the exec() statement is actually the compressed version of print('methionyl...'

As per the OP's instructions, the hash of the output is ec73f8229f7f8f2e542c316a41cbfff4

This program uses the inbuilt Python modules zlib and base64

techydesigner

Posted 2017-04-15T19:09:49.910

Reputation: 105

2You coukd at least post the code without the data here. – Titus – 2017-04-16T15:26:21.243

2@Titus I edited it in. – HyperNeutrino – 2017-04-16T22:53:57.563

1Is it really shorter to put the print(' and ') inside the compressed string and call exec rather than just to call print and only compress the string of interest? – Peter Taylor – 2017-04-18T15:45:06.630

0

Pascal (FPC), 27917 bytes

{$H+}const s='<Compressed_string>';var c:char;a:array['A'..'T']of string=('methionyl','threonyl','glutaminyl','alanyl','prolyl','phenyl','leucyl','seryl','valyl','glutamyl','glycyl','histidyl','isoleucyl','tryptophyl','arginyl','aspartyl','lysyl','asparaginyl','tyrosyl','cysteinyl');begin for c in s do write(a[c]);write('isoleucine')end.

Try it online!

Compressed string

Hash print of the output

Compressed string, along with count of each string ending with yl, was made using this:

type part=record
      name:AnsiString;
      count:QWord;
     end;
var s:AnsiString;
    c:QWord=0;
    a:array[0..50] of part;
    i,j:word;
    p:word;
begin
  read(s);
  p:=pos('yl',s);
  while p>0 do begin
    c:=c+p;
    //writeln(c);
    j:=0;
    while j<i do begin
      if a[j].name=s[1..p+1] then begin
        Inc(a[j].count);
        break;
      end;
      j:=j+1;
    end;
    if j=i then begin
      a[i].name:=s[1..p+1];
      i:=i+1;
    end;
    write(chr(j+ord('A')));
    Delete(s,1,p+1);
    p:=pos('yl',s);
  end;
  writeln(' + isoleucine');
  for j:=0 to i-1 do writeln(j:3,chr(j+ord('A')):2,' ',a[j].name:20,' ',a[j].count);
end.

AlexRacer

Posted 2017-04-15T19:09:49.910

Reputation: 979