द्विघात अनुक्रम से वैध शब्द?


10

आपको चार नंबर दिए गए हैं। अनुक्रम के लिए पहले तीन क्रमशः , और सी हैं:

टीn=n2+n+सी

आप किसी भी तरह से इन चार नंबरों का इनपुट ले सकते हैं। आउटपुट आपके उत्तर में उल्लिखित दो अलग-अलग आउटपुटों में से एक होना चाहिए, एक का मतलब है कि चौथे नंबर अनुक्रम में एक शब्द है (उपरोक्त समीकरण में n लिए कम से कम एक समाधान है जो कि पूर्णांक है जब , , सी और टीn दिए गए मूल्यों के लिए प्रतिस्थापित किया जाता है), दूसरे का मतलब विपरीत है।

यह कोड गोल्फ है, इसलिए बाइट्स जीत में सबसे छोटा जवाब है। आपका प्रोग्राम ,,सी,टीn के किसी भी इनपुट के लिए काम करना चाहिए जहां संख्या नकारात्मक या सकारात्मक (या 0), दशमलव या पूर्णांक हैं। समस्याओं से बचने के लिए लेकिन कुछ जटिलताएं रखें, गैर-पूर्णांक हमेशा केवल .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नहीं तो।

* माना कि "आप इन चार नंबरों का इनपुट किसी भी तरह से ले सकते हैं"।

इसे ऑनलाइन आज़माएं! या एक परीक्षण-सूट देखें

कैसे?

_/Æ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जब सभी मूल्य समाधान होते हैं, अन्यथा अलग-अलग समाधानों की एक सूची और इसलिए हमेशा कोई खाली सूची जब कोई समाधान नहीं होता है - यह मानक सत्य बनाम फाल्सी परिभाषा को भी पूरा करेगा। )


2
वह इनपुट पूरी तरह से ठीक है।
आर्टेमिस अभी भी

6

जावास्क्रिप्ट (ईएस 7), 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

इसे ऑनलाइन आज़माएं!

कैसे?

=टीn-सीटी

0

समीकरण वास्तव में द्विघात है:

टीn=n2+n+सीn2+n-=0

'=2

Δ=2+2'

और जड़ें हैं:

n0=--Δ'n1=-+Δ'

Δ

--Δ0(आधुनिक') या -+Δ0(आधुनिक')

=0,0

समीकरण रैखिक है:

टीn=n+सीn=n=

0(आधुनिक)

=0,=0

n

टीn=सी=0


1

05AB1E , 35 बाइट्स

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

पोर्ट @Arnauld का जावास्क्रिप्ट उत्तर है , इसलिए उसे सुनिश्चित करना सुनिश्चित करें!

[टी,सी],,

इसे ऑनलाइन आज़माएं

स्पष्टीकरण:

Æ                         # 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 दुर्भाग्य से तीन कारणों से नहीं: 1. Ųनकारात्मक मूल्यों के साथ किसी तरह अपने आप ही मूल्य देता है 0.. 2. Ųदशमलव मूल्यों के साथ (यहां तक ​​कि .0) 0इसके बजाय 1कि वे एक वर्ग हैं या नहीं (यह एक बग है जो मैं करूँगा अदनान को रिपोर्ट)। 3. यहां तक कि अगर दोनों में काम किया होता और -4.0में परिणाम होगा 0के बजाय -4.0और 4.0में परिणाम होगा 1करने के बजाय 0, यह अभी भी 2 बाइट्स के बाद से हम वर्ग जड़ की जरूरत है और तीन प्रतियों अलग किया जाएगा डुप्लिकेट होगा: tÐdiबनाम DŲitD; या वर्तमान DÄïŲitDमें अन्य दो उल्लिखित मुद्दों को ठीक करने के लिए।
केविन क्रूज़सेन

1
इसके अलावा, Ųनकारात्मक इनपुट पर परिणाम असंगत हैं
Arnauld

@Arnauld Wth .. यह वास्तव में बहुत अजीब है। और विरासत संस्करण भी एक अलग परिणाम देता है, बस अजीब परिणाम के रूप में .. : एस मैंने बग की रिपोर्ट की है, जिसमें आपका परीक्षण TIO से अदनान 05AB1E चैट में शामिल है।
केविन क्रूज़सेन


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.