多项式->积分


11

给定一个具有有理系数的变量的多项式,输出仅包含1,变量和定积分的等价表达式。例如, - X 2可表示为∫ X1 1 1D X d ü

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 \ \ Large \ 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,而与代码的长度无关chr(8747),而该符号的出现次数为零。我强烈建议您将其作为“香草代码”高尔夫挑战赛。
caird coinheringaahing

3
@cairdcoinheringaahing不管您使用任何输出格式,例如0=[1,1,1],它仍然算作“ 1 ”。因此,您只能在测试用例上获得0分,1以及x
l4m2

1
就个人而言,我认为作为代码高尔夫球问题会更好。任何解决方案都会给人留下深刻的印象,因此我认为不需要尽可能少的集成。
mbomb007 '18

Answers:


5

Python 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]表示∫ 一个b ˚F d

验证

是一个打高尔夫球的版本,它输出有效的Mathematica语法进行集成,可以在联机笔记本中对其进行测试。不幸的是,大小合适的程序无法在免费笔记本中完成。

转到此处,滚动到底部,“创建新笔记本”,粘贴(Wolfram语言输入),然后评估(Shift + Enter)(请注意,使用数字键盘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 '18

定义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 '18

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

1

JavaScript(Node.js),152字节* 5113积分= 777176得分

T='t';P=n=>--n?[T,'u',O,P(n)]:1;N=n=>n-1?n>-1?[1,T,N(1-n),1]:[1,T,N(-n),O]:1;O=N(0)
F=([e,...s])=>e?[1,T,[F(s),T,'x',O],[N(e[0]),T,O,[P(e[1]),T,O,1]]]:O

在线尝试!

主要使用以下两个方程式:

\ ax + b:= \ int _ {\ int_a ^ 0x \ text dt} ^ b1 \ text dt \\ frac 1a = \ int_0 ^ 1u ^ {a-1} \ text du


0

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

在线尝试!

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明


Equation-> Latex: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,18年

只需编辑您现有的答案即可。对于每次得分不同的尝试,我们都不需要单独的答案。另外,您所包含的方程式图像甚至不值得包含,因为它们不清晰。
mbomb007 '18

1
@ mbomb007通常我将相似的解决方案放在一起,而将完全不同的解决方案分开。之前的几次,我在获取图像时发现一些不允许使用的符号,因此将其保留在此处可以更容易地看到它的合法性
l4m2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.