ลองนึกภาพการเดินทางไปยังจุดที่โกหกห่างออกไปในแนวนอนและBห่างออกไปในแนวตั้งจากตำแหน่งปัจจุบันของคุณ หรือพูดอีกอย่างคือเดินทางจากจุดหนึ่งไปยังอีกจุดหนึ่ง คุณต้องเดินทางไกลแค่ไหน? ดูเหมือนว่าเป็นคำถามที่ตรงไปตรงมา แต่คำตอบนั้นขึ้นอยู่กับคนที่คุณถาม หากคุณอีกาและคุณสามารถเดินทางเป็นอีกาบิน , ระยะทางที่เดินทางเป็นเพียงระยะทางยุคลิดไป นี่คือ(0, 0)
(a, b)
(a, b)
sqrt(a^2 + b^2)
แต่ถ้าคุณเป็นมนุษย์ที่น่าเบื่อคุณไม่อยากเดินไกลดังนั้นคุณต้องนั่งแท็กซี่ รถแท็กซี่ส่วนใหญ่จะไม่ขับเป็นเส้นตรงไปยังปลายทางของคุณเพราะโดยทั่วไปแล้วพวกเขาจะพยายามอยู่บนถนน ระยะทางที่แท้จริงที่คุณจะต้องเดินทางคือผลรวมของระยะทางแนวตั้งและระยะทางแนวนอน หรือสูตรคือ:
abs(a) + abs(b)
นี้เรียกว่ารถแท็กซี่ระยะทาง ภาพนี้แสดงให้เห็นถึงความแตกต่างอย่างชัดเจนระหว่างสอง:
ในการเดินทางไป(6, 6)
อีกาสามารถบินได้บนเส้นสีเขียวและนี่จะให้ระยะทาง6 * sqrt(2)
หรือประมาณ 8.49 รถแท็กซี่สามารถใช้เส้นทางสีแดงสีน้ำเงินหรือสีเหลือง แต่พวกเขาทั้งหมดจะใช้เวลา 12
สิ่งนี้นำไปสู่คำถามจริงที่ฉันถาม หากอีกาและรถแท็กซี่ออกจากจุด(0, 0)
และเดินทางไปยังจุด(a, b)
ใดเส้นทางของรถแท็กซี่จะยาวเท่าไหร่? หรือในศัพท์แสงคณิตศาสตร์มากขึ้น
ให้เวกเตอร์สองมิติกำหนดความแตกต่างระหว่าง norm2 ของเวกเตอร์กับ norm1 ของเวกเตอร์
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดเพื่อตอบคำถามนี้ คุณอาจเลือกที่จะใช้ 'a' และ 'b' เป็นสองอินพุตแยกกันหรือเป็นสองรายการ tuple คุณสามารถนำเข้าและส่งออกในรูปแบบที่เหมาะสม หากความแตกต่างไม่ใช่จำนวนเต็มคุณต้องแม่นยำในตำแหน่งทศนิยมอย่างน้อยสองตำแหน่ง
คุณสามารถสันนิษฐานได้ว่า 'a' และ 'b' จะเป็นจำนวนเต็มและพวกเขาจะไม่เป็น 0 ทั้งคู่ (แม้ว่าจะเป็นไปได้ที่หนึ่งในนั้นจะเป็นศูนย์)
ตามปกติช่องโหว่มาตรฐานจะมีผลบังคับใช้และพยายามทำให้โปรแกรมของคุณสั้นที่สุดเท่าที่เป็นไปได้นับเป็นไบต์
ฉันจะ upvote คำตอบใด ๆ ที่โพสต์คำอธิบายวิธีการทำงานของรหัสและแสดงให้เห็นถึงเทคนิคเด็ด ๆ ที่ใช้ในการบันทึกไบต์
นี่คือตัวอย่างสำหรับคุณในการทดสอบรหัสของคุณ:
#input #output
3, 4 2
-3, 4 2
-3, -4 2
6, 6 3.51
42, 0 0
10, 10 5.86
3, 3 1.76
ขอให้สนุกกับการเล่นกอล์ฟ! :)
10,10
ต้องเป็น 5.86 เนื่องจากมันออกมา5.85786...
และคุณปัดเศษด้านล่าง