Thuật ngữ hợp lệ từ chuỗi bậc hai?


10

Bạn được cho bốn số. Ba cái đầu tiên lần lượt là a , bc cho chuỗi:

Tn=an2+bn+c

Bạn có thể lấy đầu vào của bốn số này bằng mọi cách. Đầu ra phải là một trong hai đầu ra riêng biệt được đề cập trong câu trả lời của bạn, một nghĩa là số thứ tư là một số hạng trong chuỗi (phương trình trên có ít nhất một nghiệm cho n là số nguyên khi a , b , cTn được thay thế cho các giá trị đã cho), nghĩa khác là ngược lại.

Đây là mã golf, vì vậy câu trả lời ngắn nhất trong byte thắng. Chương trình của bạn sẽ hoạt động cho mọi đầu vào của a,b,c,Tn trong đó các số là âm hoặc dương (hoặc 0), thập phân hoặc số nguyên. Để tránh các vấn đề nhưng giữ một số phức tạp, các số nguyên không phải luôn luôn kết thúc bằng .5 . Lỗ vòng tiêu chuẩn không được phép.

Các trường hợp thử nghiệm

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

Câu trả lời:


4

Thạch ,  11  10 byte

_/Ær1Ẹ?%1Ạ

Liên kết đơn âm chấp nhận danh sách danh sách * [[c, b, a], [T_n]]và mang lại kết quả 0nếu T_nlà giải pháp hợp lệ hoặc 1nếu không.

* thừa nhận có một chút tự do với "Bạn có thể nhận đầu vào của bốn số này bằng mọi cách".

Hãy thử trực tuyến! Hoặc xem một bộ thử nghiệm .

Làm sao?

_/Æ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

Nếu chúng ta có thể mang lại kết quả không khác biệt thì _/Ær1Ẹ?ḞƑƇcũng sẽ hoạt động cho 10 (nó mang lại 1khi tất cả các giá trị là giải pháp, nếu không thì danh sách các giải pháp riêng biệt và do đó luôn luôn là một danh sách trống khi không có giải pháp - điều này cũng sẽ đáp ứng định nghĩa Truthy vs Falsey tiêu chuẩn )


2
Đầu vào đó là hoàn toàn tốt.
Artemis vẫn không tin tưởng vào

6

JavaScript (ES7), 70 byte

Trả về giá trị Boolean.

(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

Hãy thử trực tuyến!

Làm sao?

d=Tnct

a0

Phương trình thực sự là bậc hai:

Tn=an2+bn+can2+bnd=0

a=2a

Δ=b2+2ad

và rễ là:

n0=bΔan1=b+Δa

Δ

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

a=0,b0

Phương trình là tuyến tính:

Tn=bn+cbn=dn=db

d0(modb)

a=0,b=0

n

Tn=cd=0


1

05AB1E , 35 byte

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

Câu trả lời JavaScript của @Arnauld , vì vậy hãy đảm bảo nâng cao anh ấy!

[t,c],a,b

Dùng thử trực tuyến

Giải trình:

Æ                         # 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)

Sẽ Ųtiết kiệm một số byte? (Có lẽ không phải vì sau này chúng ta cần phải tính căn bậc hai.)
Arnauld

@Arnauld Thật không may vì ba lý do: 1. Ųvới các giá trị âm bằng cách nào đó tự đưa ra giá trị thay vì 0.. 2. Ųvới các giá trị thập phân (ngay cả với .0) đưa ra 0thay vì 1chúng có phải là hình vuông hay không (đây là lỗi mà tôi sẽ báo cáo với Ad Nam). 3. Ngay cả khi cả hai sẽ hoạt động và -4.0sẽ dẫn đến 0thay vì -4.04.0sẽ dẫn đến 1thay vì 0, nó vẫn sẽ là +2 byte vì chúng ta cần căn bậc hai và bộ ba sẽ được phân tách trùng lặp: tÐdivs DŲitD; hoặc hiện tại DÄïŲitDđể khắc phục hai vấn đề được đề cập khác.
Kevin Cruijssen

1
Bên cạnh đó, kết quả của Ųđầu vào tiêu cực không nhất quán .
Arnauld

@Arnauld Wth .. điều đó thực sự khá kỳ lạ. Và phiên bản kế thừa thậm chí còn cho một kết quả khác, giống như kết quả kỳ lạ .. : S Tôi đã báo cáo các lỗi, bao gồm cả TIO thử nghiệm của bạn cho Adnan trong cuộc trò chuyện 05AB1E.
Kevin Cruijssen


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.