Okçu Bob
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 |
###########################################################################################
Görev
Senin görevin, bir ASCII sanat resim Bob hedefe isabet veya eksik yapmaktır. Hesaplama için:
- Programınız
arrow_x,angle,velocity,distance
istediğiniz sırada virgülle ayrılmış girdi olarak alacaktır . - Bir ASCII karakteri eşittir
1m
. - Son satırdaki ilk karakter koordinatlara sahiptir
(0,0)
, bu nedenle zemin (olarak görüntülenir#
) olury=0
. - Bob her zaman yerde durur,
y
pozisyonu değişmez. - Maks
y
. Bununla birlikte, tepe okları görüntülenen resme sığmalıdır. - Tüm girişler ondalık sayı olarak sağlanır.
- Hesaplama sırasında, okun bir nokta olduğunu varsayın.
- Ok orijini,
>
çekim Bobunun ok başıdır (yukarıya bakınız). Bu nedenlearrow_x
, hesaplamak zorundasınızarrow_y
. Çıktıdaki Bob'un sol ayağıx
koordinatla eşleşmelidir . çekim Bob. distance
olanx
hedefin koordinatı ayak . (yani hedefin ortası).- Tüm ölçümler sırasıyla metre ve derece olarak verilir.
- Dikkat: Atış Bob asla işlenmez, sadece hesaplamalar için kullanılır! İki geçerli çıkış-Bobs için aşağıya bakın
- Hedefi vurmak ok yolunun en soldaki iki hedef duvardan (
|
) (yani (mesafe-1,3) veya (mesafe-1,4)) geçtiği anlamına gelir . Hedef her zaman aynı yükseklikte ve yalnızca x konumu değişebilir.). Köşe vuruşları veya gökten hedefe düşen bir ok sayılmaz. - Standart topraklama g uygulanır (9.81 m / s ^ 2).
distance+1
alanın sonu, bundan sonra her şey bir özledim ve ok yapılmamalıdır.- Ok hedefe başka bir şekilde (
distance-1
vb.) Vurursa, ok yapılmamalıdır.
Özlemek
Bu, Bob'un eksik gösterilmesinin bir örneğidir (ok 34m'de yere girer, açı 45 °, havadaki süre 10s, hız ~ 50'dir - ancak bu çıktıya neden olmak için çok daha fazla girdi vardır. Fiziksel olarak "doğru" sonuçları hesaplamak için normal formüller.):
+-+
| |
c\ | |
/( ) v +++
L L | |
###########################################################################################
hit
Bu, Bob puanlamasının bir gösterimidir (ok hedefe girer (= yolunu keser)):
+-+
>--X |
\c/ | |
( ) +++
L L |
###########################################################################################
Misal
arrow_x
7. olduğuarrow_y
zaman 3 'tür.angle
olduğu30°
veya0.523598776
radyan.velocity
olduğunu13m/s
.distance
20'dir.
Yani hedefe ulaşmak için, ok (19,3)
veya geçmek gerekir (19,4)
. Diğer her şey bir özledim olacak. Bu durumda, ok zemin (vasıta girecek y
olacak <1.0
en) 12.9358m = ~13m
sonra 1.149s
.
Limitler ve Puanlama
- Bu kod golf , bu yüzden en kısa çözüm kazanır. Bonus yok.
- Kişisel programı (olduğu gibi değil işlevi biçiminde girişini kabul etmek zorundadır) Yukarıda açıklanan ek giriş izin verilmez.
- Yanlış / anlamsız / imkansız girdileri işlemek zorunda değilsiniz.
- Diliniz için en kısa makul çıktıya (std, dosya, ...) yazdırın.
- Sondaki boşlukları önemsemiyorum.
- İpucu: Çıktı genişliği
distance+2
. Yükseklikapex+1
.
The left foot of Bob in the output has to match the x coord. of the shooting Bob.
veSee below for the two valid output-Bobs