이차 시퀀스에서 유효한 용어?


10

네 개의 숫자가 주어집니다. 처음 세는 , 및 시퀀스에 대해, 각각 :abc

Tn=an2+bn+c

이 4 개의 숫자를 어떤 식 으로든 입력 할 수 있습니다. 출력 응답에서 설명한 두 개의 별개의 출력들 중 하나이어야 네번째 번호 (순서 용어 한 수단임을 상기 식을위한 적어도 하나의 용액 갖는 정수 , , 및 됩니다 주어진 값으로 대체), 다른 하나는 반대를 의미합니다.nabcTn

이것은 코드 골프이므로 바이트 단위의 최단 답변이 이깁니다. 프로그램은 숫자가 음수 또는 양수 (또는 0), 10 진수 또는 정수인 입력에 대해 작동해야합니다 . 문제를 피하면서 약간의 복잡성을 유지하기 위해 비 정수는 항상 끝납니다 . 표준 루프 구멍이 허용되지 않습니다.a,b,c,Tn.5

테스트 사례

a   |b   |c   |T_n |Y/N
------------------------
1   |1   |1   |1   |Y     #n=0
2   |3   |5   |2   |N
0.5 |1   |-2  |-0.5|Y     #n=1
0.5 |1   |-2  |15.5|Y     #n=5
0.5 |1   |-2  |3   |N     
-3.5|2   |-6  |-934|Y     #n=-16
0   |1   |4   |7   |Y     #n=3
0   |3   |-1  |7   |N
0   |0   |0   |1   |N
0   |0   |6   |6   |Y     #n=<anything>
4   |8   |5   |2   |N

답변:


4

젤리 ,  11  10 바이트

_/Ær1Ẹ?%1Ạ

* 목록의 목록을 받아들이는 모나드 링크 [[c, b, a], [T_n]]및 수율 0경우 T_n유효한 솔루션 또는 1하지 않을 경우.

* "어떻게 든이 4 개의 숫자를 입력 할 수 있습니다"로 약간의 자유를 인정합니다.

온라인으로 사용해보십시오! 또는 테스트 스위트를 참조하십시오.

어떻게?

_/Ær1Ẹ?%1Ạ - Link: list of lists of integers, [[c, b, a], [T_n]]
 /         - reduce by:
_          -   subtraction                    [c-T_n, b, a]
      ?    - if...
     Ẹ     - ...condition: any?
  Ær       - ...then: roots of polynomial     i.e. roots of a²x+bx+(c-T_n)=0
    1      - ...else: literal 1
       %1  - modulo 1 (vectorises)            i.e. for each: keep any fractional part
           -                                       note: (a+bi)%1 yields nan which is truthy
         Ạ - all?                             i.e. all had fractional parts?
           -                                       note: all([]) yields 1

우리가 명확하지 않은 결과를 산출 할 수 있다면 _/Ær1Ẹ?ḞƑƇ10 일도 가능합니다 ( 1모든 값이 솔루션 일 때 산출 합니다. 그렇지 않으면 별개의 솔루션 목록이며 따라서 솔루션이 없을 때 항상 빈 목록입니다-이것은 표준 Truthy vs Falsey 정의를 충족합니다) )


2
그 입력은 완벽합니다.
Artemis는 여전히

6

자바 스크립트 (ES7), 70 바이트

부울 값을 반환합니다.

(a,b,c,t)=>(t-=c,(a*=2)?(x=(b*b+2*a*t)**.5-b)%a&&(x+b+b)%a:b?t%b:t)==0

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

어떻게?

명확성을 위해 정의 합니다. (이 변수를 JS 코드에 저장하기 위해 동일한 변수 가 재사용됩니다.)d=Tnct

사례a0

방정식은 실제로 2 차입니다.

Tn=an2+bn+can2+bnd=0

으로 , 판별은 :a=2a

Δ=b2+2ad

그리고 뿌리는 :

n0=bΔan1=b+Δa

가 정수이고 다음 중 하나 인 경우 방정식은 정수 루트를 허용 합니다.Δ

bΔ0(moda) or b+Δ0(moda)

사례a=0,b0

방정식은 선형입니다.

Tn=bn+cbn=dn=db

경우 정수 루트를 허용합니다 .d0(modb)

사례a=0,b=0

방정식은 더 이상 에 의존하지 않습니다.n

Tn=cd=0


1

05AB1E , 35 바이트

Æ©²Āi²4P³n+tÐdi(‚³-IJ·Ä%P}뮳Āi³%]_

@Arnauld 의 JavaScript 답변 포트이므로 그를 투표 하십시오!

형식으로 입력을 받습니다.[t,c],a,b

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

설명:

Æ                         # Reduce the (implicit) input-list by subtraction (`t-c`)
 ©                        # Store this value in the register (without popping)
  ²Āi                     # If the second input `a` is not 0:
     ²4P                  #  Calculate `(t-c)*a*4`
        ³n+               #  Add the third input `b` squared to it: `(t-c)*a*4+b*b`
           t              #  Take the square-root of that
                          #  (NOTE: 05AB1E and JS behave differently for square-roots of
                          #   negative integers; JS produces NaN, whereas 05AB1E leaves the
                          #   integer unchanged, which is why we have the `di...}` here)
            Ð             #  Triplicate this square
             di           #  If the square is non-negative (>= 0):
               (‚         #   Pair it with its negative
                 ³-       #   Subtract the third input `b` from each
                   Ä      #   Take the absolute value of both
                    ²·Ä%  #   Modulo the absolute value of `a` doubled
                          #   (NOTE: 05AB1E and JS behave differently for negative modulos,
                          #    which is why we have the two `Ä` here)
                        P #   Then multiply both by taking the product
              }           #  And close the inner if-statement
    ë                     # Else (`a` is 0):
     ®                    #  Push the `t-c` from the register
      ³Āi                 #  If the third input `b` is not 0:
         ³%               #   Take modulo `b`
    ]                     # Close both if-else statements
     _                    # And check if the result is 0
                          # (which is output implicitly)

Ų바이트를 절약 할 수 있습니까? (어쨌든 나중에 우리는 제곱근을 계산할 필요가 없기 때문에 아마 아닐 것입니다.)
Arnauld

@Arnauld 불행히도 세 가지 이유 : 1. Ų음의 값으로 어떻게 든 대신 값 자체를 제공합니다 0.. 2. Ų진수 값 (심지어와와 .0)주는 0대신에 1그들은 이것은 버그 (사각형 여부를하든 어떤 I 것 Adnan에보고). 둘 다 일 것이다, 3하더라도 -4.0초래 0대신 -4.04.0의 초래 1대신에 0우리는 제곱근을 필요로하고 세중의 중복을 분리 할 것이기 때문에, 그것은 여전히 2 바이트 것 : tÐdiDŲitD; 또는 현재 DÄïŲitD언급 된 다른 두 가지 문제를 해결하기 위해.
Kevin Cruijssen

1
또한 Ų음의 입력 결과 가 일치하지 않습니다 .
Arnauld

@ Arnauld Wth .. 정말 이상합니다. 그리고 레거시 버전은 심지어 이상한 결과와는 다른 결과를 낳습니다. : S 05AB1E 채팅에서 테스트 TIO를 Adnan에 포함한 버그를보고했습니다.
Kevin Cruijssen


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