Mã hóa một chuỗi cho người ngoài hành tinh đọc và viết tiếng Anh, nhưng không biết ASCII


12

Hóa ra có một số người ngoài hành tinh xa biết tiếng Anh (và đã được chuẩn hóa ngẫu nhiên trên các kiến ​​trúc máy tính 8 bit) . Tuy nhiên, họ chưa bao giờ nghe nói về ASCII, thậm chí cả thứ tự chữ cái.

Người ta tin rằng những người ngoài hành tinh đang thu thập thông tin từ Trái đất. Tuy nhiên, họ đang làm như vậy với các thiết bị kỹ thuật số đọc thông tin vô nghĩa khi không có đường truyền nào được gửi đi ... do đó tín hiệu phải được chứa theo cách nổi bật với tiếng ồn xung quanh.

Một tiêu chuẩn mới đã được tạo ra, được mô hình hóa sau khi sử dụng Thông điệp Arecibo trong thời lượng tín hiệu bán thời gian:

Mã hóa bán phổ quát để trao đổi thông tin (USCII)

(Xem: http://uscii.hostilefork.com )

Trong USCII, mỗi mã được lấy từ một bitmap đại diện cho ký tự, có chiều rộng nguyên tố và chiều cao nguyên tố. Chẳng hạn, đại diện 5x7 này của chữ A:

01110
10001
10001
10001
11111
10001
10001

Điều đó tạo ra 35 bit. Tuy nhiên, để làm cho ngay cả các thông điệp một ký tự nổi bật khỏi nhiễu và trông mạch lạc, các chuỗi được nhúng trong một định dạng chứa giúp củng cố các yếu tố chính. Container đã được chọn để giúp dễ dàng thao tác các chuỗi trên các kiến ​​trúc hoạt động trên bội số của 8 bit.

Với thùng chứa của nó, chữ "A" ở trên sẽ trông như sau:

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

Các ký tự của tin nhắn được tiền tố đầu tiên với năm bitmap 5x7 rắn và bảy bitmap 5x7 rắn được thêm vào cuối. ( "Máy đo" .) Sau đó, mỗi cái có năm bit 0 được gắn vào đầu để tạo ra 40 bit chẵn.

Cuối cùng, có 7 lần chạy 40 bit hoàn toàn được thêm vào đầu và 5 lần chạy 40 bit tất cả được thêm vào cuối. ( " Sự im lặng" .)

Nhiệm vụ của bạn

Bạn phải viết một bộ mã hóa. Đầu vào là một chuỗi ASCII thông thường được gõ từ bàn phím. Ảnh bitmap bạn sẽ sử dụng là từ phông chữ CPU PIC 5x7 .

(Lưu ý: Thật dễ dàng để trích xuất phông chữ từ trang cho tất cả những người chơi mã tài năng ở đây, nhưng nếu bạn muốn tất cả các byte đó cùng nhau ở đây .)

Đầu ra phải là một chuỗi in ở dạng thập lục phân.

Ví dụ

Đầu vào :

ABCDEFG

Đầu ra :

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Đầu vào :

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

Đầu ra :

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Làm rõ

Điều kiện chiến thắng

0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


Theo tôi, người ngoài hành tinh có thể nghĩ rằng chúng ta thật điên rồ khi gửi cho họ những thứ đó.
Kyle Kanos

7
@KyleKanos Nếu người ngoài hành tinh thông minh, họ sẽ nghĩ nó thật tuyệt. Kết luận rằng loài người là điên rồ sẽ xảy ra ngay sau khi ai đó sử dụng định dạng để truyền thông tin cho họ từ các cơ quan báo chí toàn cầu.
HostileFork nói không tin tưởng SE

Dòng cuối cùng không được định dạng, bạn có thể vui lòng định dạng nó như các dòng đầu vào và đầu ra khác không?
AL

@ n.1 Nó không hiển thị đúng trong trình duyệt của bạn phải không? Nó trông ổn trong tôi. Rất vui được thay đổi nếu có sự cố kỹ thuật, nhưng vì nó mô tả điều kiện chiến thắng, về mặt kỹ thuật, đó là "sử dụng" và không phải là "đề cập" trong phân biệt đề cập đến sử dụng , vì vậy tôi thực sự đã sử dụng nó theo kiểu văn bản cơ thể. :-)
HostileFork nói không tin tưởng vào

@Dr. Rebmu: trong trình duyệt của tôi trên máy tính để bàn thì không sao, nhưng với ứng dụng Android thì câu hỏi quá rộng: meta.stackexchange.com/q/231512/237701
AL

Câu trả lời:


3

Con trăn 2 671 669 663 byte

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 với zlib, 738 716 715 byte

<?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);

Đầu tiên, PHP của bạn cần được cấu hình với --with-zlib. Và chạy tập lệnh này từ dòng lệnh, như php 26972.php. Chương trình này lấy đầu vào từ STDIN.

(Nếu short_open_tag=On, tôi có thể lưu thêm 3 byte.)

Ung dung

<?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 cho ý tưởng chỉ sử dụng 9 chữ số hex trong dữ liệu nén.
dùng2846289

716 là # để đánh bại cho đến nay ... mặc dù tôi tưởng tượng nó có thể được thực hiện trong ít hơn! Tôi sẽ trả lại nó một chút, nhưng nếu không ai đánh bại số đếm, tôi sẽ kết thúc việc đưa nó cho bạn ... ít nhất là bạn có phiên bản Python chứ không phải PHP. :-)
HostileFork nói không tin tưởng SE

Được rồi, 663 và không có trong PHP - thậm chí còn tốt hơn. :-) Tiền thưởng là của bạn!
HostileFork nói không tin tưởng SE

2

C

Điều này thực sự in hex con người có thể đọc được (so với nhị phân cho khả năng đọc). Mọi thứ được thể hiện dưới dạng dài không dấu và chỉ có 9-10 chữ số hex được sử dụng (tùy thuộc vào việc bạn có bao gồm phần đệm 00000 hay không) định dạng 6x5 không may (một phông chữ 8x4 sẽ quá dễ dàng)

#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;
}

bash

#!/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 Mất nhiều thời gian hơn tôi dự kiến ​​để đưa "phông chữ" thành một định dạng hoàn toàn khả thi. Tôi đã lên kế hoạch để đăng bài khác của tôi trong thời gian ngắn, nhưng phải mất nhiều chuyển đổi và định dạng hơn dự kiến.
Technosaurus

1
+1 để đáp ứng thông số kỹ thuật! Nhưng có rất nhiều khả năng trong việc chơi golf. Tại sao lại giới thiệu một bộ đếm mới trong thói quen p khi n có thể thay đổi? Tại sao lặp lại cụm từ "không dấu dài dài" hai lần khi một #define có thể cắt giảm? Việc trả tiền cho 0x và ULL có đáng không trong bảng được mã hóa hex khi bạn chỉ nhận được 4 bit cho mỗi ký tự trên các chữ số? Vv
HostileFork nói dont tin tưởng SE

@ Dr.Rebmu đã sửa lỗi bộ đếm phụ (giám sát) và tôi đã lên kế hoạch sử dụng macro cho 0x##number##ULL(xem phiên bản bash cho thay thế char), nhưng ideone.com nghĩ rằng đó là một cuộc gọi chức năng nên tôi đã kết hợp nó (gcc vẫn ổn) ... Tôi cũng có thể xóa (void) khỏi main, nhưng một số thứ có vẻ sai.
Technosaurus

Trong môn đánh gôn, "sai" duy nhất là nếu nó không chạy hoặc đáp ứng thông số ... là "đúng" thì ít ký tự hơn ! Nếu bạn sẽ sử dụng cách tiếp cận ở đây trong chương trình C của mình, tôi chắc chắn nói rằng bạn có thể đếm ngược ký tự bằng cách sử dụng chuỗi hex thay vì làm phiền với ký tự dài không dấu (đặc biệt là khi bạn không cần các giá trị nguyên ngoại trừ việc chuyển đổi chúng trở lại thành chuỗi, có thêm mã ...)
HostileFork nói rằng không tin tưởng vào

Vui lòng thêm số byte vào tiêu đề. Ngoài ra, bạn nên đánh golf mã của bạn xuống nhiều hơn.
dùng12205

2

PHP, 874 byte

Bạn sẽ cần chạy tập lệnh này từ dòng lệnh ( php uscii.php) vì nó lấy đầu vào từ 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);

Ung dung:

<?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 (mặc dù tôi hy vọng không ai gửi PHP cho người ngoài hành tinh !!)
HostileFork nói không tin tưởng vào

2

JavaScript ES6 (838 byte)

_="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(_)

Không bị nghiền nát :

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 nhưng ngoài phiên bản không bị nghiền nát, thật hữu ích khi thấy nó ở định dạng có thể đọc được mà không cần cuộn ngang ...
HostileFork nói không tin tưởng SE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.