คุณเป็นกัปตันของเรือรบ แผนกวิศวกรรมได้ตัดมุมด้วยการออกแบบในปีนี้ดังนั้นเรือที่คุณไปจะมีรูปร่างเป็นรูปสามเหลี่ยมง่ายๆ
คุณเดินออกไปที่ดาดฟ้าและเพลิดเพลินไปกับลมทะเล ... แม้ว่าจะไม่นาน ศัตรูยิงคุณ! - แต่จะยิงโดนหรือไม่
อินพุต
คุณอาจจะเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบสำหรับความท้าทายนี้
โปรแกรมของคุณจะมีจำนวนเต็ม 11 ตัวซึ่งสิบคู่จะถูกจับคู่:
จำนวนเต็มสามคู่แรก (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ) จะระบุจุดยอดของเรือของคุณ รูปสามเหลี่ยมที่เกิดขึ้นจะมีพื้นที่ที่ไม่ใช่ศูนย์
จำนวนเต็มคู่ต่อไป (e x , e y ) ระบุตำแหน่งของปืนใหญ่ของศัตรู ปืนใหญ่ของศัตรูจะไม่นอนหรืออยู่ในขอบเขตของเรือของคุณ *
คู่ (a x , a y ) หลังจากนั้นระบุตำแหน่งที่ศัตรูเล็ง สิ่งนี้จะแตกต่างจาก (e x , e y )
จำนวนเต็มบวกสุดท้ายขั้นสุดท้ายระบุช่วงของการยิงของศัตรู
* คุณจะเป็นกัปตันที่แย่มากถ้าคุณไม่สังเกตเห็นสิ่งนั้นเกิดขึ้น!
เอาท์พุต
คุณต้องพิมพ์ / กลับtruthyค่า (เช่นจริง 1) ถ้าเรือรบจะถูกตีมิฉะนั้นค่า falsy (เช่นเท็จ 0)
การตีคืออะไร
ยิงศัตรูเป็นส่วนของเส้นตรงที่มีความยาว R จาก (e x , e y ) ในทิศทางของ (a x , a y ) หากส่วนของเส้นนี้เหลื่อมทับส่วนใดส่วนหนึ่งของการตกแต่งภายในของเรือประจัญบานรูปสามเหลี่ยมของคุณการนับนี้จะถือว่าเป็น Hit ไม่อย่างนั้นมันจะไม่เป็นที่นิยม
ช็อตที่เล็มหญ้าไปตามหรือเอื้อมจนถึงขอบเขตของรูปสามเหลี่ยมจะไม่นับรวมถึงการเข้าตี
ตัวอย่าง
0 0 0 1 1 0
1 1
0 0
2
Hit:ศัตรูยิงเข้าทางกลางเรือของคุณ!
2 0 0 2 4 4
0 0
1 1
1
ไม่ตี:ระยะของศัตรูสั้นเกินไปดังนั้นคุณจึงปลอดภัย
0 0 1 2 3 0
-4 0
0 0
8
ไม่มีการตี:ศัตรูมีเล็มหญ้าด้านข้างของเรือดังนั้นสิ่งนี้จะไม่นับเป็นการโจมตี โชคดี!
0 0 -1 3 4 -1
-3 -4
3 4
5
ไม่มีการตี:การยิงของข้าศึกจะหยุดลงที่เรือคุณจึงปลอดภัย หากปืนใหญ่ของศัตรูมีระยะที่ดีขึ้นเล็กน้อยคุณจะต้องถูกโจมตี! วุ้ย
-2 -3 -3 6 7 -2
-6 2
1 -4
7
Hit:ถึงแม้ว่ากระสุนจะไม่พุ่งทะลุไปยังอีกด้านหนึ่ง
-3 2 2 -4 7 -3
-3 -4
-3 0
10
ไม่มีการเข้าชม:สำหรับการบันทึกนี่เป็นอีกการพลาดอย่างหนึ่ง
กรณีทดสอบเพิ่มเติม
0 0 6 0 6 8
-6 -8
6 8
20
ไม่ตี:นี่คือหญ้าอื่น แต่อยู่ในมุม
0 0 -2 -5 5 3
-3 4
0 0
6
การเข้าชม:การยิงเข้าสู่จุดสุดยอดของเรือ
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ ช่องโหว่มาตรฐานใช้
0 0 -1 3 4 -1 -3 -4 3 4 6
หนึ่ง