다항식을 구합니다


20

우리는 f 가 음이 아닌 정수 계수를 갖는 다항식 이라는 것을 알고 있습니다.

주어 F (1)F (1 + F (1)) 복귀 F . f 를 계수 목록, ASCII 형식 다항식 등으로 출력 할 수 있습니다 .

예 :

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
무작위 질문 : 나는 / 증명 지금이 권리를 반증하려고 너무 피곤 해요,하지만 우리가 항상에서 답을 얻을 수있을 것이라는 점을 보장 f(1)하고 f(1+f(1))?
HyperNeutrino

4
@HyperNeutrino 다른 방법으로는 시도하지 않았을 것입니다.
orlp

맞습니다. 좋은 지적입니다. 흠. 흥미 롭습니다. 내일 그 사실을 증명할 것입니다. 그것은 매우 흥미 롭기 때문입니다. 흥미로운 도전에 감사드립니다!
HyperNeutrino

1
기본 변환 태그는 힌트 있어야하는데?
Thunda

9
이것이 귀여운 퍼즐 인 것처럼 코드는 기본적으로 기본 변환이라고 생각합니다. 아마도 속삭일까요?
xnor

답변:


27

젤리 , 3 바이트

‘b@

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

다항식을 계수 목록으로 반환합니다.

우리는 다항식이 음이 ​​아닌 정수 계수를 가지고 있다는 것을 알고 있기 때문에, f (b) 는 밑 의 정의에 의해 " 기본 b 자리 로 취한 다항식의 계수"로 해석 될 수 있습니다 . 이것은 어떤 계수도 b를 초과하거나 동일하지 않은 조건에 따라 달라 지지만, b 가 계수의 합 ( f (1) ) 보다 1이 크기 때문에 우리는 알고 있습니다.

프로그램은 단순히 첫 번째 인수 ( )를 증가시켜 1 + f (1 )을 얻은 다음 b첫 번째 인수를 기본으로하고 두 번째 인수를 숫자로 사용하여 기본 변환 원자 ( ) 를 호출합니다 ( 인수 @의 순서를 바꾸는 데 사용 , b일반적으로 숫자를 1 초와 기본 초를 취하기 때문에 ).

이것은 매우 영리한 도전이었습니다. 감사합니다 orlp!


13
세상에서 어떻게 가능
Thunda

젤리를 배워야합니다 ...
sagiksp 5

데니스는 이걸 확실히보아야합니다.
Outgolfer Erik

6

Mathematica, 29 28 바이트

1 바이트를 절약 한 JungHwan Min에게 감사합니다! (역설적으로 Max)

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

음이 아닌 두 정수를 취하고 (음이 아닌 정수) 계수 목록을 반환하는 순수 함수. Doorknob의 Jelly 답변#2~IntegerDigits~(#+1) 과 동일한 알고리즘입니다 . 불행히도 Mathematica 는 밑이 1 일 때 질식하므로 여분의 바이트가 필요합니다 .IntegerDigitsMax[...,2]


2
하하, 좋아
JungHwan Min


3

VBA, 75 바이트

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

자동으로 포맷하면 다음과 같습니다.

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

\운전자는 바닥 제산이고


1

AHK , 63 바이트

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

AutoHotkey는 숫자 1-n을 수신 파라미터의 변수 이름으로 지정합니다. 당신은 당신이 문자 그대로의 숫자 1 대신 변수를 의미 생각하기 때문에 기능 사람들을 사용하려고하면 그것은 몇 가지 문제가 발생 명명 내가 찾을 수있는 가장 좋은 해결 방법은 다른 변수에 할당하는 것입니다 1..


1

자바, 53 바이트

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

계수 목록을 출력합니다. 수학을위한 ov 덕분입니다.

식을 a에 할당 하고 함수 Function<Integer, IntConsumer>를 먼저 호출 한 apply다음을 호출하여 식을 지정해야 accept합니다 int. 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

공통 리스프, 87 바이트

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

언 골프 드 :

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

0

C #, 62 바이트

(a,b)=>{var r="";a++;while(b>0){r+=(b%a)+" ";b/=a;}return r;};
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.