ให้คีย์และอาร์เรย์ของสตริงสับเปลี่ยนอาร์เรย์เพื่อให้เรียงลำดับเมื่อแต่ละองค์ประกอบมี XOR'd ด้วยคีย์
แฮคเกอร์สองสาย
ในการ XOR สตริงโดยคีย์ XOR แต่ละค่าอักขระของสตริงโดยคู่ในคีย์โดยสมมติว่าคีย์ซ้ำตลอดไป ตัวอย่างเช่นabcde^123
ดูเหมือนว่า:
a b c d e
1 2 3 1 2
--------------------------------------------
01100001 01100010 01100011 01100100 01100101
00110001 00110010 00110011 00110001 00110010
--------------------------------------------
01010000 01010000 01010000 01010101 01010111
--------------------------------------------
P P P U W
การเรียงลำดับ
การเรียงลำดับควรทำตามคำย่อของสตริง XOR'd เสมอ นั่นคือ1 < A < a < ~
(สมมติว่าเข้ารหัส ASCII)
ตัวอย่าง
"912", ["abcde", "hello", "test", "honk"]
-- XOR'd
["XSQ]T", "QT^U^", "MTAM", "Q^\R"]
-- Sorted
["MTAM", "QT^U^", "Q^\R", "XSQ]T"]
-- Converted back
["test", "hello", "honk", "abcde"]
หมายเหตุ
- รหัสจะต้องมีอักขระอย่างน้อย 1 ตัวเสมอ
- รหัสและอินพุตจะประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้น
- สตริง XOR อาจมีอักขระที่ไม่สามารถพิมพ์ได้
- อินพุตและเอาต์พุตอาจทำได้ผ่านวิธีการที่เหมาะสม
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- คุณสามารถรับคีย์และอินพุตในลำดับใดก็ได้
กรณีทดสอบ
key, input -> output
--------------------
"912", ["abcde", "hello", "test", "honk"] -> ["test", "hello", "honk", "abcde"]
"taco", ["this", "is", "a", "taco", "test"] -> ["taco", "test", "this", "a", "is"]
"thisisalongkey", ["who", "what", "when"] -> ["who", "what", "when"]
"3", ["who", "what", "when"] -> ["what", "when", "who"]
นี่คือรหัสกอล์ฟอย่างน้อยไบต์ชนะ!