중심의 좌표와 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
.