16
Monday Mini-Golf # 3: ระยะทางแอนนาแกรม
Monday Mini-Golf:ชุดของความท้าทายรหัสสั้น ๆกอล์ฟโพสต์ (หวังว่า!) ทุกวันจันทร์ (ขอโทษทีช้าไปหน่อย) ฉันแน่ใจว่าคนส่วนใหญ่ของคุณเคยได้ยินระยะทางของLevenshteinซึ่งเป็นอัลกอริทึมสำหรับการคำนวณระยะห่างระหว่างสองสาย ดีความท้าทายนี้เป็นเรื่องเกี่ยวกับการใช้อัลกอริทึมของการประดิษฐ์ * ของตัวเองที่คล้ายกันเรียกว่าระยะทางแอนนาแกรม ความแตกต่างที่สำคัญคือลำดับของตัวละครนั้นไม่สำคัญ จะวัดเฉพาะอักขระที่ไม่ซ้ำกับสตริงหนึ่งหรืออักขระอื่นเท่านั้น ท้าทาย เป้าหมายของการท้าทายคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สองสายและส่งคืนระยะห่างระหว่างแอนนาแกรม วิธีหลักในการทำเช่นนี้คือการใช้ตรรกะต่อไปนี้: แปลงทั้งสองสตริงเป็นตัวพิมพ์เล็กและ (เป็นทางเลือก) จัดเรียงอักขระตามลำดับตัวอักษร ในขณะที่สตริงมีอักขระที่เท่าเทียมกันอย่างน้อยหนึ่งตัวให้ลบอินสแตนซ์แรกของอักขระนี้ออกจากแต่ละสตริง เพิ่มความยาวของสตริงที่เหลือและส่งคืน / ผลลัพธ์ ตัวอย่าง หากอินพุตเป็น: Hello, world! Code golf! จากนั้นลดขนาดและเรียงลำดับสิ่งเหล่านี้จะกลายเป็น: (ตามการเรียงลำดับเริ่มต้นของ JS ให้สังเกตช่องว่างนำหน้า) !,dehllloorw !cdefgloo การลบตัวละครทั้งหมดที่อยู่ในสตริงทั้งสองนั้นเราก็จบลงด้วย: ,hllrw cfg ดังนั้นระยะห่างระหว่างแอนนาแกรมระหว่างสองสายดั้งเดิม = 6 + 3 = 9 รายละเอียด สตริงอาจถูกนำมาใช้ในรูปแบบที่เหมาะสม สตริงจะประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้น สตริงเองจะไม่มีช่องว่างใด …