ฟิสิกส์กอล์ฟ: การถ่ายภาพที่เอียง


9

"และตอนนี้สำหรับบางสิ่งแตกต่างอย่างสิ้นเชิง"

นกโกรธถูกยิงที่βมุมแนวนอนที่ความเร็ว U พื้นดินสูงชันเอียงที่มุมα ค้นหาระยะทางแนวนอนqที่นกเดินทางก่อนที่มันจะกระแทกพื้น

การยิง

ทำให้ฟังก์ชั่น f (α, β, u) ที่คืนค่าความยาวq : ระยะทางแนวนอนที่นกเดินทางก่อนที่มันจะกระแทกพื้น

ข้อ จำกัด และหมายเหตุ:

  • -90 <α <90
  • 0 <β <180
  • αนั้นเล็กกว่าβเสมอ
  • 0 <= u <10 ^ 9
  • สมมติว่าความเร่งเนื่องจากแรงโน้มถ่วง g = 10
  • คุณสามารถใช้เรเดียนแทนองศาสำหรับα, β
  • ขนาดของ u นั้นไม่เกี่ยวข้องตราบใดที่มันสอดคล้องกับ g และ q
  • ไม่มีความต้านทานอากาศหรืออะไรแฟนซีเกินไป

รหัสที่สั้นที่สุดชนะ

ดูบทความวิกิพีเดียเกี่ยวกับการเคลื่อนไหวของกระสุนปืนสำหรับสมการบางอย่าง

ตัวอย่าง:

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

เมื่อฉันเห็นความสับสนเกี่ยวกับสูตรนี่คือสิ่งที่คนอื่น ๆ จะใช้:q = ABS[1/5 u^2 Cos[β] Sec[α] Sin[β - α]]
ดร. เบลิซาเรียต

คำตอบ:


3

ชวา

ใช้งานได้กับเรเดียนเท่านั้น

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))))));
      }

รุ่น Golfed (ขอบคุณ Peter)

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

คณิตศาสตร์ที่ใช้:

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

มีบางอย่างผิดปกติกับสิ่งนี้ ... ฉันแค่คิดออกไม่ถูกต้องมีใครช่วยได้บ้าง
Aman ZeeK Verma

สูตรนี้ไม่ถูกต้อง โปรดดูความคิดเห็นที่โพสต์ของ
gnibbler

ดังนั้นเรายังไม่มีวิธีแก้ปัญหาที่สมบูรณ์แบบ :)
Aman ZeeK Verma

1
อัปเดตสูตร ... เปิดไฟทดสอบตอนนี้
หน่อยได้ไหม

คุณสามารถบันทึกตัวอักษรสองสามตัว - Math.abs ไม่จำเป็นต้องใช้ -x + y สั้นลงเนื่องจาก yx, * 0.2 สั้นลงเป็น / 5 และคุณมีวงเล็บที่ไม่จำเป็น OTOH คุณไม่มีประเภทการคืนสินค้าของวิธีการ
Peter Taylor

2

Haskell ( 37 35)

ขึ้นอยู่กับโซลูชันของ Aman:

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

ฉันคิดว่าปัญหานี้ไม่ได้เป็นของ code-golf เพราะมันใช้สูตรมากกว่าทำอัลกอริทึมจริง ๆ


บางทีคุณพูดถูกเพราะสูตรสั้นเกินไปแล้ว
Eelvex

1
จะชอบ/5หรือ/5.ทำงานอะไร
Nabb

สูตรนี้ไม่ถูกต้อง โปรดดูความคิดเห็นที่โพสต์ของ gnibbler
Eelvex

2

Python3 - 65 ตัวอักษร

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

ไม่ถูกต้องนัก 1) f ควรเป็นค่าบวกเสมอและ 2) สำหรับα> 0 จะส่งกลับค่าที่มีขนาดใหญ่กว่าสำหรับ a = 0 ซึ่งเป็นไปไม่ได้
Eelvex

อ่าฉันคัดลอกสูตรของ FUZxxl: /
gnibbler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.