카테고리 보관물: 코딩

코딩

원이 겹치나요? 좌표는 양수 또는 음수

중심의 좌표와 2 개의 원의 반지름이 주어지면 겹치거나 겹치지 않는 정확한 값을 출력합니다.

입력

  • STDIN 또는 이와 동등한 함수 인수를 통해 입력을받을 수 있지만 변수는 아닙니다. 원하는 순서대로 단일 변수 (목록, 문자열 등) 또는 여러 입력 / 인수로 사용할 수 있습니다.

  • 입력은 6 개의 실수입니다. 이 수레는 소수점 이하 3 자리입니다. 좌표는 양수 또는 음수 일 수 있습니다. 반지름은 양수입니다.

산출

  • STDOUT 또는 함수 리턴을 통해 출력 할 수 있습니다.

  • 프로그램에는 정확히 두 개의 고유 한 출력이 있어야합니다. 하나는 True 값 (원은 겹침)과 다른 하나는 False 출력 (겹치지 않음)입니다.

테스트 사례

(입력은 [(x1, y1, r1), (x2, y2, r2)]테스트 케이스 의 튜플 목록으로 제공되며 모든 형식으로 입력 할 수 있습니다)

참된

[(5.86, 3.92, 1.670), (11.8, 2.98, 4.571)]
[(8.26, -2.72, 2.488), (4.59, -2.97, 1.345)]
[(9.32, -7.77, 2.8), (6.21, -8.51, 0.4)]

그릇된

[(4.59, -2.97, 1.345), (11.8, 2.98, 4.571)]
[(9.32, -7.77, 2.8), (4.59, -2.97, 1.345)]
[(5.86, 3.92, 1.670), (6.21, -8.51, 0.4)]

이것은 코드 골프이며, 가장 짧은 대답은 바이트입니다.



답변

젤리 , 5 바이트

IA<S}

두 개의 복소수 (중심)를 첫 번째 인수로 사용하고 두 개의 실수 (반경)를 두 번째 인수로 사용합니다.

온라인으로 사용해보십시오!

작동 원리

IA<S}  Main link.
       Left argument:  [x1 + iy1, x2 + iy2]
       Right argument: [r1, r2]

I      Increments; yield (x2 - x1) + i(y2 - y1).
 A     Absolute value; yield √((x2 - x1)² + (y2 - y1)²).
   S}  Take the sum of the right argument, yielding r1 + r2.
  <    Compare the results.

답변

자바 스크립트 (ES6), 38 바이트

입력을 6 개의 고유 변수 x1 , y1 , r1 , x2 , y2 , r2 로 취합니다 .

(x,y,r,X,Y,R)=>Math.hypot(x-X,y-Y)<r+R

테스트 사례

let f =

(x,y,r,X,Y,R)=>Math.hypot(x-X,y-Y)<r+R

// True
console.log(f(5.86, 3.92, 1.670, 11.8, 2.98, 4.571))
console.log(f(8.26, -2.72, 2.488, 4.59, -2.97, 1.345))
console.log(f(9.32, -7.77, 2.8, 6.21, -8.51, 0.4))

// False
console.log(f(4.59, -2.97, 1.345, 11.8, 2.98, 4.571))
console.log(f(9.32, -7.77, 2.8, 4.59, -2.97, 1.345))
console.log(f(5.86, 3.92, 1.670, 6.21, -8.51, 0.4))

답변

Pyth, 5 바이트

gsE.a

입력 형식 :

[x1, y1], [x2, y2]
r1, r2

온라인으로 사용해보십시오

작동 원리

     Q   autoinitialized to eval(input())
   .a    L2 norm of vector difference of Q[0] and Q[1]
gsE      sum(eval(input()) >= that

답변

MATL , 5 바이트

ZPis<

입력 형식은 다음과 같습니다

[x1, y1]
[x2, y2]
[r1, r2]

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오. .

작동 원리

ZP   % Take two vectors as input. Push their Euclidean distance
i    % Input the vector of radii
s    % Sum of vector
<    % Less than?

답변

R , 39 바이트

function(k,r)dist(matrix(k,2,2))<sum(r)

입력을 k=c(x1,x2,y1,y2)받고 r=c(r1,r2); FALSE탄젠트 서클의 경우를 반환 합니다.

온라인으로 사용해보십시오!

27 바이트 :

function(m,r)dist(m)<sum(r)

행 중심과 반지름 벡터로 주어진 원 중심을 가진 행렬로 입력을받습니다.

온라인으로 사용해보십시오!


답변

파이썬 , 40 바이트

lambda x,y,r,X,Y,R:abs(x-X+(y-Y)*1j)<r+R

온라인으로 사용해보십시오!

파이썬의 복잡한 산술을 사용하여 두 중심 사이의 거리를 계산합니다. 입력 포인트를 복잡한 숫자로 직접 가져올 수 없다고 가정하므로 코드는 다음과 같이 표현합니다 x+y*1j.


답변

Python 3, 45 bytes

lambda X,Y,R,x,y,r:(X-x)**2+(Y-y)**2<(R+r)**2

Try it online!