พูดว่า“ สวัสดี” ต่อโลกในศิลปะ ASCII


14

ถาม:ผลิตผลลัพธ์ต่อไปนี้โดยใช้ตัวอักษรให้น้อยที่สุด:

 _   _      _ _                             _     _ _
| | | | ___| | | ___    __      _____  _ __| | __| | |
| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |
|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)
                    |/

กฎและข้อ จำกัด :

  • คุณไม่สามารถใช้FIGLetหรือเครื่องมือที่คล้ายกัน (มิฉะนั้นfiglet Hello, world!จะเป็นวิธีแก้ปัญหาที่ไม่สำคัญและสวยมาก)

  • โปรแกรมของคุณต้องประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ทั้งหมด- โดยเฉพาะ, รหัสจุด 9 (TAB), 10 (LF) และ 32 - 126 (หากภาษา / ระบบปฏิบัติการของคุณต้องมีตัวแบ่งบรรทัด CRLF คุณสามารถใช้เหล่านั้นแทน LF ธรรมดา) สิ่งนี้น่าเสียใจที่ตัดสิทธิ์ภาษาใด ๆ ที่ต้องมีอักขระที่ไม่ใช่ ASCII (หรือข้อมูลที่ไม่ใช่ข้อความ) เป็นส่วนหนึ่งของไวยากรณ์

  • ผลลัพธ์จะต้องดูเหมือนกับตัวอย่างด้านบน อย่างไรก็ตามคุณอาจรวมช่องว่างพิเศษรอบผลลัพธ์ถ้าคุณต้องการ คุณอาจสมมติระยะห่างแท็บ 8 ตัวอักษร(หรือการตั้งค่าเริ่มต้นของแพลตฟอร์มที่คุณเลือกหากมันมีค่าที่สอดคล้องกัน)

ps ในการตั้งค่าเสมอฉันมากับโซลูชั่น Perl 199 Char แม้ว่าฉันจะยังไม่ได้โพสต์ในกรณีที่มีคนมาด้วยตนเอง (นอกจากนี้ยังเป็นเรื่องวิเศษด้วย) แน่นอนว่าสิ่งนี้ไม่ควรกีดกันให้คุณโพสต์วิธีการแก้ปัญหาของคุณเองแม้ว่าจะนานกว่าก็ตาม


อัปเดต:ตอนนี้ฮันได้เอาชนะมันด้วยชาร์ตนี่คือคำตอบ 199-char Perl ของฉัน:

use Compress'Zlib;say uncompress unpack u,'M>-I]BT$*`S$,`^]YQ=R:0,&_Z<DP?8@?WVQJ]E2J"%E$$@)R(/(/MCJ*\U!OM`Z#=5`4Y>6M=L\L%DMP&DB0V.4GQL&OOGB$4:%`4TT4!R8O-Z(^BTZWNV?>F86K:9+""-35*-LNC:T^D:_$#%^`";"DD0'

มันคล้ายกับโซลูชันของ DC (และโซลูชันที่ใช้ zlib / gzip อื่น ๆ ในภาษาต่างๆ) ยกเว้นว่าฉันใช้uuencodingแทนbase64สำหรับข้อความที่ถูกบีบอัดและเทคนิคการเล่นกอล์ฟอื่น ๆ เล็กน้อย


อัปเดต 2 : ฉันคิดว่าถึงเวลาแล้วที่จะต้องยอมรับผู้ชนะอย่างเป็นทางการ สถานที่แรกไปที่รหัส PHP ของkonsolenfreddyเนื่องจาก แต่คุณนับจำนวนตัวอักษรมันเป็นส่งที่สั้นที่สุดจนถึง ในความเป็นจริงแล้วการรวมเข้ากับสตรีม DEFLATE ที่ดีที่สุดจากโค้ด 199-char Perl ของฉันทำให้ได้ผลลัพธ์ที่สั้นกว่า 176-char:

<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));

อย่างไรก็ตามฉันคิดว่าฮันสมควรได้รับการกล่าวถึงกิตติมศักดิ์พิเศษสำหรับการเข้าใกล้โดยไม่ต้องใช้เครื่องมือคลายการบีบอัดใด ๆ ที่เขียนไว้ล่วงหน้า ขอแสดงความยินดีกับคุณทั้งสองและสวัสดีปีใหม่ทุกคน!


ตกลงฉันต้องทำสิ่งนี้ใน C ...
Michael Dorgan

คำตอบ:


1

Stax , 137 ไบต์

"9&BO]h>&)>3ieuCoKVKVnuOoT'E-^Z(1.3u[);h1[RTOGqTZkoQx?KMy&9ctG&*y~HxR9%GYn.rYMdMcOOq^wXc@%zy*P[*Q"90|E|B"0+1"{%",``_|\/()V'"@]}R.1 |t54/m

เรียกใช้และแก้ไขข้อบกพร่อง

มันใช้งานได้เช่นนี้

  1. เริ่มต้นด้วยสตริงตัวอักษรขนาดใหญ่
  2. แปลงเป็นจำนวนเต็มโดยถอดรหัสเป็นเลขฐาน -90
  3. แปลงหมายเลขนั้นเป็นไบนารี
  4. Runs of 0s ตามด้วย a 1ถูกแปลเป็นอักขระที่ไม่ใช่ช่องว่าง
  5. ส่วนที่เหลือทั้งหมด1จะถูกแทนที่ด้วยช่องว่าง
  6. สตริงผลลัพธ์ถูกแบ่งออกเป็น 54 บรรทัด

ยินดีด้วยดูเหมือนว่านี่เป็นทางออกที่สั้นที่สุดในตอนนี้! :)
Ilmari Karonen

17

Perl 5.10 - 195 198 202 203ตัวอักษร

นี่คือรายการที่ไม่ต้องการไลบรารีใด ๆ นอกเหนือจากการจับคู่ regexp ขั้นพื้นฐาน สตริงที่เข้ารหัสคือ 131 ตัวอักษรและรหัสในการถอดรหัสและพิมพ์จะมีความยาวสูงสุด 64 ตัวอักษร (สมมติว่าไม่มีการขึ้นบรรทัดใหม่ในตอนท้ายของแหล่งที่มา) แนวคิดคือการแสดงสตริง 3 ตัวอักษรทั่วไปโดยใช้ตัวอักษรตัวพิมพ์เล็ก

s!!xfefxxf\t\t\tf efyx
no| cnocfxefxceyxm|xmn
nm|wtnwtgt/uvy \\| 'ym|w`o|
pepyy/o| _ogrr/ _opn (ml
l lbyly|by( )fiihyjm lb,y_
\t\tf |/!;s!\w!substr'(_)\___   \_/|_| |  V \ / _',-95+ord$&,3!eg;say

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

เคล็ดลับหนึ่งที่นี่คือการทดแทนบางอย่างมีความยาวน้อยกว่า 3 ตัวอักษรเนื่องจากวิธีการsubstrทำงานของPerl xถูกแทนที่ด้วย ' _' และy' _' หลังมีความจำเป็นเพราะ\wใน regex จับคู่ ' _' ซึ่งจะถูกแทนที่ด้วย ' (_)'


+1 ดีมาก คุณสามารถบันทึกได้ 2 ตัวอักษรโดยแทนที่printด้วยsay
Toto

@ M42: เท่าที่ผมสามารถคิดออกใน Perl 5.10 การใช้sayที่คุณต้องจะทำหรือเรียกใช้สคริปต์เป็นหนึ่งซับด้วยuse 5.010; perl -E 'script here'อดีตทำให้รหัสอีกต่อไปและหลังไม่เหมาะสำหรับสคริปต์หลายบรรทัด ฉันพลาดอะไรไปหรือเปล่า?
ฮัน

ตัวละคร-Eไม่นับจำนวนถ่าน
โตโต้

1
ps คุณสามารถบันทึกอีกสองสามตัวอักษรโดยใช้s''...'แทน$_=q!...!; เพียงจำไว้ว่าให้หนีคำพูดเดียว ด้วยสิ่งนั้นและsayแทนที่จะprint(และออกจากบรรทัดใหม่ล่าสุด) ฉันได้รับสิ่งนี้ลงไปที่ 198 ตัวอักษร
Ilmari Karonen

2
BTW ฉันลองใช้แท็บแทน#ช่องว่างที่ยาวและแก้ไขปัญหาของคุณได้มากถึง 190 ตัวอักษร ฉันสงสัยว่าจะไปได้ต่ำกว่า 184 ตัวอักษรหรือไม่ - นั่นอาจเอาชนะโซลูชั่นที่บีบอัด zlib ทั้งหมดได้
Ilmari Karonen

12

Brainfuck - 862 ตัวละคร:

>++++[<++++++++>-]>-----[<---->---]<+++>>--[<+>--]<---<<.>.<...>.<....
..>.<.>.<.............................>.<.....>.<.>.>>++++++++++.<.<<.
>>.<<.>>.<<.>>.<<.>...>.<<.>>.<<.>>.<<.>...<....>..<......>.....<..>.<
.>..>.<<.>>.<<.>..>.<<.>>.<<.>>.>.<.<<.>>.<.>.<<.>>.>>>-[<->+++++]<---
-.<<<<.>.<.>---.+++<.>>.<<.>>.>>.<<<<.>.<.>---.<...>.<.>.<.>>>>.<<<.<.
>>>>.<<<<.>>>>.<<<<.>+++.<.>---.>.<<.>>>>>>---[<+>+++++++]<++.<<<<+++.
.>.<<.>>.>>.<<<<.>.+.-<.>>.<<.>>.>.<.<<..>.<..>>.<<..>..>>>.<<<<.>>.<<
.>>.<<.>>>>>+.<<<<.>>>>+.<<<<<.>>.<<...>---.<.>------.<..>.<.>>>>.<<<<
.>>>>>-.<<<<+++++++++.>>>>+.<<<<<.>>.<<.>>.<<..>>.<<.>>.<<.>>>>>-.<<<<
.>.<<.>>.<.>.>.<.<.>.<<.>>.<.>.<---.+++...>.<.>.<.>.<---.+++...>>>>.<<
<<<.>>>>>+.<<<<<...>---.+++.>>>.<<<---.+++.>>>.<<<<.>---.+++...>>>.<<.
<.>.<<..>>.<.>.<---.+++..>>>>+++.<<<<.>>>>----.<<<<.>>>>+.<<.<<<......
..............>>.>>.<.

โปรดทราบว่ารหัสนี้ถือว่าเซลล์ 8 บิตอย่างเห็นได้ชัด ฉันลองใช้มันเป็นล่ามที่มีเซลล์ 32 บิตและติดอยู่ที่[<---->---]บรรทัดแรก (สันนิษฐานว่าในที่สุดมันก็จะเสร็จ แต่ฉันก็ไม่ได้รอนานพอสำหรับเรื่องนั้น)
Ilmari Karonen

24
คุณเขียนเรื่องนี้ได้อย่างไรในสองชั่วโมง?
Joey Adams

ดูเหมือนว่าคุณจะบันทึก `') (, / | V_ \ n บนเซลล์แรกและพวกเขาเพิ่งพิมพ์ไปมาเพื่อพิมพ์อักขระที่ต้องการ (BF Dev text generator?) งานที่ดี BTW
JBernardo

มันขึ้นอยู่กับเซลล์ห่อหุ้ม 8 บิต เก็บอักขระทั่วไปบางอย่างที่คุณพูด แต่ไม่ใช่ทั้งหมด ทำสิ่งต่าง ๆ เช่นสลับระหว่าง '\' และ '_' ในเซลล์เดียวซึ่งพวกเขาอยู่ใกล้พอที่จะทำเช่นนั้น
captncraig

@JBernardo ตัวสร้างข้อความ BF dev ให้โค้ดใหญ่กว่านี้มาก ฉันต้องใช้ตัวสร้างที่ซับซ้อนกว่านี้เพื่อเอาชนะสิ่งนี้ฉันคิดว่า
captncraig

9

Python (2.x), 194 ตัวอักษร

print'eNo9T8ENxCAMe5cp/DsqVco2fSH5BsnwZ4ccEIhxbAIgAK9KvDRwGBEjsSfJA6r2N7EISbmrpbLNKFRYOABaC6FAEYkPW/Ztm1t7Z1S3ydtHuV4ooolEV6vPyJ2XH8kGE7d9DAVMhFUte6h7xv5rxg8sf0Qc'.decode('base64').decode('zip')

2
คำตอบนี้ทำให้วันของฉันเป็นวัน xD ฉันไม่เคยคิดเลยว่าจะเห็น codegolf ที่ใช้ zip & base64 เพื่อลดขนาดสตริง
daboross

4

javascript, 273 265 264 ตัวอักษร

" _2_22_ _2222222226_26_ _10 0 3_0 | 3_2 32233_6_ 30 30 |10_0/ _ 4 0/ _ 424 4 /4 / / _ 4| '30/ _` 01|6_6|63/ 0 (_) |24 V6V / (_) 060 (_0_|1|_0_|43_|_543_( )24_/4_/ 43_/56543,_(_)12222226|/".replace(/\d/g,function(a){return'| |,\n,   ,__,\\,|_|,  '.split(',')[a]})

:(


ประหยัดพื้นที่หลังจากreturn, -1 char :)
pimvdb

4

คำตอบนี้มีความยาวมากกว่าแค่การพิมพ์สตริง; อย่างไรก็ตามเพื่อความสนุกของมันนี่คือ:

Python 485 ตัวอักษร☺

import sys

data= ',C6UBKq.)U^\\ 8[hHl7gfLFyX6,;p\'SlYpN@K-`Kbs#fSU+4o~^_h\\dJDy{o9p?<GnLTgG{?ZM>bJE+"[kHm7EavoGcS#AQ^\\>e_'
table= " _|\\/(\n)V'`,"
key= (0,(1,((((7,5),(6,(8,(11,(9,10))))),(4,3)),2)))

number= 0
for char in data:
    number= number*95 + ord(char) - 32

mask= 1<<655
decoder= key
while mask:
    index= mask & number and 1
    try:
        decoder= decoder[index]
    except TypeError:
        sys.stdout.write(table[decoder])
        decoder= key[index]
    mask>>= 1

เนื่องจากฉันมี ASCII สั้นที่สุดของข้อความต้นฉบับที่ถูกบีบอัดฉันต้องมีแถบเลื่อนที่ยาวที่สุดในรหัสของฉัน! มันเป็นชัยชนะ! :)


4
AKA“เลื่อนฉันมีความยาวกว่าของคุณ”
tzot

วิธีการแก้ปัญหานี้สามารถลงกอล์ฟได้ถึง 254 ตัวอักษร คุณรังเกียจไหมถ้าฉันแก้ไขในเวอร์ชั่นที่สั้นกว่า?
ฮัน

@han: แน่นอนว่าจำนวนตัวละครจะลดลง อย่างไรก็ตามฉันไม่ได้เขียนคนนี้ในฐานะผู้สมัครที่จริงจัง ดังนั้นปล่อยให้เรื่องนี้อย่างใดอย่างหนึ่งได้รับการโหวตสำหรับบุญของตัวเองและเขียนคำตอบอื่นใช้เป็นมากหรือน้อยของคำตอบนี้เท่าที่คุณต้องการ :)
tzot

ขอบคุณฉันจะผ่านถ้าไม่มีใครสนใจจริงๆ ฉันแค่อยากจะชี้ให้เห็นว่าวิธีการแก้ปัญหานี้สามารถทำให้สั้นกว่าเดิมอย่างมาก
ฮัน

3

PHP, 194 189 ตัวอักษร

php -r'=gzinflate(base64_decode("dU/BDcQgDPszhX+lUqVs0xeSb5AMf3ZI+7qDACa2EwABeNXR4M/goxqJPUm+oLinEishKTdbKtuMQsTCC6C1EApUInHIvOlP+9zbO6PaTZ6+ynZDEZ1INFuNRu5z+ZVsMHHax1DAibCqZRdVZ/z6esYX"));'

โดยพื้นฐานแล้วเหมือนกับคำตอบของ Python และ Perl สั้นกว่าเล็กน้อย


php -r'=...'เคล็ดลับดูเหมือนจะไม่ทำงานสำหรับฉัน แต่คุณก็สามารถใช้<?=...184 ตัวอักษร นอกจากนี้ผลลัพธ์ของคุณดูเหมือนจะมีพื้นที่พิเศษที่rและlตรงตาม
Ilmari Karonen

OSX 5.3.6 -r'=..'ทำงานได้ดีกับ ที่ไม่php -rได้นับ? มันรวมอยู่ใน 189chars ของฉัน ...
konsolenfreddy

โดยทั่วไปชื่อของล่ามจะไม่นับ สำหรับตัวเลือกบรรทัดคำสั่งฉันได้รับไปด้วยด้าย meta นี้ ; การ-rสลับของ PHP นั้นเป็นกรณีของเส้นเขตแดนเนื่องจากนอกจากการรับโค้ดเป็นพารามิเตอร์และเรียกใช้แล้วมันยังแก้ไขสภาพแวดล้อมการแยกวิเคราะห์เล็กน้อยเมื่อเทียบกับการเรียกใช้รหัสจากไฟล์ ฉันจะมีความโน้มเอียงที่จะนับเป็น 2 ตัวอักษรพิเศษ - <?ซึ่งบังเอิญทำให้มันแม้จะมี
Ilmari Karonen

3

ในภาษาอื่น ๆ : C (เวอร์ชั่นดั้งเดิม), 209 ตัวอักษร ; Perl 200 ตัวอักษร

J, 167 160 chars (47 + 113)

การส่งแบบไม่มีการบีบอัดในตัว ใช้การเข้ารหัสความยาวแปรผันตรงไปตรงมาเข้ารหัสอักขระแต่ละตัวเป็นชุดข้อมูล 1 บิตและแยกอักขระด้วย 0 บิต สตริงที่บีบอัดเป็นอักขระ 113 เท่านั้น

('a _|\/',CR,'()V`,'''){~#;.2,(6$2)#:40-~3&u:'8H1(((((H:f[4ZS4ZP2(RPMAMANf[>CZD[F;I[OVFF;TgfS5aGd[7T9JW4[eG[+Of7ddg?d[.AfT]WUASE=S>bSdgI]cS[RWBYSE?gSeG_X(()WG('

2

Python (2.7.x), 218 ตัวอักษร

import base64,zlib;
print zlib.decompress(base64.b64decode("eNo9T8ENxCAMe5cp/DsqVco2fSH5BsnwZ4ccEIhxbAIgAK9KvDRwGBEjsSfJA6r2N7EISbmrpbLNKFRYOABaC6FAEYkPW/Ztm1t7Z1S3ydtHuV4ooolEV6vPyJ2XH8kGE7d9DAVMhFUte6h7xv5rxg8sf0Qc"))

ค่อนข้างตรงไปตรงมา ... ไม่พอใจอย่างมากกับความพยายามนี้


2

Bash, 199 196 193 ตัวละคร

base64 -d<<<H4sIAAAAAAAAAz1PQQ6AIAw7S+IfelMTk/3GE0l9CI+3HRPYoHQtAxCAMzduGliMiL0NzElygSz+LiYhLWc1VekzDFU6FoCyIxRIYuBgyd7f5+5eGdnv5OWjbA8UUcRAVbORfBN0v5MFTlw2MhQwEVaV7KYu2tv88IgPjUlb7QoBAAA=|zcat

ใกล้พอ ...

แก้ไข: ลงไปที่ 193!


1
ดี คุณสามารถประหยัดสามตัวอักษรมากขึ้นโดยการแทนที่ด้วยgzip -d zcat
Ilmari Karonen

3
การใช้ where-string จะประหยัดกว่าเสียงสะท้อน
Peter Taylor

2

ทุบตี, 196 192

base64 -d<<<H4sIAO4SqFMCA3VPQQ7AIAi7+4re5pIl/GYnk+4hPH4U0dOmILUUUBCAPEOBn8Wlao65SW6QudWJSYSUM5sqlQlZJAY2QPiAhSEJx8GSPVWm0TppOa3z1DWqboRZEY7K5pzmMw49kgU6TtXRwiDCpCrZxejTvn7u1l5z59MGKQEAAA|zcat

1

Perl, 230 ตัวอักษร

use Compress::Zlib;
use MIME::Base64;
print uncompress(decode_base64('eNo9T8ENxCAMe5cp/DsqVco2fSH5BsnwZ4ccEIhxbAIgAK9KvDRwGBEjsSfJA6r2N7EISbmrpbLNKFRYOABaC6FAEYkPW/Ztm1t7Z1S3ydtHuV4ooolEV6vPyJ2XH8kGE7d9DAVMhFUte6h7xv5rxg8sf0Qc'));

นี่เป็นคำตอบเดียวกับ Python ของฉัน ฉันอยากเห็นเวอร์ชั่น 199 ตัว .. ดูเหมือนว่าวิเศษ


ฉันยังไม่ได้โพสต์มัน แต่คุณกำลังถูกทาง แน่นอนฉัน / หวังว่าจะมีใครบางคนเอาชนะมันด้วยวิธีที่แตกต่างอย่างสิ้นเชิง
Ilmari Karonen

1

เพิร์ล 294 290 ไบต์

สตริงที่บีบอัดอย่างเดียวคือ 151 130 ไบต์

นี่ไม่ใช่สั้น แต่สนุกมากที่จะเขียน

@t=split//,"_|\\/\n()V',`";$b.=substr unpack("B8",chr(-48+ord)),2,6 for split//,'Ph?`@Ooooo1l410````0066600?03l0001PP06600HHB1Q064L4D<8h8^::<DLL4@J0032>1D<90h<>00hHI@6QhYllLX3@`hHI@1Q04P@1Q04@002080R001I^80a074001Q07208P0B0X34ooo`ST';$b=~s/(1)|(0.{4})/$1?" ":$t[ord pack"B8","000$2"]/eg;print$b

@t=split//," _|x"x4 ."\\/\n()V',`";$b.=substr unpack("B8",chr(-48+ord)),2,6 for split//,'4100A0000000001017:8R5HR5@1@05E15R5R;:9Ra4`8\\A<0<30a`<C4C2=URa7PRbP@PG4R<g@P<3D=C4cM288S=RK:HV`EVK1G<d0`LL74`EaV2K1Mg=db0000002ab';$b=~s/1(1.{4})|(..)/$t[ord pack"B8","000".($2?"000$2":$1)]/eg;print$b

1

Perl, 346 ไบต์

สตริงที่บีบอัดอย่างเดียวคือ 111 ไบต์

@t = split//, " _|\\/\n()V',`";
$k=[0,[1,[2,[[3,4],[[5,6],[7,[[8,9],[10,11]]]]]]]];

$b .= substr unpack("B8", chr(-48+ord)), 2, 6 for split//,'@P900000PBlc<b[<bX:0ZXUIUIVlcFKZLI^Y`LLMhjjW<oJcMGncNHS5MIW]l`ho3lMNgc<IW]V]i[=KUF]KUG[hL^l^^EMeSFiGmNggP001^Pl';

$d = $k;
$o.=$d=~/^\d/?$t[$s=$d,$d=$$k[$_],$s]:($d=$$d[$_],"")for split//,$b;
print $o

พยายามทำความเข้าใจกับสิ่งที่หลามkey= (0,(1,((((7,5),(6,(8,(11,(9,10))))),(4,3)),2))) ทำฉันลงเอยด้วยการทำเพอร์เพิลรุ่นที่คล้ายกันมาก


1

PHP 590

เห็นได้ชัดว่าฉันไม่ได้พยายามที่จะชนะเพียงแค่ได้รับความสนใจในการลองรูปแบบการบีบอัดอื่น ๆ แต่ก็ไม่สามารถเอาชนะโซลูชันข้อความธรรมดา 302 แบบธรรมดาที่เรียบง่ายของ PHP เพียงแค่คัดลอกวาง

มันทำงานเป็นบิตแมปใน 10 ช่อง

"แข็งแรงเล่นกอล์ฟ"

<? $l=['_'=>['l8kqo,ei','9uo6,2fko0','52m0w,5r1c','540lc,5maq','lifeo,19i7ai'],'|'=>[0,'1h39j4,105','1h2k8w,q9x','14l2jk,wlx','1h39j4,wlc','1s,0'],'/'=>[2=>'b9c0,n3kao','pa8,18y68','0,mihog','w,0'],'\\'=>[2=>'pc5,a0zy8','2,0','b9c1,am2kg'],'('=>[3=>'e8,b8lc','1s,4'],')'=>[3=>'3k,2t4w','g,1'],'V'=>[3=>'0,18y680'],'`'=>[2=>'0,g'],"'"=>[2=>'0,6bk'],','=>[4=>'0,g'],];$p=@str_pad;$b=@base_convert;$i=-1;while($i++<5){$h=' ';foreach($l as$c=>$r)if(@$r[$i]){$a=explode(',',$r[$i]);$d=str_split($p($b($a[0],36,2),27,0,0).$p($b($a[1],36,2),27,0,0));foreach($d as$j=>$v)$v&&$h[$j]=$c;}echo"$h\n";}

อ่านง่าย

<?php
$l = ['_'=>['l8kqo,ei','9uo6,2fko0','52m0w,5r1c','540lc,5maq','lifeo,19i7ai'],
      '|'=>[0,'1h39j4,105','1h2k8w,q9x','14l2jk,wlx','1h39j4,wlc','1s,0'],
      '/'=>[2=>'b9c0,n3kao','pa8,18y68','0,mihog','w,0'],
     '\\'=>[2=>'pc5,a0zy8','2,0','b9c1,am2kg'],
      '('=>[3=>'e8,b8lc','1s,4'],
      ')'=>[3=>'3k,2t4w','g,1'],
      'V'=>[3=>'0,18y680'],
      '`'=>[2=>'0,g'],
      "'"=>[2=>'0,6bk'],
      ','=>[4=>'0,g'],
      ];
$p=@str_pad;
$b=@base_convert;
$i=-1;
while($i++<5){
    $h = str_repeat(' ',54);
    foreach($l as $c=>$r)
        if(@$r[$i]){
        $a = explode(',',$r[$i]);
        $d = str_split($p($b($a[0],36,2),27,0,0).$p($b($a[1],36,2),27,0,0));
        foreach($d as$j=>$v)
            if ($v)
                $h[$j]=$c;
        }
    echo "$h\n";
}

1

Pylongolf2, 300 ไบต์

" _   _      _ _                             _     _ _
| | | | ___| | | ___    __      _____  _ __| | __| | |
| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |
|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)
                    |/"~

ฉันไม่พบวิธีการเข้ารหัสที่ดีงามใด ๆ ดังนั้นฉันจึงอาจไม่แข่งขัน


0

กอล์ฟขั้นพื้นฐาน 84, 325

:"                     "_Str1t` _   _      _ _ "d`Str1d`Str1t`_     _ _"t`| | | | ___| | | ___    __      _____  _ __| | __| | |"t`| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |"t`|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|"t`|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)"t`                    |/"

สมมติว่าเครื่องคิดเลขสามารถพิมพ์ backticks, backslashes, ท่อเดียวและขีดล่าง


0

HTML + JS (223 ตัวอักษร Unicode)

แค่เล่น ๆ:

<body onload=p.innerHTML=unescape(escape("𘁟𘀠𘁟𘀠𘀠𘀠𧰠𧰠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𧰠𘀠𘀠𧰠𧰊𯀠𯀠𯀠𯀠𧱟𧱼𘁼𘁼𘁟𧱟𘀠𘀠𧱟𘀠𘀠𘀠𧱟𧱟𧰠𘁟𘁟𧱼𘁼𘁟𧱼𘁼𘁼𒡼𘁼𧱼𘁼𛰠𧰠𧀠𯀠𯀯𘁟𘁜𘀠𘁜𘁜𘀯𧀠𛰠𛰠𧰠𧁼𘀧𧱟𯀠𯀯𘁟𨀠𯀠𯀊𯀠𘁟𘀠𯀠𘁟𧰯𘁼𘁼𘀨𧰩𘁼𘀠𘁜𘁖𘀠𥠠𛰠𚁟𚐠𯀠𯀠𘁼𘁼𘀨𧱼𘁼𧱼𒡼𧱼𘁼𧱼𧁟𧱟𯁟𯁟𯁜𧱟𧰨𘀩𘀠𘁜𧰯𧁟𛰠𧁟𧱟𛱼𧱼𘀠𯁟𯁜𧱟𛁟𚁟𚐊𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𘀠𯀯").replace(/uD./g,''))><pre id=p>

หมายเหตุ: คุณต้องบันทึกไว้ในไฟล์ "UTF-8 with BOM" HTML


ดี ใช้ได้กับฉันแม้ไม่มี BOM (Firefox 26 / Chromium 31) ตราบใดที่การเข้ารหัสถูกตั้งค่าเป็น UTF-8 หรือตรวจจับอัตโนมัติ อนิจจามันไม่ผ่านการรับรองภายใต้กฎที่ระบุไว้ ("โปรแกรมต้องประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ทั้งหมด") :-(
Ilmari Karonen

ฉันรู้ว่ามันเป็นเพียงเพื่อความสนุก;)
xem

0

PowerShell , 220 byes = script: 9 + ไฟล์เก็บถาวร: 211

tar xOf t

ลองออนไลน์!

สคริปต์ Powershell เพื่อสร้างไฟล์เก็บถาวรt(ดู TIO):

(
" _   _      _ _                             _     _ _",
"| | | | ___| | | ___    __      _____  _ __| | __| | |",
"| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |",
"|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|",
"|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)",
"                    |/"
) | Set-Content f -Force
tar zcfo t f
Get-ChildItem t # output info about archive size
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.