บ๊อบโบว์แมน
o
/( )\ This is Bob.
L L Bob wants to be an archer.
#############
.
/ \ <--- bow So he bought himself a
(c -)-> <--- arrow nice longbow and is about
( )/ <--- highly focused Bob shoot at a target.
L L
#############
___________________________________________________________________________________________
sky
Bob is a smart guy. He already knows what angle and
velocity his arrow has / will have. But only YOU know
the distance to the target, so Bob doesn't know if he
will hit or miss. This is where you have to help him.
. +-+
/ \ | |
(c -)-> | |
( )/ +++
L L |
###########################################################################################
งาน
งานของคุณคือแสดงภาพ ASCII ของ Bob กดปุ่มหรือพลาดเป้าหมาย สำหรับการคำนวณ:
- โปรแกรมของคุณจะได้รับ
arrow_x,angle,velocity,distanceเป็นการป้อนข้อมูลที่คั่นด้วยเครื่องหมายจุลภาคตามลำดับที่คุณต้องการ - ตัวละครตัวหนึ่ง ASCII
1mเท่ากับ - ตัวอักษรตัวแรกในบรรทัดสุดท้ายมีพิกัด
(0,0)เพื่อให้พื้นดิน (กลายเป็น#)y=0เป็นที่ - บ๊อบยืนอยู่บนพื้นเสมอ
yตำแหน่งของเขาไม่เปลี่ยนแปลง yไม่มีสูงสุดคือ อย่างไรก็ตามลูกศรยอดควรจะพอดีกับภาพที่แสดง- อินพุตทั้งหมดมีให้เป็นจำนวนเต็มทศนิยม
- ในระหว่างการคำนวณให้ถือว่าลูกศรเป็นจุด
- ต้นกำเนิดลูกศรคือหัวลูกศร
>ของบ๊อบยิง (ดูด้านบน) ให้ดังนั้นคุณจะต้องคำนวณarrow_xarrow_yเท้าซ้ายของ Bob ในผลลัพธ์จะต้องตรงกับxcoord ของบ๊อบยิง distanceเป็นxพิกัดของเป้าหมายเท้า (เช่น. กึ่งกลางของเป้าหมาย)- การวัดทั้งหมดจะมีให้ในหน่วยเมตรและองศาตามลำดับ
- ข้อควรระวัง: บ๊อบยิงไม่เคยแสดงผลใช้สำหรับการคำนวณเท่านั้น! ดูด้านล่างสำหรับสอง output-Bobs ที่ถูกต้อง
- การกดปุ่มเป้าหมายหมายถึงเส้นทางลูกศรข้ามหนึ่งในกำแพงกำแพงด้านซ้ายสุดของทั้งสอง (
|) (นั่นคือ (ระยะทาง 1,3) หรือ (ระยะทาง -1, 1,4) ถ้า ณ จุดหนึ่งลูกศรอยู่ภายใน 2 ตารางเมตรให้วาง X แทนกำแพงที่ชนเป้าหมายจะมีความสูงเท่ากันเสมอและมีเพียงตำแหน่ง x เท่านั้นที่สามารถเปลี่ยนแปลงได้) การชนมุมหรือลูกศรที่ตกลงมาจากท้องฟ้าไปยังเป้าหมายจะไม่นับรวม - ใช้ดินมาตรฐาน g (9.81 m / s ^ 2)
distance+1เป็นจุดสิ้นสุดของฟิลด์หลังจากนั้นทุกอย่างเป็นลูกศรและไม่ควรแสดงลูกศร- หากลูกศรพุ่งชนเป้าหมายด้วยวิธีอื่น (
distance-1ฯลฯ ) ไม่ควรแสดงลูกศร
นางสาว
นี่เป็นตัวอย่างการแสดงผลของ Bob ที่หายไป (ลูกศรเข้าสู่พื้นดินที่ 34m, มุม 45 °, เวลาในอากาศคือ 10 วินาที, ความเร็วคือ ~ 50 - แต่มีอินพุตที่เป็นไปได้มากขึ้นที่จะทำให้เกิดผลลัพธ์นี้เพียงแค่แสดงโปรแกรมของคุณ สูตรปกติในการคำนวณผลลัพธ์ "ถูกต้อง" ทางร่างกาย):
+-+
| |
c\ | |
/( ) v +++
L L | |
###########################################################################################
ตี
นี่คือตัวอย่างการแสดงผลของการให้คะแนนของ Bob (ลูกศรเข้าสู่เป้าหมาย (= ข้ามเส้นทางของมัน)):
+-+
>--X |
\c/ | |
( ) +++
L L |
###########################################################################################
ตัวอย่าง
arrow_xคือ 7arrow_yคือ 3 เสมอangleเป็น30°หรือ0.523598776เรเดียนvelocity13m/sเป็นdistanceคือ 20
ดังนั้นเพื่อที่จะเข้าถึงกลุ่มเป้าหมายลูกศรมีการข้ามหรือ(19,3) (19,4)ทุกอย่างอื่นจะพลาด ในกรณีนี้ลูกศรที่จะเข้าสู่พื้นดิน (หมายถึงyจะเป็น<1.0) ที่หลังจาก12.9358m = ~13m1.149s
ขีด จำกัด และเกณฑ์การให้คะแนน
- นี่คือรหัสกอล์ฟดังนั้นทางออกที่สั้นที่สุดชนะ ไม่มีโบนัส
- โปรแกรมของคุณ(ในฐานะที่ไม่ใช่ฟังก์ชั่น ) จะต้องยอมรับอินพุตในรูปแบบที่อธิบายไว้ข้างต้นไม่อนุญาตให้ใช้อินพุตเพิ่มเติม
- คุณไม่ต้องจัดการกับอินพุตที่ผิด / ไม่มีจุดหมาย / เป็นไปไม่ได้
- พิมพ์ไปยังสิ่งใดก็ตามที่เป็นผลลัพธ์ที่สั้นที่สุดสำหรับภาษาของคุณ (std, file, ... )
- ฉันไม่สนใจช่องว่างที่ตามมา
- เคล็ดลับ:
distance+2ความกว้างของการส่งออกเป็นapex+1ความสูง
The left foot of Bob in the output has to match the x coord. of the shooting Bob.และSee below for the two valid output-Bobs
