물리 골프 : 경사 촬영


9

"그리고 지금, 완전히 다른 무언가를 위해."

화가 조류는 속도 U에서 수평으로 각도 β에서 촬영된다. 지면은 가파르 며 각도 α로 경사져 있습니다. 새가 땅에 닿기 전에 이동 한 수평 거리 q 를 찾으십시오 .

촬영

길이 q : 새가지면에 닿기 전에 이동 한 수평 거리를 반환하는 함수 f (α, β, u)를 만듭니다.

구속 조건 및 참고 사항 :

  • -90 <α <90.
  • 0 <β <180.
  • α는 항상 β보다 작습니다.
  • 0 <= u <10 ^ 9.
  • 중력 g = 10으로 인한 가속을 가정하십시오.
  • α, β에 각도 대신 라디안을 사용할 수 있습니다.
  • u의 치수는 g 및 q와 일치하는 한 관련이 없습니다.
  • 공기 저항이나 너무 멋진 것이 없습니다.

가장 짧은 코드가 승리합니다.

일부 방정식 에 대해서는 발사체 운동 에 관한 Wikipedia 기사를 참조하십시오 .

견본:

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[β - α]]
Dr. belisarius

답변:


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

골프 버전 (피터에게 감사)

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

이것에 문제가 있습니다 ... 나는 단지 정확하게 알아낼 수 없습니다. some1이 도울 수 있습니까?
Aman ZeeK Verma

이 수식은 정확하지 않습니다. gnibbler의 게시물
Eelvex

그래서 아직, 우리는 완벽한 솔루션 : 필요 없다
아만 ZeeK 베르

1
공식 업데이트 ... 화재 몇몇을 testcases 이제 제발
아만 ZeeK 베르

몇 개의 문자를 저장할 수 있습니다. Math.abs는 불필요하고 -x + y는 yx로 짧고 * 0.2는 / 5로 짧으며 불필요한 괄호가 있습니다. OTOH 메소드의 리턴 유형이 누락되었습니다.
피터 테일러

2

하스켈 ( 37 35)

Aman의 솔루션을 기반으로 :

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

이 문제는 실제로 알고리즘을 수행하는 것보다 공식을 구현하기 때문에 실제 코드 골프가 아니라고 생각합니다.


수식이 이미 너무 짧기 때문에 당신이 옳을 수도 있습니다.
Eelvex

1
겠습니까의 같은 /5또는 /5.사용할 수 있습니까?
Nabb

이 수식은 정확하지 않습니다. gnibbler의 게시물에 의견을 참조하십시오.
Eelvex 2019

2

Python3-65 자

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

그것은 정확하지 않습니다. 1) f는 항상 양수 여야하고 2) α> 0의 경우 a = 0보다 큰 값을 반환하므로 불가능합니다.
Eelvex 2019

아 잘, 나는 FUZxxl의 공식을 복사했다 : /
gnibbler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.