บทนำ
Enigma เป็นหนึ่งในเครื่องเข้ารหัสโรเตอร์แบบอิเล็กทรอนิกส์เครื่องแรกที่ใช้ในสงครามโลกครั้งที่สอง นั่นหมายความว่าหลังจากเขียนตัวอักษรตัวเดียวมันจะเปลี่ยนคีย์สำหรับตัวอักษรถัดไป นี่คือการพิจารณาแตกโดยเยอรมันเนื่องจากพื้นที่สำคัญมหาศาล แม้แต่การใช้กำลังอย่างโหดร้ายก็แทบจะเป็นไปไม่ได้ อย่างไรก็ตามมีข้อผิดพลาดในการออกแบบในปริศนา การเข้ารหัสจดหมายจะไม่มีผลกับตัวเอง นั่นหมายความว่าตัวอักษรที่สามารถเข้ารหัสทุกตัวอักษรยกเว้นตัวอักษรA
A
ลองมาตัวอย่างของข้อความที่เข้ารหัส:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
คำภาษาเยอรมันทั่วไปWETTERBERICHT
หรือรายงานสภาพอากาศเป็นภาษาอังกฤษ เมื่อมองจากข้างบนเราสามารถกำหนดตำแหน่งที่คำนั้นจะเป็น:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
สิ่งนี้เป็นไปไม่ได้เพราะI
ไม่สามารถเข้ารหัสได้ด้วยตัวเองดังนั้นเราจึงไปต่อที่ 1:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
เป็นไปไม่ได้ดังนั้นเราจึงย้ายสถานที่อื่นอีกครั้ง:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
สิ่งนี้เป็นไปไม่ได้อีกแล้ว ในความเป็นจริงการเกิดขึ้นครั้งแรกที่เป็นไปได้WETTERBERICHT
คือ:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
ดังนั้นเรากลับมาอยู่ในตำแหน่งที่ 0 การจัดทำดัชนีของการเกิดขึ้นเป็นไปได้ที่แรกซึ่งเป็น13
งาน
- ได้รับข้อความรหัสและคำค้นหาดัชนีของที่เกิดขึ้นเป็นไปได้เป็นครั้งแรก
- สมมติว่าจะใช้ตัวอักษรตัวพิมพ์ใหญ่พื้นฐานเท่านั้น (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
) - หากไม่มีการเกิดขึ้นพบว่าคุณสามารถส่งออกใด ๆในเชิงลบจำนวนเต็มตัวอักษรหรือไม่มีอะไร (เช่น
-1
,X
) - อินพุตอาจได้รับการยอมรับว่าเป็นอาร์กิวเมนต์ในบรรทัดใหม่แยกรายการหรืออะไรก็ได้
- นี่คือโค้ดกอล์ฟดังนั้นการส่งที่มีจำนวนไบต์น้อยที่สุดจะชนะ!
กรณีทดสอบ
Input: BHGEFXWFTIUPITHHLPETTTCLOEWOELM, WETTERBERICHT
Output: 13
Input: ABCDEFGHIJKL, HELLO
Output: 0
Input: EEEEEEEEEEEE, HELLO
Output: -1
Input: XEEFSLBSELDJMADNADKDPSSPRNEBWIENPF, DEUTSCHLAND
Output: 11
Input: HKKH, JJJJJ
Output: -1
E
E
นั่นคือความท้าทายทั้งหมดนี้เกี่ยวกับ