แรงบันดาลใจจากความท้าทายนี้ (ขอบคุณ @cairdcoinheringaahing สำหรับชื่อเรื่อง!) งานของคุณคือการใช้สาย ASCII สองสายที่พิมพ์ได้และคูณองค์ประกอบด้วยกฎต่อไปนี้
มันทำงานยังไง?
รับสองสาย (ตัวอย่างsplit
และisbn
) คุณจะแรกตัดทอนให้ยาวขึ้นเพื่อให้มีความยาวเท่ากันจากนั้นกำหนดรหัส ASCIIของพวกเขา:
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
ขั้นตอนต่อไปคือการแมปไปยังช่วง[0..94]
โดยการลบ32
แต่ละรหัส:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
ตอนนี้คุณจะคูณโมดูโลแบบองค์ประกอบ95
(เพื่อให้อยู่ในช่วงที่พิมพ์ได้):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
เพิ่ม32
เพื่อกลับไปที่ช่วง[32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
และขั้นตอนสุดท้ายคือการแมปกลับไปที่อักขระ ASCII:
[106, 117, 108, 121] -> "july"
กฎระเบียบ
- คุณจะเขียนโปรแกรม / ฟังก์ชั่นที่ใช้ขั้นตอนที่อธิบายไว้ในสองสายและพิมพ์หรือส่งคืนสตริงผลลัพธ์
- รูปแบบอินพุตมีความยืดหยุ่น: คุณสามารถรับได้สองสาย, tuple ของสตริง, รายการของสตริงเป็นต้น
- อินพุตอาจประกอบด้วยสตริงว่างหนึ่งหรือสองสตริง
- อินพุตจะเป็นอักขระในช่วงที่สามารถพิมพ์ได้ (
[32..126]
) - เอาต์พุตถูกพิมพ์ไปที่คอนโซลหรือคุณส่งคืนสตริง
- การส่งออกได้รับอนุญาตให้มีช่องว่างต่อท้าย
กรณีทดสอบ
"isbn", "split" -> "july"
"", "" -> ""
"", "I don't matter" -> ""
" ", "Me neither :(" -> " "
"but I do!", "!!!!!!!!!" -> "but I do!"
'quotes', '""""""' -> 'ck_iKg'
"wood", "hungry" -> "yarn"
"tray", "gzip" -> "jazz"
"industry", "bond" -> "drop"
"public", "toll" -> "fall"
"roll", "dublin" -> "ball"
"GX!", "GX!" -> "!!!"
"4 lll 4", "4 lll 4" -> "4 lll 4"
"M>>M", "M>>M" -> ">MM>"
หมายเหตุ : คำพูดนี้เป็นเพียงสำหรับการอ่านในกรณีทดสอบที่ 6 ผมใช้แทน'
"
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]