당신의 입장을 평가하십시오


11

소개

2 차원 직교 평면에 있고 그 위치를 결정하고 싶다고 상상해보십시오. 당신은 그 비행기의 3 점과 각각의 거리를 알고 있습니다. 그것으로부터 당신의 위치를 ​​계산하는 것이 항상 가능하지만, 당신의 머리에서 그것을하는 것은 꽤 어렵습니다. 그래서 당신은 그것에 대한 프로그램을 작성하기로 결정했습니다.

도전

3 점과 거리가 주어지면 위치의 좌표를 출력하십시오.

  • 입력 및 출력은 실수 대신 복소수를 사용하는 것을 포함하여 편리한 형식 일 수 있습니다. 어떤 형식을 사용하는지 답으로 명기하십시오.
  • 당신은 항상 당신과의 거리와 정확히 3 개의 별개의 포인트를 얻을 것입니다.
  • 좌표와 거리는 임의의 정밀도로 플로팅됩니다. 출력은 소수점 이하 3 자리까지 정확해야합니다. 반올림은 당신에게 달려 있습니다. 답을 명기하십시오.
  • 세 점이 동일 선상에 있지 않다고 가정 할 수 있으므로 항상 고유 한 솔루션이 있습니다.
  • 솔루션을 무차별 적으로 수행 할 수 없습니다.
  • 이 특정 문제를 사소한 내장을 사용할 수 없습니다. 벡터 규범 등을위한 내장도 허용됩니다.

시작하는 힌트 :

반경을 기준으로 거리가 3 개인 각 점 주위에 원을 생각해보십시오.

규칙

  • 기능 또는 전체 프로그램이 허용됩니다.
  • 입 / 출력의 기본 규칙 .
  • 표준 허점이 적용됩니다.
  • 이것은 이므로 바이트 수가 가장 적습니다. Tiebreaker는 이전에 제출되었습니다.

테스트 사례

한 지점의 입력 형식은 여기 [[x,y],d]x하고 y좌표를 주도하고 d이 지점까지의 거리 인. 해당 포인트 중 3 개가 목록으로 정렬됩니다. 출력 될 것입니다 x다음과 y목록에서.

[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]]-> [2, 3]
[[[24.234, -13.902], 31.46], [[12.3242, 234.12], 229.953], [[23.983, 0.321], 25.572]]-> [-1.234, 4.567]
[[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]]-> [12.345, 892.234]

이 Pyth 프로그램으로 추가 테스트 사례를 생성 할 수 있습니다 . 위치는 입력의 첫 번째 줄로 가고 3 점은 다음 3 줄에 있습니다.

행복한 코딩!


2 차원 데카르트 평면에 맞아야하기 때문에 코드는 가능한 짧아야합니다.
wizzwizz4

명확하지 않은 결과를 계속 사용하고있어 모호함을 유발할 수 있습니다. 어떻게 처리해야합니까?
flawr

@flawr 모든 결과가 정확하고 독특하다고 가정하십시오. 소수 자릿수가 매우 적은 경우에는 프로그램이 작동해야하며 모호성에 대해 걱정하지 않아도됩니다. 집에있을 때 도전을 정리할 것입니다.
Denker

허용되는 대답은 그래프 계산기 일 뿐이므로 TI-Basic (68k 버전)에는 96 바이트 솔루션이 있다고 언급하겠습니다. 명확히하기 위해 solve(세 개의 원 방정식이 주어짐) 문제가 사소한 것입니까? 나는 그것이 사실이라고 생각했지만, 당신이 그런 것들에 대해 괜찮다면 계속해서 게시 할 것입니다.
Fox

답변:


4

데스 바이트, 122 바이트

온라인 사용 . 각 방정식을 방정식 상자에 복사 + 붙여 넣기하고 각 상자에 대해 "모두 추가"를 클릭 한 다음 교차점을 클릭 한 다음 적절하게 각 값을 입력하십시오. 각각 A, B, 및 C포인트에 대한 거리에있는 (a,b), (c,d)그리고 (E,f)각각. 값에 제곱근 sqrt을 구하려면 상자에 값을 입력하십시오.

\left(x-a\right)^2+\left(y-b\right)^2=AA
\left(x-c\right)^2+\left(y-d\right)^2=BB
\left(x-E\right)^2+\left(y-f\right)^2=CC

첫 번째 테스트 사례를 확인하십시오 .

또는 여기에서 살펴볼 수 있습니다.

서클!


꽤 괜찮아 보이지만 프로그래밍 언어에 대한 기준을 충족합니까? 이것은 나를 위해 플로팅 도구처럼 보이지만 결코 사용하지 않았으므로 잘못되었을 수 있습니다.
Denker

1
@DenkerAffe 실제로 메타에 대한 질문을하기 전에 실제로 메타에 대해 질문 했지만 실제로는 중요합니다.
Conor O'Brien

2
좋아, 그럼 내 투표를
해봐

바이트 수에 이의를 제기합니다. 교차점을 무료로 클릭하면 제대로 보이지 않습니다.
lirtosiast

@lirtosiast 나는 정의가 항상 요점에 있다고 주장하고 OP가 이런 종류의 상호 작용이 괜찮다고 말했다. 그러나 약간의 벌칙이 있다고 생각되면 제안을 할 수 있습니다.
Conor O'Brien

4

C, 362 (348) 345 바이트

입력은 stdin :에서 일련의 공백으로 구분 된 수레로 제공됩니다 x1 y1 d1 x2 y2 d2 x3 y3 d3. 출력은 stdout에서 비슷합니다 x y.

#define F"%f "
#define G float
#define T(x)(b.x*b.x-a.x*a.x)
typedef struct{G a;G b;G c;}C;G f(C a,C b,G*c){G x=b.b-a.b;*c=(T(a)+T(b)-T(c))/x/2;return(a.a-b.a)/x;}main(){C a,b,c;G x,y,z,t,m;scanf(F F F F F F F F F,&a.a,&a.b,&a.c,&b.a,&b.b,&b.c,&c.a,&c.b,&c.c);x=f(a,a.b==b.b?c:b,&y);z=f(b.b==c.b?a:b,c,&t);m=t-y;m/=x-z;printf(F F"\n",m,x*m+y);}

Cx- 좌표 a, y- 좌표 b및 거리 (반지름) 인 구조 유형입니다 c. 이 함수 f는 두 개의 C구조와 부동 소수점에 대한 포인터를 사용하여 C(원)이 교차 하는 선을 결정합니다 . 이 선의 y 절편이 뾰족한 부동 소수점에 배치되고 경사가 반환됩니다.

프로그램은 f두 쌍의 원을 호출 한 다음 생성 된 선의 교차점을 결정합니다.


입력이 동일 선상에 있지 않다는 것을 알았으므로, f생산 라인 은 절대 평행하지 않습니다. 테스트는 경사 절편 양식을 사용하고 있기 때문에 수직이 아닌지 확인하는 것입니다. 이런 식으로 항상 정확히 하나의 답이 있습니다.
폭스

2

파이썬-172

(x, y, d) 형식의 튜플 목록으로 입력을받습니다. 더 골프를 타는 방법을 알게되면 알려줘야한다고 생각하지만 알아낼 수 없습니다!

import numpy as N
def L(P):
    Z=[p[2]**2-p[0]**2-p[1]**2 for p in P];return N.linalg.solve([[P[i][0]-P[0][0],P[i][1]-P[0][1]]for i in[1,2]],[(Z[0]-Z[i])*0.5 for i in [1,2]])

여기에서 공백을 생략 할 수 있습니다. 예를 들어 같은 -1 if 1 else 1것이 될 수 있습니다 -1if 1else 1. 이것은 또한 괄호와 함께 작동합니다. 또한 .5동일하다 0.5.
Denker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.