二次序列中的有效术语?


10

给出四个数字。对于该序列,前三个分别是,和:一个bC

Ťñ=一个ñ2+bñ+C

您可以通过任何方式输入这四个数字。输出应该是在你的答案提到的两个不同的输出中的一个,一个装置,所述第四数目是序列中的项(上述方程具有用于至少一个溶液这是当一个整数,,和是替换给定值),另一个则相反。ñ一个bCŤñ

这是代码高尔夫,所以最短的答案以字节为单位。您的程序应适用于任何输入其中数字为负或正(或0),十进制或整数。为了避免出现问题但保持一定的复杂性,非整数总是以结尾。不允许使用标准漏洞。一个bCŤñ.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

Answers:


4

果冻 11  10 字节

_/Ær1Ẹ?%1Ạ

一个单子链接,它接受列表*,[[c, b, a], [T_n]]并给出0是否T_n有效的解决方案1

*坦率地承认“您可以以任何方式输入这四个数字”。

在线尝试!或见一个测试套件

怎么样?

_/Æ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
该输入非常好。
阿耳emi弥斯仍然不相信

6

JavaScript(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

在线尝试!

怎么样?

为了清楚起见,我们定义d=Ťñ-C。(重复使用相同的变量Ť将此结果存储在JS代码中。)

情况一个0

等式确实是二次的:

Ťñ=一个ñ2+bñ+C一个ñ2+bñ-d=0

一个=2一个

Δ=b2+2一个d

其根源是:

ñ0=-b-Δ一个ñ1个=-b+Δ一个

如果则该方程式接受整数根Δ

-b-Δ0一个 要么 -b+Δ0一个

一个=0b0

该方程是线性的:

Ťñ=bñ+Cbñ=dñ=db

d0b

一个=0b=0

ñ

Ťñ=Cd=0


1

05AB1E,35 个字节

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

@Arnauld的JavaScript答案端口,确保对其进行投票!

[ŤC]一个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它们是否是平方(这是我将要解决的错误)向Adnan报告)。3.即使两者都可以工作,并且-4.00代替-4.04.0导致1而不是0,但由于我们需要平方根,并且一式三份将被重复,所以它仍然是+2个字节:tÐdivs DŲitD; 或目前正在DÄïŲitD解决其他两个提到的问题。
凯文·克鲁伊森

1
此外,Ų否定输入的结果不一致
阿纳尔德

@Arnauld Wth ..确实的确很奇怪。而且,旧版本甚至提供了不同的结果,就像奇怪的结果一样。:S我已经报告了错误,包括您在05AB1E聊天中向Adnan进行的测试TIO。
凯文·克鲁伊森


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.