밥 보먼
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
. 출력에서 Bob의 왼쪽 발은x
좌표 와 일치해야합니다 . 총격 사건 밥의. distance
(가)이다x
대상의 좌표 발 . (예 : 대상의 중간).- 모든 측정은 각각 미터와도 단위로 제공됩니다.
- 주의 : 촬영 Bob은 절대 렌더링되지 않으며 계산에만 사용됩니다! 두 개의 유효한 출력 보드에 대해서는 아래를 참조하십시오
- 표적을 명중한다는 것은 화살 경로가 가장 왼쪽에있는 두 표적 벽 중 하나를 가로 지르는 것을 의미합니다 (
|
) (이것은 (거리 -1,3) 또는 (거리 1,4)입니다. 벽에 부딪히지 않고 X. 목표는 항상 같은 높이이며 x 위치 만 바뀔 수 있습니다.) 하늘에서 대상으로 떨어지는 코너 타격이나 화살은 포함되지 않습니다. - 표준 접지 g가 적용됩니다 (9.81m / s ^ 2).
distance+1
필드의 끝입니다. 그 후 모든 것이 누락되어 화살표를 렌더링해서는 안됩니다.- 화살표가 다른 방식으로 대상에 닿으면
distance-1
화살표를 렌더링해서는 안됩니다.
미스
이것은 Bob이 누락 된 렌더링의 예입니다 (화살표는 34m에서지면으로 들어가고, 각도는 45 °이며, 공기에서 시간은 10 초입니다. 물리적으로 "정확한"결과를 계산하는 일반적인 공식).
+-+
| |
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
AT) 12.9358m = ~13m
후 1.149s
.
한계 및 점수
- 이것은 code-golf 이므로 가장 짧은 솔루션이 승리합니다. 보너스는 없습니다.
- 귀하의 프로그램 (에서와 같이 작동하지 형식으로 입력을 수용해야합니다)이 위에서 설명한, 추가 입력은 허용되지 않습니다.
- 잘못된 / 무의미한 / 불가능한 입력을 처리 할 필요가 없습니다.
- 귀하의 언어에 대한 가장 짧은 합리적인 출력 (std, file 등)으로 인쇄하십시오.
- 공백 공백에 신경 쓰지 않습니다.
- 팁 : 출력 너비는입니다
distance+2
. 높이는입니다apex+1
.
5
주어진 출력을 생성하는 데 사용 된 입력을 추가 할 수 있습니까?
—
Blue
왜 함수를 게시 할 수 없습니까?
—
Loovjo
@Mhmd 당신은 작업에 명시된대로 그를 그려야합니다.
—
mınxomaτ
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
그리고 GCSE보다 물리학을 더 이상 이수하 지 않은 (또는 방금 잊어 버린) 사람들을 위해
—
Blue
@muddyfish 그냥 궤적 방정식에 대한 구글.
—
mınxomaτ