산술 기하학 시퀀스입니까?


11

arithmetico 기하학적 시퀀스 연산 시퀀스 및 형상 시퀀스의 elementwise 제품이다. 예를 들어, 1 -4 12 -32산술 시퀀스 1 2 3 4와 기하 시퀀스 의 곱입니다 1 -2 4 -8. 정수 산술-지오메트리 시퀀스의 n 번째 항은 다음과 같이 표현 될 수 있습니다.

an=rn(a0+nd)

약간의 실수에 대한 d 0이 아닌 실제 및 정수 . 참고 와 반드시 정수되지 않습니다.ra0rd

예를 들어, 서열 2 11 36 100 256 624 1472 3392갖는다 , , 및 .a0=2r=2d=3.5

입력

합리적인 형식의 입력 으로 정수 의 정렬 된 목록 . 기하 시퀀스의 일부 정의는 허용 하고 정의 하므로 입력이 산수-기하학적 시퀀스인지 여부는 이 0이 될 수 있는지 여부에 따라 달라지지 않습니다. 예를 들어 입력으로 발생하지 않습니다.n2r=000=1아르 자형123 0 0 0 0

산출

그것이 산수-기하학적 시퀀스인지 여부. 참 / 거짓 값 또는 서로 다른 두 가지 일관된 값을 출력합니다.

테스트 사례

진실:

1 -4 12 -32
0 0 0
-192 0 432 -1296 2916 -5832 10935 -19683
2 11 36 100 256 624 1472 3392
-4374 729 972 567 270 117 48 19
24601 1337 42
0 -2718
-1 -1 0 4 16
2 4 8 16 32 64
2 3 4 5 6 7
0 2 8 24

그릇된:

4 8 15 16 23 42
3 1 4 1
24601 42 1337
0 0 0 1
0 0 1 0 0
1 -1 0 4 16

1
참고로 인라인 수학 모드를 사용 하여 0\$ 과 같은 것을 쓸 수 있습니다 . 0
FryAmTheEggman

실제로 2 기 입력이 가능합니까? 테스트 사례에는 없습니다.
xnor

@xnor 사소하게 또는 d = 0으로 설정할 수 있으므로이 경우 시퀀스가 ​​고유하지 않지만 출력은 항상 진실해야합니다.아르 자형=1=0
Giuseppe

1
테스트 사례 제안 24 24,
00

1
1 -1 0 4 16는 각각의 True 사례 1 -1 0 4 -16와 와 4 개의 연속 요소를 공유하므로 유용한 False 사례 -1 -1 0 4 16입니다.
Anders Kaseorg

답변:


2

펄 (6) , 184 (128) 135 바이트

{3>$_||->\x,\y,\z{?grep ->\r{min (x,{r&&r*$_+(y/r -x)*($×=r)}...*)Z==$_},x??map (y+*×sqrt(y²-x*z).narrow)/x,1,-1!!y&&z/y/2}(|.[^3])}

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

처음 세 요소에서 아르 자형 를 계산 하고 결과 시퀀스가 ​​입력과 일치하는지 확인합니다. 불행하게도, Rakudo는 ~ 9 바이트의 부동 소수점 숫자를 사용할 때도 0으로 나눌 때 예외를 발생시킵니다.

=아르 자형1+아르 자형 사용하여 시퀀스를 열거합니다 .

일부 개선 사항은 Arnauld의 JavaScript 답변에서 영감을 얻었습니다.

설명

3>$_||  # Return true if there are less than three elements

->\x,\y,\z{ ... }(|.[^3])}  # Bind x,y,z to first three elements

# Candidates for r
x  # If x != 0
??map (y+*×sqrt(y²-x*z).narrow)/x,1,-1  # then solutions of quadratic equation
!!y&&z/y/2  # else solution of linear equation or 0 if y==0

?grep ->\r{ ... },  # Is there an r for which the following is true?

    ( ,                         ...*)  # Create infinite sequence
     x  # Start with x
       {                       }  # Compute next term
        r&&  # 0 if r==0
                (y/r -x)  # d
           r*$_  # r*a(n-1)
                          ($×=r)  # r^n
                +        *  # r*a(n-1)+d*r^n
                                     Z==$_  # Compare with each element of input
min  # All elements are equal?

2

자바 스크립트 (ES7) 135 127 바이트

a=>!([x,y,z]=a,1/z)|!a.some(n=>n)|[y/x+(d=(y*y-x*z)**.5/x),y/x-d,z/y/2].some(r=>a.every((v,n)=>(v-(x+n*y/r-n*x)*r**n)**2<1e-9))

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

어떻게?

아르 자형<109

특수 사례 # 1 : 3 개 미만

용어가 3 개 미만인 경우 항상 일치하는 시퀀스를 찾을 수 있습니다. 그래서 우리는 진실한 가치를 강요합니다.

특수 사례 # 2 : 0 만

00=0=0아르 자형0

0=0

0=0

=아르 자형××

다음을 제공합니다.

1=아르 자형×2=2아르 자형2×

010

아르 자형=221

00

+1

+1=아르 자형.+아르 자형+1

+2

+2=아르 자형.+1+아르 자형+2=아르 자형(아르 자형.+아르 자형+1)+아르 자형+2=아르 자형2+2아르 자형.아르 자형+1=아르 자형2+2아르 자형(+1아르 자형.)=아르 자형2+2아르 자형.+1

우리는 특히

2=아르 자형20+2아르 자형.1

다음 2 차로 이어집니다.

아르 자형202아르 자형.1+2=0

누구의 뿌리인가 :

아르 자형0=1+12020아르 자형1=112020


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