Поліном -> Інтегрувати


11

Давши многочлен в одній змінній з раціональними коефіцієнтами, виведіть еквівалентний вираз, що містить лише 1змінні та певні інтеграли. Наприклад, - x 2 можна виразити як ∫ x1 1 1d t x d u .

E := 1 | var | ∫EEEdvar

Дозволений будь-який розумний метод введення / виводу.

Приклади:

\ Великий 1 = 1 \ \ великий x = x \ \ великий 0 = \ int_1 ^ 1 1 \ текст dt \ \ великий 2 = \ int _ {\ int_1 ^ {\ int_1 ^ 1 1 \ text dv} 1 \ text du} ^ 1 1 \ текст dt \ \ великий x ^ 2 = \ int _ {\ int_1 ^ 1 1 \ текст dt} ^ xx \ текст dv \ \ великий \ frac 12 = \ int _ {\ int_1 ^ 1 1 \ text dt} ^ 1 v \ текст 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

Відповіді:


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

Перевірка

Ось дещо менш гольф-версія, яка виводить дійсний синтаксис 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

Визначити 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)]?
l4м2

або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

Спробуйте в Інтернеті!

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення


Рівняння-> Латекс: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'));
l4м2

Просто відредагуйте наявну відповідь. Нам не потрібна окрема відповідь на кожну спробу з різним балом. Крім того, обрані рівняння, які ви включили, навіть не варто включати, оскільки вони не розбірливі.
mbomb007

1
@ mbomb007 Зазвичай я розміщую подібне рішення разом і зовсім інші розділені. Попередні кілька разів я знаходив деякі заборонені символи, які використовуються, коли отримую зображення, тому я зберігаю його тут, щоб легше було зрозуміти, що це законно
l4m2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.