다항식-> 적분


11

합리적인 계수를 갖는 하나의 변수에 다항식이 주어지면 1, 변수 및 유한 적분 만 포함하는 등가 식을 출력합니다 . 예를 들어, -x 2 는 ∫ x1 1 1 t t x d u 로 표현 될 수 있습니다 .

E := 1 | var | ∫EEEdvar

합리적인 입 / 출력 방법이 허용됩니다.

예 :

\ Large 1 = 1 \ \ Large x = x \ \ Large 0 = \ int_1 ^ 1 1 \ text dt \ \ Large 2 = \ int _ {\ int_1 ^ {\ int_1 ^ 1 1 \ text dv} 1 \ text du} ^ 1 1 \ text dt \ \ 대형 x ^ 2 = \ int _ {\ int_1 ^ 1 1 \ text dt} ^ xx \ text dv \ \ 대형 \ frac 12 = \ int _ {\ int_1 ^ 1 1 \ text dt} ^ 1 v \ text dv

점수는 코드 길이 에 테스트 사례에 사용 된 기호 수를 곱한 값 입니다. 프로그램 점수를 매길 수 있어야합니다. 최저 점수가 이깁니다.

테스트 사례 :

4/381*x^2+49/8*x^3-17/6
311/59*x^2-92/9*x^3-7/15*x
333/29*x^3+475/96*x^8

코드 나 출력만으로는 골프를 칠 수 없기 때문에 골프는 어려울 것입니다. 따라서 시도 할 때까지 변화가 점수에 도움이되는지 또는 점수를 상하게할지는 모르겠습니다.

점수가 당신의 창조를 제한하게하지 마십시오. 다른 부분은 잘못 남긴 경우에도 점수의 한 부분은 잘 최적화되어 있습니다.



@ OlivierGrégoire 역 작업
l4m2

이것은 점수 시스템에 의해 훨씬 더 어려운 흥미로운 도전입니다. 코드 길이에 관계없이 변수에 변수를 할당 하거나 기호로 사용하여 기호가 0으로 발생하지 않고 즉시 점수 0을 청구 할 수 chr(8747)있습니다. 나는 거라고 강하게 이 바닐라 코드 골프 도전 만드는 것이 좋습니다.
caird coinheringaahing

3
@cairdcoinheringaahing 출력 형식을 사용하더라도 예를 들어 0=[1,1,1]여전히 "1 " 로 계산됩니다 . 따라서 당신은 테스트 케이스에서 0 점수를 얻을 수 1있으며x
l4m2

1
개인적으로, 이것이 코드 골프 질문으로 더 좋을 것이라고 생각합니다. 모든 솔루션이 인상적이므로 가능한 적은 수의 통합이 필요하다고 생각하지 않습니다.
mbomb007

답변:


5

파이썬 2 , 315 바이트 * 5113 = 1610595 점

나는 여전히 스코어를 골라 내고있다. 코드 나 출력 만 골프를 칠 수 없기 때문에 골프는 어려울 것입니다. 따라서 시도 할 때까지 변화가 점수에 도움이되는지 또는 점수를 상하게할지 모르겠습니다.

골치 아픈 일에도 불구하고 나는 미적분학을 즐겼습니다.

t='t'
Z=lambda n:N(Z(-n))if n<0else[1,t,N(1),Z(n-1)]if n>1else[[1,t,1,1],1][n]
N=lambda a:[1,t,a,Z(0)]
x=lambda n:n>1and[x(n-1),t,Z(0),'x']or'x'
M=lambda a,b:[b,t,Z(0),a]
print reduce(lambda a,b:[1,t,N(a),b],[M((lambda a,b:M(Z(a),[x(b-1)if b>1else 1,'x',Z(0),1]))(*c),x(i)if i else 1)for i,c in enumerate(input())])

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

모든 테스트 사례를 실행하십시오 -점수를 매기 [려면 출력에서 모두 계산하십시오 .

입력 다항식은의 가장 낮은 거듭 제곱에서 가장 높은 거듭 제곱 순서로 (분자, 분모) 계수 쌍의 목록으로 사용 x됩니다. (0, 1)제곱은 결 측력에 사용됩니다.

출력은 [f,t,a,b]a b f d t 를 나타내는 각 적분이 목록 으로 표시됩니다.

확인

다음 은 통합을 위해 유효한 Mathematica 구문을 출력하는 약간 덜 골프화 된 버전이며, 온라인 노트북에서 테스트 할 수 있습니다. 불행히도, 적당한 크기의 프로그램은 무료 노트북에서 완료되지 않습니다.

이동 여기 (볼프람 언어 입력) 붙여, "새 노트북 만들기", 아래로 스크롤 및 평가 (Shift 키를 + 입력) (NUM 패드 Enter를 사용하여 작동하지 않습니다 참고) .

설명

다음 방정식을 사용합니다.

-a = \ int_a ^ {0} 1 ~ dt

n = \ int _ {-1} ^ {n-1} 1 ~ dt, n> 1

x ^ n = \ int_0 ^ {x} x ^ {n-1} ~ dt

a + b = \ int _ {-a} ^ b 1 ~ dt

ab = \ int_0 ^ ab ~ dt

\ frac {1} {n} = \ int_0 ^ {1} x ^ {n-1} ~ dx

연결


@ l4m2 질문에 대한 링크를 추가하여 주석을 제거 할 수 있습니다. 감사.
mbomb007

정의 Z(n)def Z(n):return N(Z(-n)) if n<0 else[1,t,1,1] if n<1 else 1 if n<2 else[1,t,N(1),Z(n-1)]?
l4m2

또는Z=lambda n:N(Z(-n))if n<0else[1,t,N(1),Z(n-1)]if n>1else[[1,t,1,1],1][n]
l4m2


0

자바 스크립트 (Node.js) , 220 바이트 * 616 개의 적분 = 135520 점

O=[1,T='t',1,1]
D=(q,t)=>[t,'c',[q,T,1,O],q]
N=n=>n>0?[N(-n),T,1,O]:n?[D(1,1),'c',n&1?[T,T,O,1]:O,N(n/2|0)]:O
P=n=>n?[D(n%2?'x':1,T),T,O,P(n>>1)]:1
F=([e,...s])=>e?[1,T,[F(s),T,'x',O],[N(e[0]),T,O,[P(e[1]-1),'x',O,1]]]:O

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

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


방정식function unpack(x) { return x instanceof Array ? `\\int_{${unpack(x[2])}}^{${unpack(x[3])}}${unpack(x[0])}\\text d${unpack(x[1])}` : x }; console.log (unpack(F([[0, 1], [-7, 15], [311, 59], [-92, 9]])).replace(/\{(.)\}/g,'$1'));
l4m2

기존 답변을 수정하십시오. 점수가 다른 각 시도에 대해 별도의 답변이 필요하지 않습니다. 또한 포함 된 방정식 이미지는 읽을 수 없기 때문에 포함 할 가치가 없습니다.
mbomb007

1
@ mbomb007 일반적으로 비슷한 솔루션을 함께 배치하고 상당히 다른 솔루션을 분리합니다. 이전 몇 번은 이미지를 가져올 때 허용되지 않는 기호가 사용 된 것을 발견했습니다. 따라서 이미지를 합법적으로 쉽게 볼 수 있도록 여기에 보관하십시오
l4m2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.