Боб Лук
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 художню картину Боба, який потрапив або пропустив ціль. Для розрахунку:
- Ваша програма отримає
arrow_x,angle,velocity,distance
введення, розділене комами, у будь-якому бажаному порядку. - Один символ ASCII дорівнює
1m
. - Перший символ в останньому рядку має координати
(0,0)
, тому земля (надається як#
) знаходиться наy=0
. - Боб завжди стоїть на землі, його
y
положення не змінюється. - Макс
y
. Однак вершини стрілок повинні розміщуватися в межах зображеного зображення. - Весь вхід подається у вигляді десяткового цілого числа.
- Під час обчислення припустимо, що стрілка - точка.
- Походження стріли - це голівка стріли
>
Боба (див. Вище). Отже, даноarrow_x
, ви повинні прорахуватиarrow_y
. Ліва нога Боба на виході повинна відповідатиx
координаті. розстрілу Боба. distance
-x
координата стопи цілі . (тобто середина цілі).- Всі вимірювання подаються в метрах і градусах відповідно.
- Увага: Боб, що стріляє, ніколи не відображається, використовується лише для розрахунків! Дивіться нижче для двох дійсних вихідних бобів
- Попадання в ціль означає, що шлях стрілки перетинає одну з двох лівих стінок цілі (
|
) (тобто (відстань-1,3), або (відстань-1,4). Якщо в якийсь момент стрілка знаходиться в межах цих 2м², поставте X замість стіни, в яку він потрапляє. Ціль завжди однакової висоти і може змінюватися лише її х положення.). Кутові удари або стріла, що падає з неба на ціль, не враховуються. - Застосовується стандартна земля g (9,81 м / с ^ 2).
distance+1
це кінець поля, після цього все промах, і жодна стрілка не повинна бути винесена.- Якщо стрілка потрапляє в ціль будь-яким іншим способом (
distance-1
тощо), жодна стрілка не повинна бути виведена.
Міс
Це приклад відображення Боба відсутнього (стрілка потрапляє в землю на 34м, кут - 45 °, час у повітрі - 10с, швидкість - 50 - але є набагато більше можливих входів, щоб викликати цей вихід. Просто покажіть, що програма використовує звичайні формули для обчислення фізично "точних" результатів.):
+-+
| |
c\ | |
/( ) v +++
L L | |
###########################################################################################
Удар
Це приклад візуалізації бобових балів (стрілка вводить ціль (= перетинає її шлях)):
+-+
>--X |
\c/ | |
( ) +++
L L |
###########################################################################################
Приклад
arrow_x
є 7.arrow_y
завжди 3.angle
є30°
або0.523598776
радіани.velocity
є13m/s
.distance
є 20.
Отже, щоб потрапити в ціль, стрілка повинна перетнути (19,3)
або (19,4)
. Все інше буде промахом. У цьому випадку стрілка увійде в землю (кошти y
будуть <1.0
) 12.9358m = ~13m
після 1.149s
.
Обмеження та оцінка
- Це код-гольф , тому найкоротше рішення виграє. Бонусів немає.
- Ваша програма (як і не функціонує ) повинна приймати введення у форматі, описаному вище, додаткове введення заборонено.
- Вам не доведеться обробляти неправильні / безглузді / неможливі введення.
- Роздрукуйте на будь-який найкоротший розумний вихід для вашої мови (std, файл, ...).
- Мене не хвилює пробіл пробілів.
- Порада: Ширина виводу є
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