Tìm đa thức


20

Chúng ta biết rằng f là một đa thức với các hệ số nguyên không âm.

Cho f (1)f (1 + f (1)) trả về f . Bạn có thể xuất f dưới dạng danh sách các hệ số, đa thức định dạng ASCII hoặc tương tự.

Ví dụ:

f(1)  f(1+f(1))  f
0     0          0
1     1          1
5     75         2x^2 + 3
30    3904800    4x^4 + 7x^3 + 2x^2 + 8x + 9
1     1073741824 x^30

1
Câu hỏi ngẫu nhiên: Tôi quá mệt mỏi để cố gắng chứng minh / từ chối điều này ngay bây giờ, nhưng liệu có đảm bảo rằng chúng tôi sẽ luôn có thể nhận được câu trả lời từ f(1)f(1+f(1))không?
HyperNeutrino

4
@HyperNeutrino Tôi sẽ không thực hiện thử thách này nếu không.
orlp

Phải, đó là một điểm tốt. Hừm. Thật thú vị, tôi sẽ xem xét để chứng minh rằng ngày mai bởi vì điều đó rất thú vị. Cảm ơn vì thử thách thú vị!
HyperNeutrino

1
Các cơ sở chuyển đổi thẻ được coi là một gợi ý?
Thunda

9
Nhiều như đây là một câu đố dễ thương, tôi nghĩ rằng mã về cơ bản là chuyển đổi cơ sở. Có thể bị lừa?
xnor

Câu trả lời:


27

Thạch , 3 byte

‘b@

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

Trả về đa thức dưới dạng danh sách các hệ số.

Vì chúng ta biết đa thức có các hệ số nguyên không âm, f (b) có thể được hiểu là "các hệ số của đa thức, được lấy là chữ số b cơ sở ", theo định nghĩa của một cơ sở. Điều này tùy thuộc vào điều kiện không có hệ số nào vượt quá hoặc bằng b , nhưng chúng ta biết rằng, bởi vì b là một lớn hơn tổng các hệ số (là f (1) ).

Chương trình chỉ cần tăng đối số thứ nhất ( ) để nhận 1 + f (1) , sau đó gọi nguyên tử hội tụ cơ sở ( b) với đối số thứ nhất là cơ sở và đối số thứ hai là số (sử dụng @để hoán đổi thứ tự của các đối số, vì bthường lấy số thứ nhất và số thứ hai cơ sở).

Đây là một thử thách khá thông minh; cảm ơn orlp!


13
Làm thế nào trên thế giới này có thể
Thunda

Tôi cần học thạch ...
sagiksp 30/03/2017

Dennis phải xem cái này cho chắc chắn.
Erik the Outgolfer 30/03/2017

6

Toán học, 29 28 byte

Cảm ơn JungHwan Min đã tiết kiệm 1 byte! (trớ trêu thay, với một Max)

#2~IntegerDigits~Max[#+1,2]&

Hàm thuần túy lấy hai số nguyên không âm và trả về một danh sách các hệ số (số nguyên không âm). #2~IntegerDigits~(#+1)sẽ là thuật toán tương tự như trong câu trả lời Jelly của Doorknob ; Thật không may, IntegerDigitscuộn cảm của Mathicala khi cơ sở bằng 1, do đó cần thêm byte Max[...,2].


2
Haha, tốt đẹp
JungHwan Min


3

VBA, 75 byte

Sub f(b,n)
b=b+1
Do While n>0
s=n Mod b &" " &s
n=n\b
Loop
Debug.?s
End Sub

Khi nó tự động định dạng, nó trông như thế này:

Sub f(b, n)
    b = b + 1
    Do While n > 0
        s = n Mod b & " " & s
        n = n \ b
    Loop
    Debug.Print s
End Sub

Nhà \điều hành là một sàn phân chia


1

AHK , 63 byte

a=%1%
b=%2%
a+=1
While b>0
{s:=Mod(b,a) " "s
b:=b//a
}
Send,%s%

AutoHotkey gán các số 1-n làm tên biến cho các tham số đến. Nó gây ra một số vấn đề khi bạn cố gắng sử dụng các hàm đó bởi vì nó nghĩ rằng bạn có nghĩa là số 1 thay vì biến có tên 1. Cách giải quyết tốt nhất tôi có thể tìm thấy là gán chúng cho các biến khác nhau.


1

Java, 53 byte

a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}

Xuất ra một danh sách các hệ số. Cảm ơn lò nướng cho toán học.

Biểu thức phải được gán cho a Function<Integer, IntConsumer>và được gọi bằng cách đầu tiên applying hàm, sau đó accepting int. Không cần nhập với Java 9 jshell:

C:\Users\daico>jshell
|  Welcome to JShell -- Version 9-ea
|  For an introduction type: /help intro

jshell> Function<Integer, IntConsumer> golf =
        a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}
golf ==> $Lambda$14/13326370@4b9e13df

jshell> golf.apply(30).accept(3904800)
9
8
2
7
4

1

Lisp thông thường, 87 byte

(defun p(x y)(multiple-value-bind(q m)(floor y (1+ x))(if(= 0 q)`(,m)`(,m ,@(p x q)))))

Ung dung:

(defun find-polynomial (f<1> f<1+f<1>>)
  (multiple-value-bind (q m)
      (floor f<1+f<1>> (1+ f<1>))
    (if (zerop q) `(,m)
      (cons m (find-polynomial f<1> q)))))

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.