อลิซ 49 ไบต์ * 2 = 98 144
/:G!4o3r8"1=5',0Grey9Z<@
\"b0=dnm 2'i%g<7R6~e.;o/
ลองออนไลน์!
คำอธิบาย
/...@
\.../
นี่เป็นกรอบปกติสำหรับโปรแกรมเชิงเส้นที่ทำงานทั้งหมดในโหมด Ordinal ตีแผ่การควบคุมการไหลของซิกแซกเราได้รับ:
"G04d3m821i5g,7G6ee9;<:b!=onr "'=%'<0Rr~y.Zo@
แนวคิดพื้นฐานคือการหลีกเลี่ยงตัวละครที่ทำซ้ำมากกว่าสองครั้งด้วยความช่วยเหลือของการทับศัพท์ การทับศัพท์ที่เรากำลังจะทำคือ:
input: "G04d3m821i5g,7G6ee9;<:b!"
from: "0123456789:;<"
to: "onr "
วิธีการทับศัพท์ทำงานในอลิซก็คือfrom
และto
สตริงถูกทำซ้ำกับ LCM ของความยาวของพวกเขาเป็นครั้งแรกแม้ว่าในกรณีนี้ทุกเรื่องคือความยาวของfrom
สตริงดังนั้นเราจึงได้รับ:
from: "0123456789:;<"
to: "onr onr onr o"
วิธีนี้เราได้รับสี่ตัวอักษรที่แตกต่างกันเพื่อเป็นตัวแทนของo
s และสามแต่ละn
, r
และพื้นที่ เราสามารถสร้างfrom
สตริงโดยใช้การขยายช่วงดังนี้:
'< Push "<".
0 Append a zero.
R Reverse.
r Range expansion.
ปัญหาเดียวตอนนี้คือเราต้องการสี่"
สำหรับทั้งinput
และto
สตริง เพื่อหลีกเลี่ยงปัญหานั้นเราจึงใส่ทั้งสองเข้าไปในสายเดี่ยวและแยกมันที่=
ใช้เป็นตัวคั่น
"G04d3m821i5g,7G6ee9;<:b!=onr "
Push the string containing both parts.
'=% Split around "=".
ที่เหลือก็แค่:
~ Swap "from" and "to".
y Transliterate.
.Z Duplicate and interleave. This duplicates each character.
o Print.
@ Terminate the program.