บ๊อบโบว์แมน
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_x
arrow_y
เท้าซ้ายของ Bob ในผลลัพธ์จะต้องตรงกับx
coord ของบ๊อบยิง 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
เรเดียนvelocity
13m/s
เป็นdistance
คือ 20
ดังนั้นเพื่อที่จะเข้าถึงกลุ่มเป้าหมายลูกศรมีการข้ามหรือ(19,3)
(19,4)
ทุกอย่างอื่นจะพลาด ในกรณีนี้ลูกศรที่จะเข้าสู่พื้นดิน (หมายถึงy
จะเป็น<1.0
) ที่หลังจาก12.9358m = ~13m
1.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