พวกเราหลายคนคุ้นเคยกับเกมตรอน คุณสามารถควบคุม "lightcycle" ที่วางไว้บนตาราง แสงไฟเคลื่อนที่ไปข้างหน้าเสมอ (แม้ว่าคุณจะควบคุมทิศทาง) และทิ้งรอยทางถาวรไว้ด้านหลัง หากคุณวิ่งเข้าไปในเส้นทางคุณผิดพลาด!
เป้าหมายที่นี่คือการตรวจสอบว่าเส้นทางที่กำหนดเป็นวงที่ถูกต้องนั่นคือมันจะกลับไปที่จุดเริ่มต้นโดยไม่ต้อง "หยุดทำ" ในการทำเช่นนี้เราถือว่าเราเริ่มต้นที่จุด(0,0)
นั้น การป้อนข้อมูลจะได้รับในรูปแบบN2E1S2W1
ที่มีชุดของทิศทางพระคาร์ดินัล ( N
คือnorth
, E
คือeast
, และอื่น ๆ ) แต่ละตามระยะทางในการเดินทางว่าทิศทาง ในตัวอย่างนี้คุณจะเดินทาง
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
เส้นทางนั้นจะถือว่าถูกต้องหากมันสิ้นสุดที่(0,0)
โดยไม่ต้องไปที่พิกัดอื่นมากกว่าหนึ่งครั้ง (มันจะไป(0,0)
สองครั้งแน่นอนเมื่ออยู่ที่จุดเริ่มต้นและอีกครั้งในตอนท้าย) โปรดทราบว่าในตัวอย่างด้านบนเพื่อรับจาก(0,0)
ถึง(0,2)
เราจำเป็นต้องเยี่ยมชม(0,1)
เช่นกัน
ตัวอย่างอื่น ๆ :
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
เอาต์พุตของคุณสามารถอยู่ในรูปแบบใดก็ได้ตราบใดที่ให้เอาต์พุตเดียวกันสำหรับค่าจริงหรือเท็จ
อินพุตสามารถใช้เป็นสตริงหรือเป็นรายการของตัวละครไม่ว่าจะเป็นในรูปแบบS1N2E3
... หรือSNNEEE
... นอกจากนี้ยังมีข้อ จำกัด เรื่องขนาดกริดไม่ยากเช่นกัน แต่สมมติว่าอินพุตไม่มากจนเกินไป ตราบใดที่รหัสนั้นฟังดูดีก็ไม่สำคัญที่จะต้องจัดการกับกรณีเช่นN99999999999999
นี้
หมายเหตุ: คุณอาจจะประเมินกรณีN1S1
, E1W1
, S1N1
และW1E1
อย่างไรที่คุณต้องการ พวกมันเป็นเส้นทางที่ถูกต้องทางเทคนิค แต่พวกเขาต่อต้านวิญญาณ "ตรอน" ของความท้าทาย
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดชนะ!
N
เป็น1j
, E
เป็น1
, S
เป็น-1j
และW
เป็น-1
?
N99999999999999
N1S1
ควรเป็นจริงเพื่อให้สอดคล้องกับคำจำกัดความของคุณเพราะถึง(0, 0)
สองครั้งและ(0, 1)
ครั้งเดียวซึ่งถูกต้องตามคำนิยามของคุณ