พหุนาม -> รวมเข้าด้วยกัน


11

กำหนดพหุนามในตัวแปรเดียวที่มีสัมประสิทธิ์ rational เอาท์พุทนิพจน์เทียบเท่าที่มีเพียง1ตัวแปรและอินทิกรัล จำกัด ยกตัวอย่างเช่น - x 2สามารถแสดงเป็น∫ x1 1 1D เสื้อ x d U

E := 1 | var | ∫EEEdvar

อนุญาตวิธีการอินพุต / เอาต์พุตที่เหมาะสม

ตัวอย่าง:

\ ใหญ่ 1 = 1 \ \ ใหญ่ x = x \ \ ใหญ่ 0 = \ int_1 ^ 1 1 \ text dt \ \ ใหญ่ 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

การตีกอล์ฟเป็นไปได้ยากเพราะฉันไม่สามารถตีกอล์ฟได้แค่รหัสหรือเอาท์พุทดังนั้นฉันจึงไม่รู้ว่าการเปลี่ยนแปลงจะช่วยหรือกระทบคะแนนของฉันได้หรือไม่จนกว่าฉันจะลองซึ่งมันแย่มากในความคิดของฉัน

อย่าปล่อยให้คะแนน จำกัด การสร้างของคุณ คุณยินดีที่จะตอบด้วยคะแนนส่วนหนึ่งส่วนใหญ่นั้นได้รับการปรับปรุงให้ดีที่สุดแม้ว่าอีกส่วนหนึ่งจะออกไปไม่ดีก็ตาม


ที่เกี่ยวข้อง ซ้ำ?
Olivier Grégoire

@ OlivierGrégoireทำงานในทางกลับกัน
l4m2

นี่เป็นความท้าทายที่น่าสนใจยิ่งแย่ไปกว่าระบบการให้คะแนน ฉันสามารถรับคะแนน0ได้ทันทีโดยไม่คำนึงถึงความยาวของรหัสของฉันเพียงแค่กำหนดchr(8747)(หรือเทียบเท่า) ให้กับตัวแปรและใช้สิ่งนั้นเป็นเครื่องหมาย ฉันขอแนะนำเป็นอย่างยิ่งว่าการทำเช่นนี้จะเป็นการท้าทายรหัสวานิลลา
caird coinheringaahing

3
@cairdcoinheringaahing ไม่ว่าคุณจะใช้รูปแบบผลลัพธ์ใด ๆ ก็ตามเช่น0=[1,1,1]มันยังคงนับเป็น "1 " ดังนั้นคุณจะได้รับเพียง 0 คะแนนในกรณีทดสอบ1และx
l4m2

1
โดยส่วนตัวแล้วฉันคิดว่ามันจะดีกว่าถ้าเป็นคำถามเกี่ยวกับกอล์ฟ โซลูชันใด ๆ จะน่าประทับใจดังนั้นฉันไม่คิดว่าจำเป็นต้องมีการผสานรวมให้น้อยที่สุดเท่าที่จะทำได้
mbomb007

คำตอบ:


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]เพื่อเป็นตัวแทน∫ a b f d t

การตรวจสอบ

นี่คือเวอร์ชัน golfed ที่น้อยกว่าเล็กน้อยซึ่งแสดงผลลัพธ์ Mathematica syntax ที่ถูกต้องสำหรับการรวมซึ่งอาจทดสอบในโน้ตบุ๊กออนไลน์ น่าเสียดายที่โปรแกรมขนาดเหมาะสมจะไม่สมบูรณ์ในโน้ตบุ๊กฟรี

ไปที่นี่เลื่อนลงล่าง "สร้างโน๊ตบุ๊คใหม่" วาง (วุลแฟรมการป้อนข้อมูลภาษา) และประเมินผล (Shift + Enter) (หมายเหตุว่าการใช้ NUM แพดใส่ไม่ทำงาน)

คำอธิบาย

ใช้สมการเหล่านี้:

-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

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

เพียงแก้ไขคำตอบที่มีอยู่ของคุณ เราไม่ต้องการคำตอบแยกต่างหากสำหรับแต่ละครั้งที่มีคะแนนแตกต่างกัน นอกจากนี้รูปภาพสมการที่คุณรวมไว้นั้นไม่คุ้มที่จะรวมถึงเพราะไม่ชัดเจน
mbomb007

1
@ mbomb007 ฉันมักจะวางโซลูชันที่คล้ายกันเข้าด้วยกันและแยกจากกันค่อนข้างแตกต่างกัน ไม่กี่ครั้งก่อนหน้านี้ฉันพบสัญลักษณ์บางอย่างที่ไม่ได้รับอนุญาตให้ใช้เมื่อฉันได้รับภาพดังนั้นฉันจึงเก็บมันไว้ที่นี่เพื่อให้เห็นได้ง่ายขึ้นว่ามันถูกกฎหมาย
l4m2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.