Golf vật lý: chụp nghiêng


9

"Và bây giờ cho một cái gì đó hoàn toàn khác nhau."

Một con chim tức giận bị bắn ở một góc β sang ngang với tốc độ u. Mặt đất dốc, nghiêng một góc α. Tìm khoảng cách ngang q mà con chim di chuyển trước khi nó chạm đất.

Chụp

Tạo một hàm f (α, β, u) trả về độ dài q : khoảng cách ngang mà con chim di chuyển trước khi nó chạm đất.

Các ràng buộc và ghi chú:

  • -90 <α <90.
  • 0 <β <180.
  • α luôn nhỏ hơn.
  • 0 <= u <10 ^ 9.
  • Giả sử gia tốc do trọng lực g = 10.
  • Bạn có thể sử dụng radian thay vì độ cho α,.
  • Kích thước của u không liên quan miễn là chúng phù hợp với g và q.
  • Không có sức cản không khí hoặc bất cứ điều gì quá ưa thích.

Mã ngắn nhất sẽ thắng.

Xem bài viết trên wikipedia về chuyển động của đạn để biết một số phương trình.

Mẫu:

f(0, 45, 10) = 10
f(0, 90, 100) = 0
f(26.565, 45, 10) = 5
f(26.565, 135, 10) = 15

Như tôi đã thấy một số nhầm lẫn về công thức, ở đây người khác sử dụng nó:q = ABS[1/5 u^2 Cos[β] Sec[α] Sin[β - α]]
Tiến sĩ belisarius

Câu trả lời:


3

Java

Chỉ hoạt động cho radian

double q(double a, double b, double u){
          return (Math.abs(((-Math.tan(a)+(Math.tan(b)))*(u*u)*(0.2*(Math.cos(b)*Math.cos(b))))));
      }

Phiên bản chơi gôn (Cảm ơn Peter)

double z=u*Math.cos(b);return(Math.tan(b)-Math.tan(a))*z*z/5;

Toán học được sử dụng:

q=u Cos(B) t
q tan(A) = u sin (B) t - .5 * 10 * t^2

- tan (A)  + tan(B) = 5q/u^2 sec^2 (B)
q =  [ - tan(A) + tan (B) ] u^2
    ---------------------
    sec^2(B)*5

Có điều gì đó không ổn với điều này ... Tôi chỉ không thể tìm ra chính xác, ai đó có thể giúp tôi không?
Verman Aman ZeeK

Công thức này không đúng. Vui lòng xem bình luận tại bài đăng của gnibbler's
Eelvex

Tuy nhiên, chúng tôi không có giải pháp hoàn hảo nào :)
Aman ZeeK Verma

1
đã cập nhật công thức ... kích hoạt một số mẫu thử ngay bây giờ
Aman ZeeK Verma

Bạn có thể lưu một vài ký tự - Math.abs là không cần thiết, -x + y ngắn hơn là yx, * 0,2 ngắn hơn / 5 và bạn có dấu ngoặc không cần thiết. OTOH bạn đang thiếu kiểu trả về của phương thức.
Peter Taylor

2

Haskell ( 37 35)

Dựa trên giải pháp của Aman:

q a b u=(tan a+tan b)*u*u*cos b^2/5

Tôi nghĩ, vấn đề này không phải là môn đánh gôn thực sự, vì nó thực hiện một công thức hơn là thực sự thực hiện một số thuật toán.


Có lẽ bạn đúng, vì công thức đã quá ngắn.
Eelvex

1
Sẽ có cái gì đó thích /5hoặc /5.làm việc?
Nabb

Công thức này không đúng. Xin vui lòng xem bình luận tại bài viết của gnibbler's.
Eelvex

2

Python3 - 65 ký tự

from math import*
f=lambda α,β,u:(tan(α)+tan(β))*u*u*.2*cos(β)**2

Điều đó không hoàn toàn chính xác. 1) f phải luôn dương và 2) với giá trị α> 0, nó trả về giá trị lớn hơn so với a = 0, điều này là không thể.
Eelvex

À, tôi đã sao chép công thức của FUZxxl: /
gnibbler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.