ให้สองสตริงค้นหาตารางการแปล ( รหัสแทน ) ระหว่างสองหากไม่สามารถแปลได้ให้ส่งออกเป็นเท็จ คำตอบจะต้องย่อเล็กสุดและสร้างจากซ้ายไปขวา อักขระตัวแรกที่จะแปลระหว่างคำต้องเป็นตัวแรกในตารางการแปล นอกจากนี้จดหมายใด ๆ ที่ไม่ได้แปล (ในสถานที่เดียวกันกับที่เดิม) ไม่ควรอยู่ในตารางการแปล
อาจกำหนดได้ง่ายที่สุดผ่านตัวอย่าง:
กรณีที่ถูกต้อง
"bat", "sap" => ["bt","sp"]
สังเกตการสั่งซื้อผลลัพธ์ของ["tb","ps"]
ไม่ถูกต้องสำหรับความท้าทายนี้
"sense", "12n12" => ["se","12"]
สังเกตว่าการn
แปลนั้นไม่ได้ถูกแปลอย่างไรเพราะมันมีความสัมพันธ์แบบ 1 ต่อ 1
"rabid", "snail" => ["rabd","snal"]
สังเกตว่าการi
แปลนั้นไม่ได้ถูกแปลอย่างไรเพราะมันมีความสัมพันธ์แบบ 1 ต่อ 1
"ass", "all" => ["s","l"]
ไม่รวม A แต่ยังคงเหมือนเดิมs
สามารถแมปได้l
เนื่องจากการจับคู่รูปแบบ
"3121212", "ABLBLBL" => ["312","ABL"]
จับคู่รูปแบบได้อย่างสมบูรณ์แบบ
กรณีที่เป็นเท็จ
"banana", "angular" => false
(ไม่ใช่ความยาวเท่ากันเป็นไปไม่ได้)
"animal", "snails" => false
(อักขระแต่ละตัวสามารถใช้ได้ครั้งเดียวเท่านั้นในแต่ละด้านของการแปล)
"can","cnn" => false
(n ใช้ในการแปลโดยปริยายดังนั้นการกำหนดตารางการแปลด้วย n-> a จะไม่ถูกต้อง)
ดังนั้น[aimal,sails]
จึงเป็นคำตอบที่ไม่ถูกต้องทำให้เป็นเท็จ
"a1", "22" => false
ดู "คำเตือน" นี่แสดงว่าเป็นเท็จ ในกรณีนี้เป็นเพราะa
และ1
ไม่สามารถแมปทั้งคู่2
ได้ (อักขระแต่ละตัวสามารถใช้ได้ครั้งเดียวเท่านั้นในแต่ละด้านของการแปล)
คำตอบนี้น่าจะเป็นมาตรฐานที่ดี: /codegolf//a/116807/59376
หากคุณมีคำถามเกี่ยวกับการทำงานของคำศัพท์ที่ไม่แสดงคู่ที่สองให้เลื่อนไปที่การใช้งานนี้
กฎ I / O
- อินพุตอาจเป็นอาร์เรย์ 2 องค์ประกอบหรือเป็น 2 อินพุตแยกกัน
- เอาต์พุตสามารถเป็นอาร์เรย์หรือการขึ้นบรรทัดใหม่ / เว้นวรรคคล้ายกับที่ฉันแสดง
- เอาต์พุตเท็จอาจเป็น 0, -1 หรือเท็จ ข้อผิดพลาด / เอาท์พุทว่างก็ดีเช่นกัน
- คุณจะรับประกันว่า
a
จะไม่เท่ากันb
และไม่a
ว่ามิได้b
จะว่างเปล่า a
และb
เป็นลำดับของตัวอักษรเท่านั้นที่พิมพ์ได้ ASCII
คำเตือน
- การแปลจะต้องเกิดขึ้นจากซ้ายไปขวาดูตัวอย่างที่ 1
- คุณต้องไม่ส่งออกอักขระที่ยังคงเหมือนเดิม
- โปรแกรมของคุณอาจใช้เวลาเพียงในสองสายและ
a
b
- อักขระแต่ละตัวสามารถใช้ได้ครั้งเดียวเท่านั้นในแต่ละด้านของการแปล นี่คือสิ่งที่ทำให้การแปลจาก
snails
ที่จะanimals
เป็นไปไม่ได้ - การแทนที่แบบเรียกซ้ำไม่ควรเกิดขึ้น ตัวอย่างของการแทนที่แบบเรียกซ้ำ:
"a1","22"->[a1,12]
โดยที่ a ถูกแทนที่ด้วย 1 ครั้งแรกจากนั้นผลลัพธ์ทั้งสองของ 1 จะถูกแทนที่ด้วย 2 สิ่งนี้ไม่ถูกต้องถือว่าการแปลทั้งหมดเกิดขึ้นเป็นอิสระจากกันแปลว่านี่เป็นเท็จ ความหมาย: "a1" กับตารางการแปลของ [a1,12] ประเมินเป็น 12 (ไม่ใช่ 22)