이 사변형은 주기적입니까?


18

수학에서 순환 사변형 은 꼭짓점이 모두 같은 원에 있습니다. 다시 말해서, 모든 정점은 다른 3 개의 원주에 있습니다. 자세한 내용은 MathWorld 기사를 참조하십시오 .

이 사변형은 주기적입니다.

주기적 사변형

이 사다리꼴은 주기적이지 않습니다.

사다리꼴

(위키 백과의 이미지)

객관적인

볼록 사변형을 형성하는 반 시계 방향의 4 개의 정점 좌표가 주어지면 사변형이 주기적인지 확인합니다.

좌표는 정수입니다 (단, 원주 중심 좌표와 원주가 반드시 정수일 필요는 없습니다). 이전 단락에서 암시 한 것처럼 3 개의 점은 동일 선상에 있고 두 개의 일치하지 않습니다.

I / O

합리적인 형식을 사용하여 입력 할 수 있습니다. 특히 [[x1,x2,x3,x4],[y1,y2,y3,y4]], [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]복잡한 숫자는 모두 정상입니다.

true 및 false에 대해 다른 일관된 값을 사용하여 출력합니다.

테스트 사례

진실:

[0,0], [314,0], [314,1], [0,1]
[-5,5], [5,-5], [1337,42], [42,1337]
[104, -233], [109, -232], [112, -231], [123, -224]

그릇된:

[0,0], [314,0], [314,100], [0,99]
[31,41],[59,26],[53,58],[0,314]

답변:


11

Wolfram Language (Mathematica) , 23 바이트

#∈Circumsphere@{##2}&

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

4 개 개의 입력 걸린다 : 목록을 {x1,y1}, {x2,y2}, {x3,y3},와 {x4,y4}. 첫 번째 점이 다른 세 점의 둘레에 있는지 확인합니다. 경우에도 검사를 위해 작동 +1 의 점 아르 자형 concyclic있는 마지막 제공, 그가 (때문에이 affinely 독립 Circumsphere당신이 그것을 퇴화 입력을 주면 슬픈).

또는 다음은 수학적 접근 방식입니다.

Wolfram Language (Mathematica) , 29 28 25 24 바이트

Det@{#^2+#2^2,##,1^#}^0&

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

두 개의 목록을 입력으로 사용합니다. {x1,x2,x3,x4}{y1,y2,y3,y4}. Indeterminate네 점이 공통 원에 있으면 반환 하고 1그렇지 않으면 반환합니다.

(엑스1,와이1),(엑스2,와이2),(엑스,와이),(엑스4,와이4)

[엑스12+와이12엑스22+와이22엑스2+와이2엑스42+와이42엑스1엑스2엑스엑스4와이1와이2와이와이41111]

이 행렬의 결정자는 4 개의 행이 선형 적으로 종속적이고 행 사이의 선형 의존성이 4 개의 점에서 모두 만족되는 원의 방정식과 동일한 경우에만 0입니다.

행렬식이 0이면 내가 확인을 생각할 수있는 가장 짧은 방법은 0 번째 전원을 인상하는 것입니다 0^0이다 Indeterminate아무것도가 제공하는 동안 1.



8

펄 6 , 44 바이트

{!im ($^b-$^a)*($^d-$^c)/(($d-$a)*($b-$c)):}

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

정점을 복소수로 취합니다. 주기적 사변형에서 반대 각도의 합이 180 °라는 사실을 사용합니다. 연산 순서는 부동 소수점 연산이 (충분히 작은) 정수에 대한 정확한 결과를 생성하도록 보장해야합니다.

Misha Lavrov 포트 TI 기본 솔루션, 33 바이트

{![*](map */*,($_ Z-.rotate)).im}

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


42? 여전히 정확합니까?
조 왕

1
@JoKing 아니요, 아닙니다 .
nwellnhof

이 경우 콜론은 무엇을합니까? 레이블이 아니며 메서드 호출이 아닙니다.
user202729

@ user202729이 있다 와 메쏘드 호출 간접 invocant 구문 .
nwellnhof

6

자바 스크립트 (ES6)

각도 테스트, 114 바이트

[엑스1,와이1,엑스2,와이2,엑스,와이,엑스4,와이4]

a=>(F=i=>(A=Math.atan2)(a[i+3&7]-(y=a[i+1]),a[i+2&7]-a[i])-A(a[i+5&7]-y,a[i+4&7]-a[i]))(0)+F(2)+F(4)+F(6)==Math.PI

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


결정자 130 바이트 계산

[엑스1,엑스2,엑스,엑스4][와이1,와이2,와이,와이4]

이것은 회전 행렬을 사용 하여 MishaLavrov의 두 번째 답변 과 같습니다 .

x=>y=>!(g=a=>a+a?a.reduce((v,[r],i)=>v+(i&1?-r:r)*g(a.map(r=>r.slice(1)).filter(_=>i--)),0):1)(x.map((X,i)=>[1,Y=y[i],X,X*X+Y*Y]))

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


6

TI 기본 (83 시리즈), 21 바이트

e^(ΔList(ln(ΔList(augment(Ans,Ans
not(imag(Ans(1)Ans(3

의 4 개의 복소수 목록으로 입력을 Ans받습니다. 1사변형이 주기적인지 아닌지를 반환 합니다 0.

1,2,,4

  • ΔList(augment(Ans,Ans21,2,4,14
  • e^(ΔList(ln(그것의 비는 비율을 계산합니다221,42,144,
  • 221144 (,1;2,4)=221:441

나는 수치 오류가 문제인지 확인하기 위해 최선을 다했지만 문제가 아닌 것 같지만 누군가가 좋은 테스트 사례를 가지고 있다면 알려주십시오.


3

자바 스크립트 (ES6) (101 바이트)

p=>(h=(a,b)=>Math.hypot(p[a]-p[b],p[a+1]-p[b+1]))&&((h(2,4)*h(0,6)+h(0,2)*h(4,6)-h(0,4)*h(2,6))<1e-8)

입력을로 취하고 [x1,y1,x2,y2,x3,y3,x4,y4]부울을 출력합니다.

이자형에프=+
이자형,에프,,,

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


2

젤리 , 11 바이트

²Sṭ;L€€ṖÆḊ¬

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

Misha Lavrov의 Mathematica 솔루션의 결정 방법을 사용합니다 . 1을 true로, 0을 false로 출력합니다.

작동 원리

²Sṭ;L€€ṖÆḊ¬  Main link (monad). Input: [[x1,x2,x3,x4], [y1,y2,y3,y4]]
²S           Square each scalar and add row-wise; [x1*x1+y1*y1, ...]
  ṭ          Append to the input
   ;L€€      Add two rows of [1,1,1,1]'s
       Ṗ     Remove an extra row
        ÆḊ¬  Is the determinant zero?

젤리 , 12 바이트

Iµ÷×ƭ/÷SµḞ=A

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

Misha Lavrov의 TI-Basic 솔루션 에서 복잡한 교차비 접근법을 사용합니다 . 1을 true로, 0을 false로 출력합니다.

작동 원리

Iµ÷×ƭ/÷SµḞ=A  Main link (monad). Input: list of four complex numbers [z1,z2,z3,z4]
I             Increments; [z2-z1, z3-z2, z4-z3]
 µ            Refocus on above for sum function
  ÷×ƭ/÷S      (z2-z1)÷(z3-z2)×(z4-z3)÷(z4-z1)
        µ     Refocus again
         Ḟ=A  (real part) == (norm) within error margin
              i.e. imag part is negligible?

둘 다 골프를 할 수 있다고 생각합니다 ...


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.