เข้ารหัสสตริงสำหรับมนุษย์ต่างดาวที่อ่านและเขียนภาษาอังกฤษ แต่ไม่รู้จัก ASCII


12

ปรากฎมีบางคนต่างด้าวที่ห่างไกลที่รู้ภาษาอังกฤษ(และได้มาตรฐานโดยบังเอิญบนสถาปัตยกรรมคอมพิวเตอร์ 8 บิต) แต่พวกเขาไม่เคยได้ยินเกี่ยวกับ ASCII หรือแม้แต่ลำดับตัวอักษร

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

มีการสร้างมาตรฐานใหม่สร้างขึ้นหลังจากที่ Arecibo Message ใช้ความยาวของสัญญาณ semiprime:

การเข้ารหัสกึ่งสากลสำหรับการแลกเปลี่ยนข้อมูล (USCII)

(ดู: http://uscii.hostilefork.com )

ใน USCII แต่ละรหัสได้มาจากบิตแมปที่แสดงถึงตัวละครซึ่งมีความกว้างและความสูงเฉพาะ ตัวอย่างเช่นการแสดงตัวอักษร 5x7 นี้:

01110
10001
10001
10001
11111
10001
10001

ที่ผลิต 35 บิต แต่เพื่อที่จะทำให้ข้อความตัวอักษรเดียวโดดเด่นจากเสียงรบกวนและดูสอดคล้องกันสตริงถูกฝังอยู่ในรูปแบบคอนเทนเนอร์ที่ช่วยเสริมปัจจัยสำคัญ คอนเทนเนอร์ได้รับเลือกเพื่อให้ง่ายต่อการจัดการสตริงบนสถาปัตยกรรมที่ทำงานกับหลายรายการจำนวน 8 บิต

ด้วยคอนเทนเนอร์ของมัน "A" ด้านบนจะมีลักษณะดังนี้:

0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
0111010001100011000111111100011000100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111

อักขระของข้อความจะถูกนำหน้าด้วยบิตแมปแข็ง 5x7 ห้าตัวและเพิ่มบิตแข็ง 5x7 บิตแมปเจ็ดส่วน ( "เมตร" ) จากนั้นแต่ละเหล่านี้มีห้า 0 บิตติดอยู่ปลายเพื่อให้ได้ 40 บิต

ในที่สุดก็มีการเพิ่มการรันทั้งหมด 40 บิต 7 ศูนย์ถึงจุดเริ่มต้นและเพิ่มการวิ่ง 40 บิตทั้งหมด 5 รายการไปยังจุดสิ้นสุด ( "ความเงียบ" )

ภารกิจของคุณ

คุณต้องเขียนโปรแกรมเปลี่ยนไฟล์ อินพุตเป็นสตริง ASCII ทั่วไปที่พิมพ์จากแป้นพิมพ์ บิตแมปที่คุณจะใช้จาก 5x7 อักษร CPU PIC

(หมายเหตุ: มันง่ายพอที่จะดึงแบบอักษรจากหน้าสำหรับนักกอล์ฟฝีมือดีทุกคนที่นี่ แต่ถ้าคุณต้องการไบต์เหล่านั้นทั้งหมดมารวมกันที่นี่พวกเขาเป็น )

เอาต์พุตควรเป็นสตริงที่พิมพ์เป็นเลขฐานสิบหก

ตัวอย่าง

อินพุต :

ABCDEFG

ผลผลิต :

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

อินพุต :

Dear aliens: Please get me off of this planet!!!

ผลผลิต :

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

ชี้แจง

เงื่อนไขการชนะ

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


ในความคิดของฉันเอเลี่ยนอาจคิดว่าเราคลั่งไคล้ที่จะส่งเรื่องนั้นให้พวกเขา
Kyle Kanos

7
@KyleKanos หากเอเลี่ยนฉลาดพวกเขาจะคิดว่ามันเท่ห์ ข้อสรุปว่ามนุษยชาติเป็นบ้าจะเกิดขึ้นไม่นานหลังจากที่มีคนใช้รูปแบบเพื่อส่งข้อมูลจากแหล่งข่าวระดับโลก
HostileFork บอกว่าอย่าเชื่อถือ SE

บรรทัดสุดท้ายไม่ได้จัดรูปแบบคุณสามารถจัดรูปแบบเหมือนกับบรรทัดอินพุตและเอาต์พุตอื่นได้หรือไม่
อัล

@ n.1 เบราว์เซอร์ของคุณแสดงผลไม่ถูกต้องหรือไม่ มันดูดีในเหมือง ยินดีที่จะเปลี่ยนแปลงหากมีปัญหาทางเทคนิค แต่ตามที่อธิบายถึงเงื่อนไขการชนะมันเป็นเทคนิค "ใช้" และไม่ใช่ "พูดถึง" ในความแตกต่างที่กล่าวถึงการใช้งานดังนั้นฉันจึงมีไว้ในรูปแบบข้อความตามวัตถุประสงค์ :-)
HostileFork พูดว่าไม่เชื่อถือ SE

@Dr Rebmu: ในเบราว์เซอร์บนเดสก์ทอปก็ตกลง แต่มีแอป Android คำถามคือกว้างเกินไป: meta.stackexchange.com/q/231512/237701
AL

คำตอบ:


3

Python 2 671 669 663 ไบต์

D=str.decode
d=D(D("eJxNUmsSHiEIuxIgvn76sXr/IzVB26kzqyxCCBGRt0xlOM5RbXp6qv32Omu6lT22nTGiOVe05muMFXM11ZuuynwV52f8E7W11+SdzGMvTl6GHvm3ig6RRBbp3nqNqGEFeACK7m5YZYPAMMGV6qyk4ydKKD3FTPeAcQZhUAw4lh4aR8YcWaaVV480lDTJF64thyT4T+8tCjVofOtLnKInAAYDyJ0e9lxj+wJk/MYJ0nBQvYaRhnbQQEIrB5t1fX2VwdMnZF1zLF/Gf2H62PtXGYwypU5msXo2mNUvclE+QXqY3sNkg3GcKReKRTPrGnizNNCOw+tenSWaLQZf6VC926UYVw7I0y/eDEOo/LfKvvLdEQjt7NTzLXrkI2MmNrMPRYDng4a6VR0ThTKMgUA9XlYzTIsk+XtCH+y2mk1rf6VD4V7Xh2Cxb2YWkdkprlDCTR6yv5jnQSuQScEb0CBu5WXZ1ScN6gMDvWa73HNoy845VMg7wLBlA9wwhAMTiNn6ravFH00dtSc=","base64"),"zip")
i=raw_input()
m="F"*8+"E0"
o="0"*70+m*5
for c in i:x=ord(c)*9-288;o+=d[x:x+9]+"0"
print o+m*7+"F"*50

PHP กับ zlib 738 716 715 ไบต์

<?php $d=gzinflate(base64_decode("TVJrEh4hCLsSIL5++rF6/yM1QdupM6ssQggRkbdMZTjOUW16eqr99jprupU9tp0xojlXtOZrjBVzNdWbrsp8Fedn/BO1tdfkncxjL05ehh75t4oOkUQW6d56jahhBXgAiu5uWGWDwDDBleqspOMnSig9xUz3gHEGYVAMOJYeGkfGHFmmlVePNJQ0yReuLYck+E/vLQo1aHzrS5yiJwAGA8idHvZcY/sCZPzGCdJwUL2GkYZ20EBCKwebdX19lcHTJ2Rdcyxfxn9h+tj7VxmMMqVOZrF6NpjVL3JRPkF6mN7DZINxnCkXikUz6xp4szTQjsPrXp0lmi0GX+lQvdulGFcOyNMv3gxDqPy3yr7y3REI7ezU8y165CNjJjazD0WA54OGulUdE4UyjIFAPV5WM0yLJPl7Qh/stppNa3+lQ+Fe14dgsW9mFpHZKa5Qwk0esr+Y50ErkEnBG9AgbuVl2dUnDeoDA71mu9xzaMvOOVTIO8CwZQPcMIQDE4jZ+q2rxR8="));$i=trim(fgets(STDIN));$f="str_repeat";echo $f(0,70).$f($m="FFFFFFFFE0",5);foreach(str_split($i)as$c)echo substr($d,ord($c)*9-288,9)."0";echo $f($m,7).$f("F",50);

ครั้งแรกที่ความต้องการ PHP --with-zlibของคุณจะถูกกำหนดค่าด้วย php 26972.phpและเรียกใช้สคริปต์นี้จากบรรทัดคำสั่งเช่น โปรแกรมนี้รับอินพุตจาก STDIN

(ถ้าshort_open_tag=Onฉันสามารถบันทึกได้อีก 3 ไบต์)

Ungolfed

<?php
$data = gzinflate(base64_decode("TVJrEh4hCLsSIL5++rF6/yM1QdupM6ssQggRkbdMZTjOUW16eqr99jprupU9tp0xojlXtOZrjBVzNdWbrsp8Fedn/BO1tdfkncxjL05ehh75t4oOkUQW6d56jahhBXgAiu5uWGWDwDDBleqspOMnSig9xUz3gHEGYVAMOJYeGkfGHFmmlVePNJQ0yReuLYck+E/vLQo1aHzrS5yiJwAGA8idHvZcY/sCZPzGCdJwUL2GkYZ20EBCKwebdX19lcHTJ2Rdcyxfxn9h+tj7VxmMMqVOZrF6NpjVL3JRPkF6mN7DZINxnCkXikUz6xp4szTQjsPrXp0lmi0GX+lQvdulGFcOyNMv3gxDqPy3yr7y3REI7ezU8y165CNjJjazD0WA54OGulUdE4UyjIFAPV5WM0yLJPl7Qh/stppNa3+lQ+Fe14dgsW9mFpHZKa5Qwk0esr+Y50ErkEnBG9AgbuVl2dUnDeoDA71mu9xzaMvOOVTIO8CwZQPcMIQDE4jZ+q2rxR8="));
$input = trim(fgets(STDIN));
$f = "str_repeat";

echo $f(0, 70).$f($m = "FFFFFFFFE0", 5);
foreach(str_split($input) as $c)
    echo substr($data, ord($c) * 9 - 288, 9)."0";
echo $f($m, 7).$f("F", 50);

+1 สำหรับแนวคิดในการใช้เลขฐานสิบหกเพียง 9 หลักในข้อมูลที่ถูกบีบอัด
user2846289

716 คือ # ที่จะชนะ ... แม้ว่าฉันจะจินตนาการว่ามันสามารถทำได้น้อยกว่า! ฉันจะโปรดปรานมันนิดหน่อย แต่ถ้าไม่มีใครชนะฉันจะเลิกมอบมันให้คุณ ... อย่างน้อยคุณก็มี Python version ไม่ใช่ PHP :-)
HostileFork พูดว่าไม่เชื่อถือ SE

เอาล่ะ 663 และไม่ใช่ใน PHP - ดียิ่งขึ้น :-) เงินรางวัลเป็นของคุณ!
HostileFork บอกว่าอย่าเชื่อถือ SE

2

สิ่งนี้พิมพ์เลขฐานสิบหกที่มนุษย์สามารถอ่านได้ (เทียบกับไบนารีเพื่อให้อ่านง่าย) ทุกอย่างถูกนำเสนอในแบบยาวที่ไม่ได้ลงนามและมีการใช้เลขฐานสิบหก 9-10 หลักเท่านั้น (ขึ้นอยู่กับว่าคุณใส่แผ่นรอง 00000) รูปแบบ 6x5 ที่โชคร้าย (ตัวอักษร 8x4 นั้นง่ายเกินไป)

#include <stdio.h>
#define u unsigned long long
void p(int n, u x){while(n--) printf("%09llX",x);}
int main(void){
char *s="ABCDEFG";
u a[128]={0xAAAAAAAAAULL,0xADEB7ADEAULL,0xDFF7FDFF6ULL,0xDEF7BDFF6ULL,0xFFFFFFCE6ULL,0xFF41DB82EULL,0xFD7FF747EULL,0xDC63107F6ULL,0xFEEE0BEFEULL,0x0003D0800ULL,0xE1084FB88ULL,0x21084201CULL,0xFB880FB88ULL,0x084ADFB08ULL,0x25F7BDF78ULL,0xE777BDDC8ULL,0xFFC8E27FEULL,0xFDE719DFEULL,0xDED4A73A2ULL,0xFD6B5AD7EULL,0xFC6318C7EULL,0xFD7FF8BBEULL,0xFFFFFFABEULL,0xF81CA703EULL,0x881445022ULL,0xFC58A347EULL,0x8BBDDDFF6ULL,0x1995E73A2ULL,0xAD6B5AD6AULL,0xDEF7BDEF6ULL,0xF7B5204F6ULL,0xFFFFF9EEEULL,0x000000000ULL,0x210840008ULL,0x529400000ULL,0x52BEAFA94ULL,0x23E8E2F88ULL,0xC644444C6ULL,0x64A88AC9AULL,0x611000000ULL,0x111084104ULL,0x410421110ULL,0x012AEA900ULL,0x0109F2100ULL,0x000006110ULL,0x0001F0000ULL,0x000000318ULL,0x004444400ULL,0x74675CC5CULL,0x23084211CULL,0x74422223EULL,0xF88820C5CULL,0x11952F884ULL,0xFC3C10C5CULL,0x3221E8C5CULL,0xF84444210ULL,0x7462E8C5CULL,0x7462F0898ULL,0x031806300ULL,0x031806110ULL,0x111104104ULL,0x003E0F800ULL,0x410411110ULL,0x744222008ULL,0x7442DAD5CULL,0x74631FC62ULL,0xF463E8C7CULL,0x74610845CULL,0xE4A318CB8ULL,0xFC21E843EULL,0xFC21E8420ULL,0x746178C5EULL,0x8C63F8C62ULL,0x71084211CULL,0x388421498ULL,0x8CA98A4A2ULL,0x84210843EULL,0x8EEB58C62ULL,0x8C7359C62ULL,0x746318C5CULL,0xF463E8420ULL,0x74631AC9AULL,0xF463EA4A2ULL,0x7C20E087CULL,0xF90842108ULL,0x8C6318C5CULL,0x8C6318A88ULL,0x8C631AD54ULL,0x8C5445462ULL,0x8C62A2108ULL,0xF8444443EULL,0x72108421CULL,0x000000000ULL,0x70842109CULL,0x22A200000ULL,0x00000003EULL,0x410400000ULL,0x001C17C5EULL,0x8421E8C7CULL,0x001F0841EULL,0x0842F8C5EULL,0x001D1FC1EULL,0x1148E2108ULL,0x001F1787CULL,0x8421E8C62ULL,0x010042108ULL,0x100421498ULL,0x4212A6292ULL,0x61084211CULL,0x00375AD62ULL,0x002D98C62ULL,0x001D18C5CULL,0x003D1F420ULL,0x001F17842ULL,0x002D98420ULL,0x001F0707CULL,0x213E42144ULL,0x002318C5CULL,0x002318A88ULL,0x00231AD54ULL,0x0022A22A2ULL,0x0022A2110ULL,0x003E2223EULL,0x190882106ULL,0x210802108ULL,0xC10822130ULL,0x0BA000000ULL,0xFE2A2AE3EULL};
p(7,0ULL);
p(5,0xFFFFFFFE0ULL);
while(*s)p(1,a[*s++]);
p(7,0xFFFFFFFE0ULL);
p(5,0xFFFFFFFFFULL);
return 0;
}

ทุบตี

#!/bin/sh 
p(){
i=0
while ([ $i -lt $1 ]) do
printf $2
i=$((i+1))
done
}

t(){
#Given string input $1, go char by char & create "alien" representation 

C='~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !"#$%&~)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
A="AAAAAAAAA0ADEB7ADEA0DFF7FDFF60DEF7BDFF60FFFFFFCE60FF41DB82E0FD7FF747E0DC63107F60FEEE0BEFE00003D08000E1084FB88021084201C0FB880FB880084ADFB08025F7BDF780E777BDDC80FFC8E27FE0FDE719DFE0DED4A73A20FD6B5AD7E0FC6318C7E0FD7FF8BBE0FFFFFFABE0F81CA703E08814450220FC58A347E08BBDDDFF601995E73A20AD6B5AD6A0DEF7BDEF60F7B5204F60FFFFF9EEE000000000002108400080529400000052BEAFA94023E8E2F880C644444C6064A88AC9A0611000000011108410404104211100012AEA90000109F2100000000611000001F000000000003180004444400074675CC5C023084211C074422223E0F88820C5C011952F8840FC3C10C5C03221E8C5C0F8444421007462E8C5C07462F08980031806300003180611001111041040003E0F8000410411110074422200807442DAD5C074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E08C63F8C62071084211C038842149808CA98A4A2084210843E08EEB58C6208C7359C620746318C5C0F463E8420074631AC9A0F463EA4A207C20E087C0F9084210808C6318C5C08C6318A8808C631AD5408C544546208C62A21080F8444443E072108421C0000000000070842109C022A200000000000003E04104000000001C17C5E08421E8C7C0001F0841E00842F8C5E0001D1FC1E01148E21080001F1787C08421E8C620010042108010042149804212A6292061084211C000375AD620002D98C620001D18C5C0003D1F4200001F178420002D984200001F0707C0213E421440002318C5C0002318A88000231AD5400022A22A200022A21100003E2223E019088210602108021080C1082213000BA0000000FE2A2AE3E0"

j=0 
p 7 0000000000
p 5 FFFFFFFFE0
while ([ "${j}" -lt "${#1}" ]) do 
   i=${C%${1:$j:1}*}
   i=${#i}
   printf ${A:$(( $i*10 )):10} 
   j=$(($j+1)) 
done 
p 7 FFFFFFFFE0
p 5 FFFFFFFFFF
}
t "Dear aliens: Please get me off of this planet!!!"

@ Dr.Rebmu มันใช้เวลานานกว่าที่ฉันคาดว่าจะได้รับ "แบบอักษร" เป็นรูปแบบที่ใช้การได้ ฉันวางแผนที่จะโพสต์ข้อความอื่น ๆ ของฉันในไม่ช้า แต่ก็ต้องมีการแปลงและการจัดรูปแบบมากกว่าที่คาดไว้
technosaurus

1
+1 สำหรับการประชุมคุณสมบัติ! แต่มีความเป็นไปได้มากมายในการเล่นกอล์ฟ ทำไมแนะนำตัวนับใหม่ในรูทีน p เมื่อ n ไม่แน่นอน ทำไมต้องทำซ้ำวลี "long unsigned long" สองครั้งเมื่อ #define สามารถลดขนาดลงได้ การจ่ายเงินสำหรับ 0x และ ULL คุ้มค่าในตารางที่มีการเข้ารหัสเลขฐานสิบหกซึ่งคุณจะได้รับเพียงแค่ 4 บิตต่อตัวละครเท่านั้น อื่น ๆ
HostileFork พูดว่าอย่าเชื่อถือ SE

@ Dr.Rebmu แก้ไขเคาน์เตอร์พิเศษ (การกำกับดูแล) และฉันวางแผนที่จะใช้แมโครสำหรับ0x##number##ULL(ดูรุ่นทุบตีสำหรับตัวเลือกถ่าน) แต่ ideone.com คิดว่ามันเป็นการเรียกใช้ฟังก์ชั่นดังนั้นฉันก็เลย (gcc ไม่เป็นไร) ... ฉันสามารถลบ (โมฆะ) ออกจากหลักได้ด้วย แต่บางสิ่งดูเหมือนผิด
technosaurus

ในรหัสกอล์ฟสิ่งเดียวที่ "ผิด" คือถ้ามันไม่ทำงานหรือตรงตามสเป็ค ... การ"ถูก" คือตัวละครน้อยลง ! หากคุณกำลังจะใช้วิธีการที่นี่ในโปรแกรม C ของคุณฉันจะบอกว่าคุณสามารถนับจำนวนตัวอักษรได้โดยใช้สตริง hex แทนการรบกวนด้วยความยาวที่ไม่ได้ลงนาม(โดยเฉพาะเมื่อคุณไม่ต้องการค่าจำนวนเต็ม ยกเว้นการแปลงกลับเป็นสตริงซึ่งเพิ่มรหัส ... )
HostileFork พูดว่าไม่ไว้วางใจ SE

โปรดเพิ่มจำนวนไบต์ให้กับชื่อ นอกจากนี้คุณควรเพิ่มรหัสของคุณให้มากขึ้น
user12205

2

PHP, 874 ไบต์

คุณจะต้องเรียกใช้สคริปต์นี้จากบรรทัดคำสั่ง ( php uscii.php) เพราะจะรับข้อมูลจาก stdin

<?php $f=base64_decode(str_replace('@','AA','@@@QhC@RSl@AClfV9SiPo4viYyIiJjZKiKyawi@@REIQQSCCEIiAEq6p@IT5C@@GEQ@Pg@@@xgAiIiAHRnXMXEYQhCOdEIiI/8RBBi4RlS+IX4eCGLjIh6MXfCIiEIdGLoxc6MXhEwDGAYwAGMAwiBERBBBAB8HwAQQQREQ6IREAR0QtrVzoxj+MfRj6MfOjCEIu5KMYy5+EPQh/8IehCDowvGL4xj+MYuIQhCOOIQhSZGVMUlGEIQhD8d1rGMYxzWcYujGMYu9GPoQg6MY1k30Y+pKL4QcEPvkIQhCRjGMYujGMYqJGMY1qqMVEVGMYxUQhPhEREPuQhCEOBBBBBA4QhCE4iog@@@AH0EE@@A4L4vhCHox8AD4Qg8IQvjF4AOj+DxFI4hC@+Lw+hCHoxiAgCEIQQBCFJiEJUxSWEIQhHAButaxAC2YxiADoxi4APR9C@Pi8IQAtmEI@+Dg+IT5CFEAEYxi4AIxiogARjWqgAioiogBFRCIAD4iI+MhEEIMhCAIQmCEEQmAug@@='));$a=trim(fgets(STDIN));$r='str_repeat';echo$r('0',70).$r($q='FFFFFFFFE0',5);foreach(str_split($a)as$c){$v=(ord($c)-32)*35;$x=$v>>3;$y=1<<(7-$v%8);$b=0;for($i=0;$i<40;$i++){$b+=$b+($i<35&&ord($f[$x])&$y);if(($i&7)==7)$b=!printf('%02X',$b);if(!($y>>=1)&&$x++)$y=128;}}echo$r($q,7).$r('F',50);

Ungolfed:

<?php

// Font bitmap data rearranged as 95 consecutive 35-bit strings and padded
// out to 416 bytes with zeros:
$f=base64_decode(str_replace('@','AA',
    '@@@QhC@RSl@AClfV9SiPo4viYyIiJjZKiKyawi@@REIQQSCCEIiAEq6p@IT5C@@GEQ@Pg'.
    '@@@xgAiIiAHRnXMXEYQhCOdEIiI/8RBBi4RlS+IX4eCGLjIh6MXfCIiEIdGLoxc6MXhEw'.
    'DGAYwAGMAwiBERBBBAB8HwAQQQREQ6IREAR0QtrVzoxj+MfRj6MfOjCEIu5KMYy5+EPQh'.
    '/8IehCDowvGL4xj+MYuIQhCOOIQhSZGVMUlGEIQhD8d1rGMYxzWcYujGMYu9GPoQg6MY1'.
    'k30Y+pKL4QcEPvkIQhCRjGMYujGMYqJGMY1qqMVEVGMYxUQhPhEREPuQhCEOBBBBBA4Qh'.
    'CE4iog@@@AH0EE@@A4L4vhCHox8AD4Qg8IQvjF4AOj+DxFI4hC@+Lw+hCHoxiAgCEIQQB'.
    'CFJiEJUxSWEIQhHAButaxAC2YxiADoxi4APR9C@Pi8IQAtmEI@+Dg+IT5CFEAEYxi4AIx'.
    'iogARjWqgAioiogBFRCIAD4iI+MhEEIMhCAIQmCEEQmAug@@='));

// Fetch input:
$a=trim(fgets(STDIN));

// Header:
$r='str_repeat';
echo $r('0',70).$r($q='FFFFFFFFE0',5);

// Convert each input character into its corresponding hex sequence:
foreach (str_split($a) as $c) {
  $v=(ord($c)-32)*35;
  $x=$v>>3;
  $y=1<<(7-$v%8);
  $b=0;
  for ($i=0;$i<40;$i++) {
    // When $i>34, pad with zeros
    $b += $b + ($i<35 && ord($f[$x]) & $y);
    if (($i&7)==7) $b=!printf('%02X',$b); // print out $b and set $b=0
    // Shift mask to next bit position
    if (!($y>>=1)&&$x++) $y=128;
  }
}

// Tail:
echo $r($q,7).$r('F',50);

+1 (แม้ว่าฉันหวังว่าจะไม่มีใครส่ง PHP ไปยังเอเลี่ยน !!)
HostileFork บอกว่าอย่าไว้ใจ SE

2

JavaScript ES6 (838 ไบต์)

_="z='00000';r=(n,m)=>m.repean);fop=prompi=o=';i<p.length;)o+=parseInatob('RSlClfV9SiPo4viYyIiJjZKiKyawiRQQSCCEq6pGEQPgxgAiIHRnXMXEYOdiI/8Ri4RlS+IX4eCGLjIhXfCIidGLcXhEwDGAYwAGMAwiBERBAB8HwAQQQREQ6IREAR0QtrVzj+MfRjfOjCu5KMYy5+EP/8IeDowvGL4xj+MYuIOOISZGVMUlGD8d1rxzWcYuju9GPoQgY1k30Y+pKL4QcEPvkIRjujqJ1qqMVEVxUPhEREPuEOBA4E4H0EEA4L4vH8AD4Qg8IQvjF4AOj+DxFI4+Lw+HgCQQBCFJiEJUxSWHAButaxAC2YxDi4APR9CPi8IQAtm+Dg+FEAEYxi4AIxARjWqgAioBFRCIAD4iI+MhEMAIQmCEEQmAugRV8nyE.split   p(e=>e028)).join    tch(/.{35}/g)[pi++)-32]+z,21610);14,z5,y='E0+o.toUpperCase(7,y5,10,'F)A.charCodeAQhGMY).toString(EI)).slice(-)+ ('.maC')hCoxiog(z+z+t(r(iABB6MFFAIT5C";for(Y in $=" ")with(_.split($[Y]))_=join(pop());eval(_)

ไม่บดขยี้ :

z='00000';r=(n,m)=>m.repeat(n);for(p=prompt(i=o='');i<p.length;)o+=(z+z+parseInt(atob('AAAAAAQhCAARSlAAAClfV9SiPo4viYyIiJjZKiKyawiAAAAREIQQSCCEIiAEq6pAAIT5CAAAAGEQAAPgAAAAAAxgAiIiAHRnXMXEYQhCOdEIiI/8RBBi4RlS+IX4eCGLjIh6MXfCIiEIdGLoxc6MXhEwDGAYwAGMAwiBERBBBAB8HwAQQQREQ6IREAR0QtrVzoxj+MfRj6MfOjCEIu5KMYy5+EPQh/8IehCDowvGL4xj+MYuIQhCOOIQhSZGVMUlGEIQhD8d1rGMYxzWcYujGMYu9GPoQg6MY1k30Y+pKL4QcEPvkIQhCRjGMYujGMYqJGMY1qqMVEVGMYxUQhPhEREPuQhCEOBBBBBA4QhCE4iogAAAAAAAH0EEAAAAA4L4vhCHox8AD4Qg8IQvjF4AOj+DxFI4hCAA+Lw+hCHoxiAgCEIQQBCFJiEJUxSWEIQhHAButaxAC2YxiADoxi4APR9CAAPi8IQAtmEIAA+Dg+IT5CFEAEYxi4AIxiogARjWqgAioiogBFRCIAD4iI+MhEEIMhCAIQmCEEQmAugAAARV8nyE').split('').map(e=>(z+z+e.charCodeAt(0).toString(2)).slice(-8)).join('').match(/.{35}/g)[p.charCodeAt(i++)-32]+z,2).toString(16)).slice(-10);r(14,z)+r(5,y='FFFFFFFFE0')+o.toUpperCase()+r(7,y)+r(5,r(10,'F'))

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