เอาต์พุต“ Lorem ipsum” ที่มีจำนวนอักขระน้อยที่สุด


16

ฉันจำคนที่บอกว่าขนาดรหัสควรวัดเป็นไบต์ไม่ใช่ตัวอักษรเพราะเป็นไปได้ที่จะเก็บข้อมูลด้วยอักขระ Unicode แปลก ๆ ซึ่งไม่มีความหมายภาพ

มันจะเลวร้ายแค่ไหน?

ในการท้าทายนี้คุณควรส่งออกข้อความ Lorem Ipsum ต่อไปนี้ซึ่งนำมาจาก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.

โปรดระบุจำนวนอักขระ (ไม่ใช่ไบต์) ในรหัสของคุณ โค้ดที่มีจำนวนอักขระน้อยที่สุดเป็นตัวชนะ

รหัสของคุณควรมีอักขระ Unicode ที่ถูกต้องตามที่อธิบายไว้ที่นี่นั่นคือ:

  • รหัสชี้ถึง U + 10FFFF
  • ไม่มีตัวแทน (ห้ามใช้ช่วง D800 – DBFF)
  • ไม่มีตัวอักษร FFFE และ FFFF
  • ไม่มีอักขระว่าง (รหัส 0)

หากไม่สามารถแสดงรหัสของคุณได้โปรดระบุเวอร์ชันที่มีอักขระที่มีการละเมิดให้แก้ไขและ hexdump

หมายเหตุบางส่วน:

  • ผลลัพธ์จะต้องเป็นหนึ่งบรรทัดยาว (445 ตัวอักษร) หากระบบของคุณไม่สามารถทำได้ (เช่นคุณกำลังพิมพ์บนกระดาษ) ให้แสดงผลลัพธ์โดยประมาณที่ใกล้เคียงที่สุด linebreaks ต่อท้ายไม่สำคัญ
  • ไม่อนุญาตให้ใช้ฟังก์ชันในตัวที่สร้างข้อความ Lorem Ipsum
  • โปรดระบุการเข้ารหัสข้อความที่ถูกต้องสำหรับรหัสของคุณหากเกี่ยวข้อง

2
น่าเศร้า=lorem()ใน MS Word ไม่ส่งออกรุ่นที่ถูกต้อง
BlackCap

4
3 คำตอบจนถึงขณะนี้ระบุไบต์ คิดว่าบางคนอาจไม่ได้อ่านการท้าทาย
Robert Fraser

@RobertFraser: ในกรณีของฉันมันไม่ต่างกับ 1 ไบต์ = 1 ถ่านดังนั้นฉันอาจระบุไบต์เป็นมาตรฐาน หากฉันได้รับใด ๆ โดยใช้ตัวอักษรฉันจะได้ระบุไว้ :) ค่อนข้างแน่ใจว่าเหมือนกันเป็นจริงสำหรับคำตอบอื่น ๆ
Emigna

1
อนุญาตให้ทำคำขอ http หรือไม่
Master_ex

2
สิ่งนี้ให้ความรู้สึกเหมือนเป็นคู่ปรับของความท้าทายนี้เนื่องจากไม่มีรูปแบบใด ๆ ในข้อความ
FryAmTheEggman

คำตอบ:


6

Dyalog APL , 123 ตัวอักษร

ทั้งหมดยกเว้นช่วงเวลาสุดท้ายจะถูกบรรจุไว้ในตัวอักษร 111 32- บิต (UTF-32)

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

'.',⍨ ผนวกกับ

80⎕DR8อักขระ8 บิต ( ) ( 0) D ata R epresentation of

'... 'ตัวละคร 111 Unicode U + 26F4C 9206D D7573 C6F64 32072 12074 C7465 E6F63 46366 55566 6556 646 6556 646 6556 566 566 6656 64656 E6F646 D5165 D6164 46,174 106E6F 16C6C 106F63 F6261 107,369 97,369 107,475 1696C 107,069 52,078 F6320 46F6D F6320 16,573 E7461 97544 56120 92065 57275 C6F64 92072 57220 86572 5646E 107469 6206E 10756C 57461 C6576 52,074 106,573 C6C69 4206D 26F6C 56,520 77,566 107,461 C6C75 17020 46169 102E72 56378 56574 97320 F2074 56163 107461 97075 17461 F6E20 27020 56469 102C74 46E75 106E69 106C75 57120 66F20 96369 56420 57265 D2074 96C6C E6120 9206D 36520 16C20 5726Fซึ่งอยู่ในช่วง 12074–10756C และอยู่ในช่วงที่อนุญาตทั้งหมดของ OP 10,000–10FFFF


14

JavaScript (ES7), 326 283 273 249 243 242 ตัวอักษร

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

มันทำงานอย่างไร

ขั้นตอนแรกในเทคนิคการบีบอัดของฉันคือการแปลงสตริงทั้งหมดเป็นตัวพิมพ์เล็ก (ไม่บังคับ แต่ดูดีกว่า) และแทนที่ตัวอักษรแต่ละตัวใน, exum. (รวมถึงช่องว่างต่อท้ายด้วยตัวเอง) ด้วยดัชนีในสตริงบวก 2 ทำให้ข้อความเป็นหมายเลขฐาน 32 ที่ถูกต้อง:

lorem9ips69dolor9sit9amet2consectetur9adipiscing3lit2sed9do3iusmod9tempor9incididunt9ut9labore3t9dolore9magna9aliqua8ut3nim9ad9minim9veniam2quis9nostrud94ercitation9ullamco9laboris9nisi9ut9aliquip943a9commodo9consequat8duis9aute9irure9dolor9in9reprehenderit9in9voluptate9velit3sse9cill69dolore3u9fugiat9nulla9pariatur84cepteur9sint9occaecat9cupidatat9non9proident2sunt9in9culpa9qui9officia9deserunt9mollit9anim9id3st9laboru7

ขั้นตอนต่อไปคือการแปลงการทำงานแบบ 4 อักขระให้เป็นทศนิยมจากนั้นรับอักขระที่จุดโค้ด สิ่งนี้สามารถทำได้ด้วยฟังก์ชั่นต่อไปนี้:

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

( หมายเหตุ:เนื่องจากตัวเลขทั้งหมดเป็น 2 หรือมากกว่าค่าต่ำสุดที่เป็นไปได้ของตัวเลขสี่หลักคือ2222₃₂ซึ่งเท่ากับ95978₁₀หรือ176EA₁₆ดังนั้นรหัสจุดจะไม่อยู่ในช่วงที่ถูก จำกัด )

และตอนนี้เรามีสตริงบีบอัดของเรา:

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

นั่นคือ 445 chars ที่ถูกบีบอัดเป็น 106 chars การบีบอัดเพียงแค่ย้อนกลับกระบวนการนี้:

  1. แปลงถ่านแต่ละตัวเป็นจุดรหัสใน base-32, ลบ 65536
  2. แทนที่แต่ละหลักด้วยn" , exum. ".substr(n,2)
  3. แปลงตัวอักษรแต่ละตัวหลังจากช่วงเวลาหรือที่จุดเริ่มต้นของสตริงเพื่อตัวพิมพ์ใหญ่

เพียงคุณลักษณะ ES7 **ใช้ แทนที่4**8ด้วย65536ให้ทำงานในเบราว์เซอร์ที่ยังไม่รองรับ ES7


ถ้าคุณใช้ ES7 คุณสามารถใช้แทน4**8 65536
mbomb007

@ mbomb007 ขอบคุณ บางทีนั่นอาจจะเป็นประโยชน์ในความท้าทายอื่น ๆ เช่นกัน
ETHproductions

8

bash + coreutils + gzip + recode, 191 ตัวอักษร

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

สตริงคือ gzip ของข้อความที่ตีความว่าเป็น UTF-16BE บวกกับสองสามไบต์พิเศษที่จะจับคู่กับครึ่งตัวแทนที่ไม่มีคู่ tr ปิดแถบครึ่งตัวแทนพิเศษ

ไฟล์สคริปต์นี้ (หรือเชลล์ที่พิมพ์คำสั่งนี้) ควรแปลความหมายของข้อความเป็น UTF-8 ซึ่งเป็นเหตุผลว่าทำไมจึงต้องมีการเข้ารหัสใหม่


ยินดีต้อนรับสู่ PPCG! โพสต์แรกที่ดี! อย่างไรก็ตามเรานับเป็นไบต์ที่นี่ ขอโทษ
Rɪᴋᴇʀ

6
คำถามนี้ทำให้เกิดข้อยกเว้นอย่างชัดเจนโดยระบุว่า "โปรดระบุจำนวนอักขระ (ไม่ใช่ไบต์) ในรหัสของคุณ" และพูดถึงอักขระ Unicode ที่ได้รับอนุญาต
user59468

1
ฉันเป็นคนงี่เง่า ขอโทษสำหรับเรื่องนั้น. > _>
Rɪᴋᴇʀ

2
ไม่มีปัญหาฉันพนันได้ว่าไบต์ - ตัวละครเป็นข้อผิดพลาดทั่วไปของคำถามอื่น
user59468

8

Javascript (ES6), 261 255 254 ตัวอักษร

บันทึก 1 ไบต์ต้องขอบคุณ ETHproductions

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

ชำรุด

เพย์โหลด: 148 อักขระ Unicode
รหัส: 107 ไบต์

มันทำงานอย่างไร

อันดับแรกเราลบผู้นำ'L'จากข้อความต้นฉบับเพื่อให้เราเหลือ 444 = 148 * 3 ตัวอักษร

หากไม่มีการนำ'L'หน้าชุดอักขระจะทำจาก 27 อักขระต่อไปนี้:

" ,.DEUabcdefghilmnopqrstuvx"

แต่ละกลุ่มของ 3 ตัวอักษรถูกเข้ารหัสเป็น:

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

โดยที่ a, b และ c เป็นดัชนีของอักขระในชุดอักขระด้านบน

สิ่งนี้นำไปสู่จุดโค้ด Unicode ในช่วง U + 0020 ถึง U + 801F ซึ่งจะสิ้นสุดใน "CJK Unified Ideographs"

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())


5

05AB1E , 319 ไบต์

ใช้การเข้ารหัส 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',:'.«

ตีความสตริงต่อไปนี้เป็นตัวเลขฐาน 36 และเข้ารหัสเป็นฐาน 214

LOREMYIPSUMYDOLORYSITYAMETZYCONSECTETURYADIPISCINGYELITZYSEDYDOYEIUSMODYTEMPORYINCIDIDUNTYUTYLABOREYETYDOLOREYMAGNAYALIQUA0UTYENIMYADYMINIMYVENIAMZYQUISYNOSTRUDYEXERCITATIONYULLAMCOYLABORISYNISIYUTYALIQUIPYEXYEAYCOMMODOYCONSEQUAT0DUISYAUTEYIRUREYDOLORYINYREPREHENDERITYINYVOLUPTATEYVELITYESSEYCILLUMYDOLOREYEUYFUGIATYNULLAYPARIATUR0EXCEPTEURYSINTYOCCAECATYCUPIDATATYNONYPROIDENTZYSUNTYINYCULPAYQUIYOFFICIAYDESERUNTYMOLLITYANIMYIDYESTYLABORUM

หลังจากนั้นพวกเรา

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

ด้วยเหตุผลบางอย่างการเข้ารหัสไม่ทำงานกับ 0 ในตอนท้ายซึ่งเป็นสาเหตุที่ต้องใช้กรณีพิเศษสำหรับสุดท้าย "."

ลองออนไลน์!


ฉันคิดว่าคุณสามารถแทนที่YและZโดย1และ2และประหยัดไม่กี่ไบต์ ยังอาจจัดเรียง 0, 1 และ 2 อีกครั้งเพื่อกำจัดกรณีพิเศษลึกลับ?
Anatolyg

@anatolyg: น่าเสียดายที่ไม่มี ตัวอักษรที่ไม่ใช่ตัวอักษรใด ๆ จะนับเป็นตัวแบ่งคำซึ่งจะยุ่งกับปลอกชื่อเรื่อง
Emigna

5

PHP, 247 ตัวอักษร

การรวมกันของ 2 รุ่นก่อนหน้า

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

PHP, 261 ตัวละคร

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

การเข้ารหัส $ s มีสตริง

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

PHP เวอร์ชันเก่า, 386 ไบต์ | ตัวละคร

echo gzinflate(base64_decode("NZDBcUMxCERb2QI8v4rklmsKIIjvMCMJWQKPyw/KT25CwLL7PmxKg44VDcWqTSx1UBO/ga0vYRePCSo6dLH2O6RqNpeUXIBorGYFLm3ksnbWoiW6IxyVvlIe4pe0oNG9E6jqI+jAp0O6ttRG0/14ZknthkfoQrflMwrkJZPVydU6olZqbJfyHtKl+9KvpI4chlAab+nJrgB5yg+8bUkKF+iMdHJl1Y4pY8q39CIzg+fH02qMPCdpJ5NC1hKw1vpPKAMFzrgrOfo2hEEzi5gH3l8swyU2xmRgzCSccxxDC/neyBRjmhbpm+ImlUc56qCdG3aeykoosmTubrO6bdAGpIlj/XGNdvwA"));

4

C #, 337 333 331 ตัวอักษร

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

อักขระ 4 ตัวโดยแทนที่.s หลัง "pariatur" และ "laborum" ด้วย!ก่อนรวม chars เข้ากับ chars ที่กว้างและเพิ่มบรรทัดใหม่ที่ต่อท้าย

-2 ตัวละครอีกครั้งโดยกำหนด var +=ส่งออกมากกว่าการผนวกกับ

มันทำงานอย่างไร:

สตริง Lorem Ipsum ถูกดัดแปลงเป็นระเบียบว่าด้วยการแทนที่.ด้วย!, ด้วย_ดังนั้นเมื่อตัวอักษร ASCII จะอยู่ถัดจากแต่ละอื่น ๆ เพื่อให้กว้างถ่านถ่านแต่ละกว้างเป็นตัวเดียว

/*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("_"," ");
};


2

MATL , 354 ตัวอักษร

'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

การถอดรหัสจากฐาน -94 (ใช้ตัวอักษร ASCII ที่พิมพ์ได้ยกเว้นเครื่องหมายคำพูดเดียวดังนั้นมีการใช้อักขระ Unicode สูงสุด 126 ตัวเท่านั้น) กับตัวอักษรของอักขระที่ต้องการซึ่งประกอบด้วยตัวอักษรตัวเล็กส่วนใหญ่

ใช้เวลาไม่กี่วินาทีในคอมไพเลอร์ออนไลน์

ลองออนไลน์!


2

JavaScript (ES5), 342 ตัวอักษร

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('')

ค่อนข้างตรงไปตรงมาดังนั้นฉันมั่นใจว่าจะมีพื้นที่สำหรับการปรับปรุง ฉันเข้ารหัสอักขระเอาต์พุตทุกคู่เป็นอักขระ Unicode เดียว


1
คุณต้องการvar ?
Paul Schmitz

จุดที่ดีฉันได้โกนอักขระพิเศษเหล่านั้นออกไป ขอบคุณ!
Eric Dobbs

ถ้าคุณใช้ ES6 แทนที่โดยjoin('') join``ถ้าไม่เปลี่ยนภาษาของคุณเป็นJavaScript (ES5)
Paul Schmitz

ฉันคิดว่าคุณสามารถทำได้y/27|0แทนที่จะ~~(y/27)บันทึกสองไบต์ นอกจากนี้คุณยังสามารถลบใน0 x.charCodeAt(0)
ETHproductions

นอกจากนี้ยัง.split('').map(function).join('')สามารถ.replace(/./g,function)
ETHproductions

1

Jelly , 300 chars (ไม่ใช่แข่งขัน)

“ḊḄ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

ลองออนไลน์!

การเข้ารหัสเป็นวุ้น

ต้องขอบคุณการบีบอัดสตริงทำให้ฉันสามารถบีบอัดไฟล์ได้ 3 ไบต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.