Bob the Bowman
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 |
###########################################################################################
Tugas
Tugas Anda adalah membuat gambar seni ASCII tentang Bob yang mengenai atau melewatkan target. Untuk perhitungan:
- Program Anda akan menerima
arrow_x,angle,velocity,distance
input yang dipisahkan koma dalam urutan apa pun yang Anda inginkan. - Satu karakter ASCII sama dengan
1m
. - Karakter pertama di baris terakhir memiliki koordinat
(0,0)
, sehingga ground (diterjemahkan sebagai#
) berada diy=0
. - Bob selalu berdiri di tanah,
y
posisinya tidak berubah. - Tidak ada maks
y
. Namun, puncak panah harus sesuai dengan gambar yang diberikan. - Semua input disediakan sebagai bilangan bulat desimal.
- Selama perhitungan, anggap panah adalah sebuah titik.
- Asal panah adalah kepala panah
>
dari Bob yang menembak (lihat di atas). Jadi diberikanarrow_x
, Anda harus menghitungarrow_y
. Kaki kiri Bob dalam output harus cocok denganx
coord. penembakan Bob. distance
adalahx
koordinat kaki target . (mis. tengah target).- Semua pengukuran disediakan dalam meter dan derajat.
- Perhatian: Tembakan Bob tidak pernah diberikan, hanya digunakan untuk perhitungan! Lihat di bawah untuk dua keluaran-Bobs yang valid
- Menekan target berarti jalur panah melintasi salah satu dari dua dinding target paling kiri (
|
) (Itu adalah (jarak-1,3) atau (jarak-1,4). Jika pada titik tertentu panah berada di dalam 2m² itu, tempatkan X bukan dinding yang ditabraknya. Targetnya selalu sama tinggi dan hanya posisi x yang bisa berubah.). Hit sudut atau panah yang jatuh dari langit ke target tidak masuk hitungan. - Earth standar g berlaku (9,81 m / s ^ 2).
distance+1
adalah akhir dari lapangan, setelah itu, semuanya ketinggalan dan tidak ada panah yang harus diberikan.- Jika panah mengenai target dengan cara lain (
distance-1
dll.), Tidak ada panah yang harus dirender.
Rindu
Ini adalah contoh render dari Bob yang hilang (panah masuk ke tanah pada ketinggian 34m, sudut 45 °, waktu di udara 10 detik, kecepatannya ~ 50 - tetapi ada banyak kemungkinan input yang menyebabkan output ini. Tampilkan saja program Anda menggunakan rumus biasa untuk menghitung hasil fisik "akurat".):
+-+
| |
c\ | |
/( ) v +++
L L | |
###########################################################################################
Memukul
Ini adalah contoh render penilaian Bob (panah masuk target (= melintasi jalurnya)):
+-+
>--X |
\c/ | |
( ) +++
L L |
###########################################################################################
Contoh
arrow_x
adalah 7.arrow_y
selalu 3.angle
adalah30°
atau0.523598776
radian.velocity
adalah13m/s
.distance
adalah 20.
Jadi untuk mencapai target, panah harus melewati (19,3)
atau (19,4)
. Segala sesuatu yang lain akan menjadi kehilangan. Dalam hal ini, panah akan masuk ke tanah (berarti y
akan <1.0
) di 12.9358m = ~13m
setelah 1.149s
.
Batas & Penilaian
- Ini adalah kode-golf , sehingga solusi terpendek menang. Tidak ada bonus.
- Program Anda (karena tidak berfungsi ) harus menerima input dalam format yang dijelaskan di atas, input tambahan tidak diizinkan.
- Anda tidak harus menangani input yang salah / tidak berguna / tidak mungkin.
- Cetak ke apa pun yang merupakan keluaran wajar terpendek untuk bahasa Anda (std, file, ...).
- Saya tidak peduli tentang tertinggal spasi.
- Tip: Lebar output adalah
distance+2
. Tingginyaapex+1
.
The left foot of Bob in the output has to match the x coord. of the shooting Bob.
danSee below for the two valid output-Bobs
Jawaban:
Ruby, 482
Tidak disatukan
metode
Persamaan utama di sini adalah:
Catatan: gambar diambil dari https://en.wikipedia.org/wiki/Trajectory_of_a_projectile
Dimana,
Apa yang saya lakukan adalah untuk mengulang angka dari 0 ke (jarak -1) dan di setiap iterasi periksa untuk melihat apakah panah menyentuh tanah (atau target)
sumber