Sortie «Lorem ipsum» avec un nombre minimal de caractères

16

Je me souviens de gens disant que la taille du code devrait être mesurée en octets et non en caractères, car il est possible de stocker des informations avec des caractères Unicode étranges, qui n'ont aucune signification visuelle.

Comment peut-il être mauvais?

Dans ce défi, vous devez produire le texte Lorem Ipsum suivant, extrait de Wikipedia :

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Veuillez spécifier le nombre de caractères (pas d'octets) dans votre code. Le code avec le nombre minimal de caractères gagne.

Votre code ne doit contenir que des caractères Unicode valides, comme décrit ici , c'est-à-dire:

  • Le code pointe jusqu'à U + 10FFFF
  • Pas de substituts (la gamme D800 – DBFF est interdite)
  • Aucun caractère FFFE et FFFF
  • Aucun caractère nul (code 0)

Si votre code ne peut pas être affiché, fournissez une version avec les caractères incriminés et un hexdump.

Quelques notes:

  • La sortie doit être une longue ligne (445 caractères). Si votre système ne peut pas faire cela (par exemple, vous l'imprimez sur du papier), sortez une approximation la plus proche. Les sauts de ligne de fin n'ont pas d'importance.
  • Les fonctions intégrées qui génèrent du texte Lorem Ipsum ne sont pas autorisées
  • Veuillez spécifier un encodage de texte valide pour votre code, le cas échéant
anatolyg
la source
2
Malheureusement, =lorem()dans MS Word ne produit pas la bonne version
BlackCap
4
3 réponses spécifiant jusqu'à présent des octets. Il me semble que certaines personnes n'ont peut-être pas lu le défi
Robert Fraser
@RobertFraser: Dans mon cas, cela ne fait aucune différence que 1 octet = 1 caractère, donc je pourrais aussi bien spécifier des octets car c'est la norme. Si j'en avais gagné en utilisant des caractères, je l'aurais spécifié ainsi :) Je suis sûr que c'est la même chose pour les autres réponses.
Emigna
1
Est-il permis de faire une demande http?
Master_ex
2
Cela ressemble à une dupe de ce défi car il n'y a pas de motifs dans le texte?
FryAmTheEggman

Réponses:

6

Dyalog APL , 123 caractères

Tous, sauf la période finale, sont regroupés en 111 caractères 32 bits (UTF-32).

'.',⍨80DR'𦽌򒁭󗕳󆽤𲁲𒁴󇑥󦽣񆍥𧕴򖑡𷍩􆝮񆥬񗌠󶐠񖥥񆽭󖕴􇉯򖍮񖑩񒁴𖰠񗉯􇑥󶱯󒁥𖹧򖱡󦅵􇑕󖥮􆑡򖹩񗘠󖅩񗄠󢁳𧑳񒁤𷉥񆅴􆹯𖱬􆽣󶉡􇍩򗍩􇑵𖥬􇁩񒁸󶌠񆽭󶌠𖕳󧑡򗕄񖄠򒁥񗉵󆽤򒁲񗈠򆕲񖑮􇑩񢁮􇕬񗑡󆕶񒁴􆕳󆱩񂁭𦽬񖔠񷕦􇑡󆱵𗀠񆅩􂹲񖍸񖕴򗌠󲁴񖅣􇑡򗁵𗑡󶸠𧀠񖑩􂱴񆹵􆹩􆱵񗄠񦼠򖍩񖐠񗉥󒁴򖱬󦄠򒁭𶔠𖰠񗉯'

'.',⍨ période annexée à

80⎕DRle caractère 8 bits ( 8) ( 0) D ata R représentation de

'... 'les 111 caractères Unicode U + 26F4C 9206D D7573 C6F64 32072 12074 C7465 E6F63 46365 27574 96461 37369 10676E 4696C 57320 F6420 56965 46F6D D6574 10726F 9636E 56469 52074 16C20 5726F 107465 F6C6F E6656166 D16656 46174 106E6F 16C6C 106F63 F6261 107369 97369 107475 1696C 107.069 52.078 F6320 46F6D F6320 16573 E7461 97.544 56.120 92.065 57.275 C6F64 92072 57220 86572 5646E 107469 6206E 10756C 57461 C6576 52074 106573 C6C69 4206D 26F6C 56.520 77.566 107.461 C6C75 17020 46169 102E72 56.378 56.574 97.320 F2074 56.163 107.461 97.075 17.461 F6E20 27020 56469 102C74 46E75 106E69 106C75 57120 66F20 96369 56420 57265 D2074 96C6C E6120 9206D 36520 16C20 5726F, qui tombent tous dans la plage 12074–10756C et donc dans la plage autorisée 10000–10FFFF de l'OP.

Adam
la source
14

JavaScript (ES7), 326 283 273 249 243 242 caractères

_=>"򾍮󂙙󱤭󕜛񟉝񚫎󸦘󏇌󻮾󪕍򦙜񴫰𭙝𧇍񛜃򧮖󓔽򅬸󪙗񴦲񿫽񟮩򺥸󫡽񛜕󖷉󂨗񢕕򦯊񗮣󌫉񣔶򥹖񟷗򢫂󧩜񝼜󾿍񙇛񴮪󼬗񟪵񥦘񝕋󖹜񝹜򢟝񚪲󧩙񙁪񛌖󆆸񛌗󳭞񧔍􄮉񧮮񜭾󫤭󕜛񜫩󫬻򄗗񻭲󺙗񟼕􆞪󻤿򅙝𯎎񛉕򹤭󕜛򀿉򏨒񧔷􅚪񞕛򢮾󪂌򆞮􆴼򥾩󓆊򃅝񛏙򣕝񧔷󕴹󮉍򅾢󷫽񜫩񷪹񢝞򢜏򌦒񢖮󳭾󏔶󕚲󺕗򥤲񸾝񝕋󖿇"[r='replace'](/./gu,c=>(c.codePointAt()-4**8).toString(32))[r](/\d/g,d=>"  , exum. ".substr(d,2))[r](/^.|\. ./g,x=>x.toUpperCase())

Comment ça fonctionne

La première étape de ma technique de compression consiste à convertir la chaîne entière en minuscules (non obligatoire, mais semble meilleure) et à remplacer chaque paire de caractères dans , exum. (ainsi que l'espace de fin par lui-même) par son index dans la chaîne plus 2. Cela fait du texte un nombre de base 32 valide:

lorem9ips69dolor9sit9amet2consectetur9adipiscing3lit2sed9do3iusmod9tempor9incididunt9ut9labore3t9dolore9magna9aliqua8ut3nim9ad9minim9veniam2quis9nostrud94ercitation9ullamco9laboris9nisi9ut9aliquip943a9commodo9consequat8duis9aute9irure9dolor9in9reprehenderit9in9voluptate9velit3sse9cill69dolore3u9fugiat9nulla9pariatur84cepteur9sint9occaecat9cupidatat9non9proident2sunt9in9culpa9qui9officia9deserunt9mollit9anim9id3st9laboru7

L'étape suivante consiste à convertir chaque exécution de 4 caractères en décimal, puis à obtenir le caractère à ce point de code. Cela peut être fait avec la fonction suivante:

f=s=>s.replace(/..../g,x=>(n=parseInt(x,32),String.fromCharCode(0xD800+(n>>10),0xDC00+(n&0x03FF))))

( Remarque: Étant donné que tous les chiffres sont 2 ou plus, la valeur minimale possible de quatre chiffres est 2222₃₂. Ceci est égal à 95978₁₀ ou 176EA₁₆; par conséquent, les points de code ne seront jamais dans la plage restreinte.)

Et maintenant, nous avons notre chaîne compressée:

򾍮󂙙󱤭󕜛񟉝񚫎󸦘󏇌󻮾󪕍򦙜񴫰𭙝𧇍񛜃򧮖󓔽򅬸󪙗񴦲񿫽񟮩򺥸󫡽񛜕󖷉󂨗񢕕򦯊񗮣󌫉񣔶򥹖񟷗򢫂󧩜񝼜󾿍񙇛񴮪󼬗񟪵񥦘񝕋󖹜񝹜򢟝񚪲󧩙񙁪񛌖󆆸񛌗󳭞񧔍􄮉񧮮񜭾󫤭󕜛񜫩󫬻򄗗񻭲󺙗񟼕􆞪󻤿򅙝𯎎񛉕򹤭󕜛򀿉򏨒񧔷􅚪񞕛򢮾󪂌򆞮􆴼򥾩󓆊򃅝񛏙򣕝񧔷󕴹󮉍򅾢󷫽񜫩񷪹񢝞򢜏򌦒񢖮󳭾󏔶󕚲󺕗򥤲񸾝񝕋󖿇

C'est 445 caractères compressés en 106 caractères. La décompression inverse simplement ce processus:

  1. Convertissez chaque caractère en son point de code en base 32, moins 65536.
  2. Remplacez chaque chiffre npar " , exum. ".substr(n,2).
  3. Convertissez chaque lettre après un point ou au début de la chaîne en majuscules.

La seule fonctionnalité ES7 utilisée est **. Remplacez 4**8par 65536pour exécuter dans un navigateur qui ne prend pas encore en charge ES7.

ETHproductions
la source
Si vous utilisez ES7, vous pouvez utiliser à la 4**8place de 65536.
mbomb007
@ mbomb007 Merci. Peut-être que cela sera utile dans d'autres défis aussi
ETHproductions
8

bash + coreutils + gzip + recode, 191 caractères

echo -ne "ᾋࠀ㰟퍗\03㖐셱䌱ࡄ戋⪒宮⦀⃬〣ख़ʏ쬏湂삲מּ浊莎ᔍ얪䴬畐Ꮏ肭⽡តप㩴뇶ᮤ樶鞔岀梬昅⹭盖ꈥ먣Ვ빓ỢꞴꃑ괓꣪㷨삗䎺뛔䛓ﵸ摉篨䊷૤⦓헉픺ꉖ橬ꟲỒꗻ퉋則ใ⢍럴摧耼񸺷⒅୴䘺㦳櫇鐱窑駁愵䚞鎴鍉Ⅻक़毽➔脂ힸ⤹喝葁㎋頇㺞ⳃ┶왤惌⒜猜䌋吏젔掚ᛩ鯢⚕䜹鴛皽⨫ꇈ銹믍䄛逦軵융󌒣杻龇븁\0"|recode u8..utf16be|tr -d ٣ܣ|gunzip

La chaîne est le gzip du texte interprété comme UTF-16BE, plus quelques octets supplémentaires à associer aux moitiés de substitution non appariées. Le tr enlève les moitiés de substitution supplémentaires.

Ce fichier de script (ou le shell dans lequel cette commande est tapée) devrait interpréter le texte comme UTF-8, c'est pourquoi le recodage est nécessaire.

user59468
la source
Bienvenue chez PPCG! Bon premier post! Cependant, nous comptons les choses en octets ici. Pardon.
Rɪᴋᴇʀ
6
Cette question fait une exception explicite à cela, en indiquant «Veuillez spécifier le nombre de caractères (pas d'octets) dans votre code» et en discutant quels caractères Unicode sont autorisés.
user59468
1
Je suis un idiot. Désolé pour ça. > _>
Rɪᴋᴇʀ
2
Pas de problème, je parie que la chose octets – caractères est une erreur courante sur d'autres questions.
user59468
8

Javascript (ES6), 261 255 254 caractères

1 octet enregistré grâce à ETHproductions

_=>'L'+"⫒㠰拳␰䨒堵̎⨦W䙨ⅶ嵷˘㥆姳䗨⠬巯堡Ŋɩ懪䨶尩个˒≎㥎䜩怷㰷䤆ŵ̊㹩⫒ᨠᩌ㳠抮f̅㩊ᠰ䀩㩎搰㩊ئ抠ˮ婱拗⠩啺巨㬆ɒ㸘∦㰲䤆姵㩀Ƕ̘㨆㬴⠳⠺…䈲䥒䤠⫱᬴w㬣ᠶ⬘嗠⫘䥀噯䗠⫀⫓䕭啩̎Ɏ㹹庘⬆⭀巯奠Ŷ㷨䌯䥀噯⠪ⰸ㦸̆㼱ï哳峮૘梠䵨慷堵幎≠⣨峨愠◳ᬆ䐷ɒ䫓⥎ܑ拠̑Ɏ㼨ó㬴⹠⇫î奩拊̑㹰巯䓠ȮŎ廪ᨀ噧ਸ".replace(/./g,c=>(s=" ,.DEUabcdefghilmnopqrstuvx")[(c=c.charCodeAt()-32)&31]+s[c>>5&31]+s[c>>10])

Panne

Charge utile: 148 caractères Unicode
Code: 107 octets

Comment ça fonctionne

Nous supprimons d'abord le premier 'L' le début du message d'origine afin que nous nous retrouvions avec 444 = 148 * 3 caractères.

Sans le début 'L', le jeu de caractères est composé des 27 caractères suivants:

" ,.DEUabcdefghilmnopqrstuvx"

Chaque groupe de 3 caractères est codé comme suit:

n = 32 + a + b * 32 + c * 32^2

où a, b et c sont les indices des caractères du jeu de caractères ci-dessus.

Cela conduit à un point de code Unicode dans la plage U + 0020 à U + 801F, se terminant quelque part dans les «idéogrammes unifiés CJC».

let f =
_=>'L'+"⫒㠰拳␰䨒堵̎⨦W䙨ⅶ嵷˘㥆姳䗨⠬巯堡Ŋɩ懪䨶尩个˒≎㥎䜩怷㰷䤆ŵ̊㹩⫒ᨠᩌ㳠抮f̅㩊ᠰ䀩㩎搰㩊ئ抠ˮ婱拗⠩啺巨㬆ɒ㸘∦㰲䤆姵㩀Ƕ̘㨆㬴⠳⠺…䈲䥒䤠⫱᬴w㬣ᠶ⬘嗠⫘䥀噯䗠⫀⫓䕭啩̎Ɏ㹹庘⬆⭀巯奠Ŷ㷨䌯䥀噯⠪ⰸ㦸̆㼱ï哳峮૘梠䵨慷堵幎≠⣨峨愠◳ᬆ䐷ɒ䫓⥎ܑ拠̑Ɏ㼨ó㬴⹠⇫î奩拊̑㹰巯䓠ȮŎ廪ᨀ噧ਸ".replace(/./g,c=>(s=" ,.DEUabcdefghilmnopqrstuvx")[(c=c.charCodeAt()-32)&31]+s[c>>5&31]+s[c>>10])


console.log(f())

Arnauld
la source
5

05AB1E , 319 octets

Utilise l'encodage CP-1252.

•9y†QHÚSe²ŒÓdéÓ#ǧÖN›Íˆž4GÏóREØån‡·JîÁØ£ÎÁ¥evÑRZ¶—¥1RËÒÆzçå"UNé¨v¯ÊcŒÔÝjðtrœÛeã&“SÁxÌ4Þá1N$ù?T(çÛbŸœfó˜lUž}Þß-©ÃMšBÈÑPàê#jÇÐ+n¼BDFý>–¸äFT×›qÜY³ö9ªòËùˆA‡¾p=‘¤ÚÞ{I¶Œ±Ål#¨5´Aq˜Àž,s<*Ï;‡õã¾»ðŽL´ÅuØö+Xi+S>»/8Kã~WΔƒß”¤µðWluØa'cUÐeà¥ä…ž+œ6*0RU£›aÝQ_ñœoþÏð””Þã7ã¨sŒV`_É-´éÄèÆd¦úE5Í^Aá,‘‡™™¢äTHä0¥3±.}Søg•36B0„. :™J'yð:'z',:'.«

Interpréter la chaîne suivante comme un nombre de base 36 et encoder en base 214

LOREMYIPSUMYDOLORYSITYAMETZYCONSECTETURYADIPISCINGYELITZYSEDYDOYEIUSMODYTEMPORYINCIDIDUNTYUTYLABOREYETYDOLOREYMAGNAYALIQUA0UTYENIMYADYMINIMYVENIAMZYQUISYNOSTRUDYEXERCITATIONYULLAMCOYLABORISYNISIYUTYALIQUIPYEXYEAYCOMMODOYCONSEQUAT0DUISYAUTEYIRUREYDOLORYINYREPREHENDERITYINYVOLUPTATEYVELITYESSEYCILLUMYDOLOREYEUYFUGIATYNULLAYPARIATUR0EXCEPTEURYSINTYOCCAECATYCUPIDATATYNONYPROIDENTZYSUNTYINYCULPAYQUIYOFFICIAYDESERUNTYMOLLITYANIMYIDYESTYLABORUM

Après cela nous

36B                      # encode back into base 36
   0„. :                 # replace 0 with ". "
        ™J               # convert to titlecase and join
          'yð:           # replace "y" with <space>
              'z',:      # replace "z" with ","
                   '.«   # add a "." at the end

Pour une raison quelconque, l'encodage ne fonctionnait pas avec un 0 à la fin, c'est pourquoi nous avons besoin d'un cas spécial pour le "." Final.

Essayez-le en ligne!

Emigna
la source
Je pense que vous pouvez remplacer Yet Zpar 1et 2et économiser quelques octets. Peut-être aussi réorganiser les 0, 1 et 2 pour se débarrasser du mystérieux cas spécial?
anatolyg
@anatolyg: malheureusement non. Toute non-lettre compte comme une rupture de mot, ce qui gâcherait le boîtier du titre.
Emigna
5

PHP, 247 caractères

combinaison des 2 versions précédentes

echo gzuncompress(base64_decode(mb_convert_encoding("敊眱歍䙸兺䕉剆癚䅪礯極南慷潧楏㡷䥷汚䅯⽌䐸灐扫䱁獶猫扅煄橨啎硡灎䱈噑䔷⭂牓㥨䘴㡊䭪瀰獦夷灇漲氵剣杇楳婧啵扥卹摴慩䩢潪䡊圫啨㝩氷卧ぢご煏潪㙍䍮儷焲ㅅ扔⽘桭卥㉇别桃琫啺䍵公欹塊ㅔ煩噭灳氯䥥ぱ堷ぱ⭫橨祇啂灶㙣浵䅈湋䐷硴卑潘㙉砰捭塖橩汪祲昰䥪佄㔸晔慯眸䨲歮欰䱗䕲䑗⭫㡯䅷塏畃猵⭪慅兔佌流晥塹穄䩔扇婇䑍䩊硺䡅䵌⭤㝉䙇佡䙵浢㑩慖剺湱潊ぢ摰㝋卩楹婏㕵猷灴ぁ慫楗倹捙ㄲ⽁䍧塋啊","UTF-16")));

PHP, 261 caractères

echo mb_convert_encoding("䱯牥洠楰獵洠摯汯爠獩琠慭整Ⱐ捯湳散瑥瑵爠慤楰楳捩湧⁥汩琬⁳敤⁤漠敩畳浯搠瑥浰潲⁩湣楤楤畮琠畴慢潲攠整⁤潬潲攠浡杮愠慬楱畡⸠啴⁥湩洠慤楮業⁶敮楡洬ⁱ畩猠湯獴牵搠數敲捩瑡瑩潮⁵汬慭捯慢潲楳楳椠畴⁡汩煵楰⁥砠敡⁣潭浯摯⁣潮獥煵慴⸠䑵楳⁡畴攠楲畲攠摯汯爠楮⁲数牥桥湤敲楴⁩渠癯汵灴慴攠癥汩琠敳獥⁣楬汵洠摯汯牥⁥甠晵杩慴畬污⁰慲楡瑵爮⁅硣数瑥畲⁳楮琠潣捡散慴⁣異楤慴慴潮⁰牯楤敮琬⁳畮琠楮⁣畬灡ⁱ畩晦楣楡⁤敳敲畮琠浯汬楴⁡湩洠楤⁥獴慢潲畭.","UTF-16");

Le codage $ s contient la chaîne

foreach(str_split(bin2hex($s),4)as $c)eval('echo"\u{'.$c.'}";');

Ancienne version PHP, 386 octets | Caractères

echo gzinflate(base64_decode("NZDBcUMxCERb2QI8v4rklmsKIIjvMCMJWQKPyw/KT25CwLL7PmxKg44VDcWqTSx1UBO/ga0vYRePCSo6dLH2O6RqNpeUXIBorGYFLm3ksnbWoiW6IxyVvlIe4pe0oNG9E6jqI+jAp0O6ttRG0/14ZknthkfoQrflMwrkJZPVydU6olZqbJfyHtKl+9KvpI4chlAab+nJrgB5yg+8bUkKF+iMdHJl1Y4pY8q39CIzg+fH02qMPCdpJ5NC1hKw1vpPKAMFzrgrOfo2hEEzi5gH3l8swyU2xmRgzCSccxxDC/neyBRjmhbpm+ImlUc56qCdG3aeykoosmTubrO6bdAGpIlj/XGNdvwA"));
Jörg Hülsermann
la source
4

C #, 337 333 331 caractères

_=>{var q="";foreach(var c in"潌敲彭灩畳彭潤潬彲楳彴浡瑥弬潣獮捥整畴彲摡灩獩楣杮敟楬ⱴ獟摥摟彯楥獵潭彤整灭牯楟据摩摩湵彴瑵江扡牯彥瑥摟汯牯彥慭湧彡污煩慵弮瑕敟楮彭摡浟湩浩癟湥慩Ɑ煟極彳潮瑳畲彤硥牥楣慴楴湯畟汬浡潣江扡牯獩湟獩彩瑵慟楬畱灩敟彸慥损浯潭潤损湯敳畱瑡弮畄獩慟瑵彥物牵彥潤潬彲湩牟灥敲敨摮牥瑩楟彮潶畬瑰瑡彥敶楬彴獥敳损汩畬彭潤潬敲敟彵畦楧瑡湟汵慬灟牡慩畴ⅲ䕟捸灥整牵獟湩彴捯慣捥瑡损灵摩瑡瑡湟湯灟潲摩湥ⱴ獟湵彴湩损汵慰煟極潟晦捩慩摟獥牥湵彴潭汬瑩慟楮彭摩敟瑳江扡牯浵ਡ")q=q+(char)(c&255)+(char)(c>>8);return q.Replace("!",".").Replace("_"," ");};

-4 caractères en remplaçant les .s après "pariatur" et "laborum" par !avant de combiner les caractères en caractères larges et en ajoutant une nouvelle ligne de fin.

-2 caractères en réaffectant la sortie var plutôt qu'en ajoutant avec +=.

Comment ça fonctionne:

La chaîne lorem ipsum a été convertie dans ce gâchis en la remplaçant .par !, avec _donc lorsque les caractères ascii sont placés les uns à côté des autres pour créer un caractère large, chaque caractère large est un seul caractère.

/*Func<object, string> Lorem = */ _=> // unused parameter
{
    // Output var
    var q = "";

    // Enumerate each wide char
    foreach (var c in "潌敲彭灩畳彭潤潬彲楳彴浡瑥弬潣獮捥整畴彲摡灩獩楣杮敟楬ⱴ獟摥摟彯楥獵潭彤整灭牯楟据摩摩湵彴瑵江扡牯彥瑥摟汯牯彥慭湧彡污煩慵弮瑕敟楮彭摡浟湩浩癟湥慩Ɑ煟極彳潮瑳畲彤硥牥楣慴楴湯畟汬浡潣江扡牯獩湟獩彩瑵慟楬畱灩敟彸慥损浯潭潤损湯敳畱瑡弮畄獩慟瑵彥物牵彥潤潬彲湩牟灥敲敨摮牥瑩楟彮潶畬瑰瑡彥敶楬彴獥敳损汩畬彭潤潬敲敟彵畦楧瑡湟汵慬灟牡慩畴ⅲ䕟捸灥整牵獟湩彴捯慣捥瑡损灵摩瑡瑡湟湯灟潲摩湥ⱴ獟湵彴湩损汵慰煟極潟晦捩慩摟獥牥湵彴潭汬瑩慟楮彭摩敟瑳江扡牯浵ਡ")
        // Split each wide char into two ascii chars
        q = q + (char)(c&255) + (char)(c>>8);

    // Restore the replaced periods and spaces
    return q.Replace("!",".").Replace("_"," ");
};
Lait
la source
3

ISOLADOS, 44016 octets

http://pastebin.com/raw/Y2aAhdpi

Poussez le code ASCII pour chaque caractère de la chaîne Lorem Ipsum, concaténez tout et sortez.

acrolithe
la source
2

MATL , 354 caractères

'8 sxAI($ltZ>2<xa`vYf:s2e9]c&^KtD%e{C*XEpQ]]>dwmi>2;{sUCIZ{V(}Yj 7K&)|,%JD/Pz^:3$*@vVJw)4pgvz4s_$,%pVGu~|PS/Qr7pz5Z2[VV{Lyq}{l!yGiKNg.zFJxL75 sT1]eL2f3iVe~11!|6c+O9.kMWFQYvEp^w0p oH,?Ey"nbV>0g`#)kqTq""" z_AYmyJutvg:o9&AT{#(<42wu.b7" QoOn\#])]ISdH$yc{eM> .[~/`"#2:7C4Mk@eRW8L*_!xjo\cO)!LHK=g:P?&Uc];KdnE(%K7J-z9:7&rhxHl/KZ8\t_C|rT#%28[%+#u.?'F2Y2' ,.DEL'hZa

Cela décode de la base 94 (en utilisant les caractères ASCII imprimables sauf les guillemets simples; seuls les caractères Unicode jusqu'à 126 sont utilisés) jusqu'à l'alphabet des caractères requis, formé de la plupart des lettres minuscules, de certaines lettres majuscules, de l'espace, de la virgule et du point.

Cela prend quelques secondes dans le compilateur en ligne.

Essayez-le en ligne!

Luis Mendo
la source
2

JavaScript (ES5), 342 caractères

c="remo ipsudlta,cngbq.UvxDhfE";"L"+"Qq©Úu[Qsx7Ķz`¾ƅ&Øxø§Ëƴ%ţ¾÷öm¿Zw¥ſøûƠtĭĚǎmĭöđnŔơxēǮŗĭ*x÷;ƚ:ȸƚņţǮ{XĩámɓŏƙâĚDUĚǎÁƚÂtĭŎݦ1mňŽ8ZUŽƜ-äļÝÁŌĪqu[Qqƙ¢3*ôĭ[ÞĵĪ%mÄſĘÚu[Q#èĭƝĘň®ŏØȅ˔Ż­#ÂƠoƈŅƆĭƂ§ÿĵĭƘƙ¢VôƠţÅƠqƙƂĔňǮjʨſňô¾Ơn[ēĭœq÷\"ĭĚǎI".split('').map(function(x){y=x.charCodeAt(0);return c[~~(y/27)]+c[y%27]}).join('')

Assez simple, donc je suis sûr qu'il y a place à amélioration. J'ai encodé chaque paire de caractères de sortie en un seul caractère Unicode.

Eric Dobbs
la source
1
Avez-vous besoin du var ?
Paul Schmitz
Grand point, j'ai rasé ces personnages supplémentaires. Merci!
Eric Dobbs
Si vous utilisez ES6, remplacez-le join('')par join``. Sinon, changez votre langue enJavaScript (ES5)
Paul Schmitz
Je pense que vous pouvez faire y/27|0plutôt que ~~(y/27)d'économiser deux octets. Vous pouvez également supprimer l' 0en x.charCodeAt(0).
ETHproductions
Aussi, .split('').map(function).join('')peut être.replace(/./g,function)
ETHproductions
1

Jelly , 300 caractères (non compétitif?)

“ḊḄr⁷ƤⱮx#y&Ọ¬½ẇṾƤẋRṠỊ/IṗIÞƝỊż,CA~ñ;ßɦ4ṿḷNVẸẆ`°ṄjJ⁽Ɱ!Æḋ"uƒ⁽ƙfƈÇœƓ®ḶẓƭƊȮ⁻w}Ġṙ(1€CÐ-ɼ#ȯjėȮoZœ°ȥạ_ẊƊaʠiẸṂṪẒ$ċⱮiẹOṠBṇḲ^*GƓŒA>żıWṭƤe&ėẠF6³ṂḲzlçÇṪġṂŻỵḢ⁴WJC⁽Ỵihıỵṃ¥ẏƬEỴ⁽#ḍʠḢ*^O[4)ỵZ5VoPĠƘṙḅß]<œ/ṅẸ% ḍ"Ɱ+¢¦ß÷⁵Ḍ³Ṅ¶2X|©dċÆṁḢƭṗM°`KǦɗỤɱṆȯƘkṅbṙ⁻l<t,ḟȮạżæ€ṠṣIȥCṘƥṁ©53ẒþØŻṁ£æƥ?¬ṿFæṘ⁴nụ’ṃ“Lrem ipsudlta,cngbq.UvxDhfEo

Essayez-le en ligne!

L'encodage est Jelly .

Grâce aux chaînes compressées, j'ai pu le compresser de 3 octets.

Erik le Outgolfer
la source