Alice , 49 byte * 2 = 98 144
/:G!4o3r8"1=5',0Grey9Z<@
\"b0=dnm 2'i%g<7R6~e.;o/
Hãy thử trực tuyến!
Giải trình
/...@
\.../
Đây là khung thông thường cho các chương trình tuyến tính hoạt động hoàn toàn trong chế độ Thông thường. Mở ra luồng điều khiển ngoằn ngoèo, chúng tôi nhận được:
"G04d3m821i5g,7G6ee9;<:b!=onr "'=%'<0Rr~y.Zo@
Ý tưởng cơ bản là tránh các ký tự lặp lại nhiều hơn hai lần với sự trợ giúp của phiên âm. Phiên âm chúng ta sẽ làm như sau:
input: "G04d3m821i5g,7G6ee9;<:b!"
from: "0123456789:;<"
to: "onr "
Cách chuyển ngữ hoạt động trong Alice là chuỗi from
và to
lần đầu tiên được lặp lại với LCM theo độ dài của chúng, mặc dù trong trường hợp này, tất cả các vấn đề là độ dài của from
chuỗi, vì vậy chúng tôi nhận được:
from: "0123456789:;<"
to: "onr onr onr o"
Bằng cách này, chúng tôi nhận được bốn nhân vật khác nhau để đại diện cho o
s, và ba từng cho n
, r
và không gian. Chúng ta có thể tạo from
chuỗi bằng cách mở rộng phạm vi như sau:
'< Push "<".
0 Append a zero.
R Reverse.
r Range expansion.
Vấn đề duy nhất bây giờ là chúng ta cần bốn "
cho cả chuỗi input
và to
chuỗi. Để tránh điều đó, chúng tôi đặt cả hai thành một chuỗi và tách nó tại =
một dấu phân cách.
"G04d3m821i5g,7G6ee9;<:b!=onr "
Push the string containing both parts.
'=% Split around "=".
Phần còn lại chỉ là:
~ Swap "from" and "to".
y Transliterate.
.Z Duplicate and interleave. This duplicates each character.
o Print.
@ Terminate the program.