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 fromvà tolầ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 fromchuỗ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 os, và ba từng cho n, rvà không gian. Chúng ta có thể tạo fromchuỗ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 inputvà tochuỗ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.