Đa thức -> Tích hợp


11

Cho một đa thức trong một biến có hệ số hữu tỉ, xuất ra một biểu thức tương đương chỉ chứa 1, biến và tích phân xác định. Ví dụ: - x 2 có thể được biểu thị dưới dạng ∫ x1 1 1d t x d u .

E := 1 | var | ∫EEEdvar

Bất kỳ phương pháp đầu vào / đầu ra hợp lý đều được cho phép.

Ví dụ:

\ Lớn 1 = 1 \ \ Lớn x = x \ \ Lớn 0 = \ int_1 ^ 1 1 \ văn bản dt \ \ Lớn 2 = \ int _ {\ int_1 ^ {\ int_1 ^ 1 1 \ text dv} 1 \ text du} ^ 1 1 \ text dt \ \ Large x ^ 2 = \ int _ {\ int_1 ^ 1 1 \ text dt} ^ xx \ text dv \ \ Large \ frac 12 = \ int _ {\ int_1 ^ 1 1 \ text dt} ^ 1 v \ văn bản dv

Điểm của bạn sẽ là chiều dài mã của bạn nhân với số lượng ký hiệu được sử dụng trong các trường hợp kiểm tra. Bạn sẽ có thể ghi điểm chương trình của bạn. Điểm số thấp nhất chiến thắng.

Các trường hợp thử nghiệm:

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

Chơi golf sẽ trở nên khó khăn, bởi vì tôi không thể đánh golf chỉ là mã hoặc chỉ là đầu ra, và do đó tôi không biết liệu một sự thay đổi sẽ giúp hoặc làm tổn thương điểm số của tôi cho đến khi tôi thử nó, điều đó thật tệ.

Đừng để điểm số hạn chế sáng tạo của bạn. Bạn được hoan nghênh trả lời với chủ yếu một phần của điểm số được tối ưu hóa tốt, ngay cả khi phần còn lại bị bỏ lại.



@ OlivierGrégoire Công việc nghịch đảo
l4m2

Đây là một thử thách thú vị, trở nên tồi tệ hơn nhiều bởi hệ thống tính điểm của nó. Tôi có thể ngay lập tức yêu cầu điểm 0 , bất kể độ dài mã của tôi, chỉ bằng cách gán chr(8747)(hoặc tương đương) cho một biến và sử dụng đó làm dấu, phát sinh 0 lần xuất hiện của ký hiệu. Tôi muốn mạnh mẽ khuyên bạn nên làm điều này một sân golf thử thách đang vani.
caird coinheringaahing

3
@cairdcoinheringaahing Bất kể bạn sử dụng bất kỳ định dạng đầu ra nào, ví dụ: 0=[1,1,1]nó vẫn được tính là "1 ". Do đó, bạn chỉ có thể nhận được 0 điểm trong trường hợp thử nghiệm 1x
l4m2

1
Cá nhân, tôi nghĩ rằng điều này sẽ tốt hơn như một câu hỏi golf-code. Bất kỳ giải pháp nào cũng sẽ rất ấn tượng, vì vậy tôi không nghĩ cần phải có càng ít tích hợp càng tốt.
mbomb007

Câu trả lời:


5

Python 2 , 315 byte * 5113 = 1610595 điểm

Tôi vẫn đang làm việc trên sân golf điểm số. Chơi golf sẽ trở nên khó khăn, bởi vì tôi không thể đánh golf chỉ là mã hoặc chỉ là đầu ra, và do đó tôi không biết liệu một sự thay đổi sẽ giúp hoặc làm tổn thương điểm số của tôi cho đến khi tôi thử nó, điều đó thật tệ.

Mặc dù khó chịu khi chơi golf này, tôi rất thích tính toán.

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

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

Chạy tất cả các trường hợp thử nghiệm - để ghi điểm, đếm tất cả [trong đầu ra.

Đa thức đầu vào được lấy dưới dạng danh sách các cặp hệ số (tử số, mẫu số) theo thứ tự từ công suất thấp nhất đến cao nhất của x. (0, 1)(không) được sử dụng cho các quyền hạn bị thiếu.

Đầu ra được đưa ra với mỗi tích phân được biểu thị bằng một danh sách [f,t,a,b]để biểu thị a b f d t

xác minh

Đây là một phiên bản ít chơi hơn, tạo ra cú pháp Mathicala hợp lệ để tích hợp, có thể được kiểm tra trong một sổ ghi chép trực tuyến. Thật không may, các chương trình có kích thước vừa phải sẽ không hoàn thành trong một máy tính xách tay miễn phí.

Chuyển đến đây , cuộn xuống dưới cùng, "Tạo sổ ghi chép mới", dán (Nhập ngôn ngữ Wolfram) và đánh giá (Shift + Enter) (Lưu ý rằng sử dụng num-pad Enter không hoạt động) .

Giải trình

Sử dụng các phương trình:

-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

Liên kết


@ l4m2 Tôi đã thêm các liên kết đến câu hỏi để chúng tôi có thể xóa những bình luận này. Cảm ơn.
mbomb007

Xác định 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

hoặcZ=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 byte * 5113 tích phân = 777176 điểm

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

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

Chủ yếu sử dụng hai phương trình:

\ 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 byte * 616 tích phân = 135520 điểm

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

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Phương 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'));
trình-

Chỉ cần chỉnh sửa câu trả lời hiện có của bạn. Chúng tôi không cần một câu trả lời riêng cho mỗi lần thử với một số điểm khác nhau. Ngoài ra, hình ảnh phương trình bạn bao gồm thậm chí không có giá trị bao gồm vì chúng không rõ ràng.
mbomb007

1
@ mbomb007 Thông thường tôi đặt giải pháp tương tự với nhau và những giải pháp khá khác nhau. Một vài lần trước tôi đã tìm thấy một số biểu tượng không được phép sử dụng khi tôi nhận được hình ảnh, vì vậy tôi giữ nó ở đây để dễ nhìn hơn
l4m2
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.