บทนำ
บ๊อบชอบมีรหัสผ่านที่แตกต่างกันสำหรับแต่ละเว็บไซต์ที่เขาใช้ เขาต้องการรหัสผ่านในรูปแบบพิเศษเพื่อให้เขาจำได้ ช่วยเขาด้วยการสร้างเครื่องสร้างรหัสผ่านซึ่งสั้นที่สุดเท่าที่จะเป็นไปได้ในความยาวของรหัสเพราะเขาชอบที่จะรักษาข้อมูลให้สั้นเหมือนกับชื่อของเขา
ท้าทาย
สร้าง Bob เป็นเครื่องมือสร้างรหัสผ่านซึ่งใช้พารามิเตอร์สี่ตัว -
- ที่อยู่โดเมน (เช่น: stackexchange.com)
- ชื่อจริง,
- นามสกุล,
- วันเดือนปีเกิด
และส่งออกสตริงซึ่งได้รับการแปลงต่อไปนี้
รหัสผ่านทุกคนมีแม่แบบขึ้นอยู่กับความยาวLของชื่อโดเมน ถ้าlเป็นไพรม์เทมเพลตจะอยู่ในแบบฟอร์มนี้ -
[birth-date][domain-name][lastname][birth-year][symbol]
อื่นมันเป็นของแบบฟอร์มนี้ -
[symbol][birth-year][firstname][domain-name][birth-date].
ฟิลด์สัญลักษณ์จะมีค่าตามประเภทของโดเมน
.com -> $$$ .org -> &&& .net -> %%% .edu -> +++ .gov -> @@@ .mil -> >>> ค่าเริ่มต้น -> ~~~
ตอนนี้เขายังต้องการเรียกใช้รหัสซีซาร์เหนือทุ่ง - [firstname][domain-name][lastname]. ทิศทางการเปลี่ยนนั้นถูกต้องหากlเป็นอย่างอื่นที่เหลืออยู่ ค่ากะจะถูกกำหนดโดยมูลค่าของการเพิ่มวันเกิดและปี
หลังจากกระบวนการข้างต้นข้อความไม่สามารถจดจำได้ง่ายดังนั้นเขาจึงต้องการให้ข้อความที่เข้ารหัสนั้นสามารถออกเสียงได้ ในการทำเช่นนี้เขาต้องการแทนที่พยัญชนะลำดับที่สามทุกสระด้วยสระตามลำดับตัวอักษร (เช่น, aeiou)
ในที่สุดเขาต้องการที่จะลบตัวอักษรเดียวกันที่เกิดขึ้นติดต่อกัน
ตัวอย่าง
อินพุต - stackexchange.com bob williams 0894 เอาท์พุท - 08qraicvafyecugjigyoq94 $$$
คำอธิบาย:
เท็มเพลตรหัสผ่านนั้นเป็น[birth-date][domain-name][lastname][birth-year][symbol]เพราะความยาวของชื่อโดเมนstackexchangeเป็นเอกสิทธิ์ สัญลักษณ์จะเป็นประเภทโดเมนคือ$$$.com
ลองเติมค่าเหล่านั้นในแม่แบบ 08stackexchangewilliams94$$$- ตอนนี้รหัสซีซาร์ต้องถูกเรียกใช้บนฟิลด์[firstname][domain-name][lastname](เป็นเพียงนามสกุลในกรณีนี้) ทิศทางการเปลี่ยนแปลงที่ถูกต้องเพราะลิตร08+94 = 102เป็นสำคัญและความคุ้มค่าการเปลี่ยนแปลงคือ
ดังนั้นจะกลายเป็น08stackexchangewilliams94$$$ 08qryaicvafylecugjjgykq94$$$ตอนนี้ทุกพยัญชนะที่สามติดต่อกันจะถูกแทนที่ด้วยสระ - 08qraaicvafyeecugjigyoq94$$$ ทุก ocuurences ติดต่อกันของตัวอักษรเดียวกันจะถูกลบออก 08qraicvafyecugjigyoq94$$$- ไม่ต้องกังวลว่าบ๊อบจะออกเสียงได้
ข้อมูลเพิ่มเติม
- ที่อยู่โดเมนชื่อและนามสกุลมีตัวอักษรพิมพ์เล็กเท่านั้น
- อยู่โดเมนมักจะประกอบด้วยเพียงระดับที่สองและโดเมนระดับบนสุดเหมือนและไม่ได้
stackexchange.comcodegolf.stackexchange.comนอกจากนี้โดเมนเช่น.co.ukนั้นไม่ได้รับอนุญาต แต่เพียงอย่างเดียว.ukหรือ.inถูกต้อง - การเปลี่ยนสระตามลำดับตัวอักษรคือวงจร ผมหมายถึงหลังจาก
u,aจะใช้ในการแทนที่ - ช่วง ASCII สำหรับรหัสซีซาร์คือ 97 - 122 รวม
- คุณสามารถใช้การป้อนข้อมูลตามที่อธิบายไว้ที่นี่
- เอาต์พุตต้องเป็นสตริง
- รูปแบบของวันเกิดและปีคือ
ddและyyดังนั้น02จึงเป็นที่ยอมรับและ2ไม่
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ มีความสุขในการเล่นกอล์ฟ!
0894ที่เพิ่มขึ้นแต่การใช้คำอธิบาย102 08+96=106ข้อความที่เข้ารหัสปรากฏขึ้นเพื่อใช้102ค่า เพียงแค่ไม่สอดคล้องกันเล็กน้อยที่อาจจะทำให้เกิดความสับสน ...
defualtไม่ได้พิมพ์default
stackexchange.comเท่านั้นimg.stackexchange.comใช่ไหม? โดเมนประเทศนั้นเป็นbbc.co.ukอย่างไร