Aplicar una integral indefinida a una cadena dada. Las únicas reglas que usará se definen como tales:
∫cx ^ (n) dx = (c / (n + 1)) x ^ (n + 1) + C, n ≠ -1 c, C yn son todas constantes.
Presupuesto:
- Debe poder integrar polinomios con cualquiera de las características posibles:
- Un coeficiente, posiblemente una fracción en el formato
(numerator/denominator)
. - Reconocer que e y π son constantes y, en su uso, ser capaces de formar fracciones o expresiones que las contengan (se pueden mantener en una fracción como
(e/denominator)
o(numerator/e)
, o, en exponentes,x^(e+1)
)- Aparte de estas dos constantes especiales, todos los coeficientes serán números racionales, reales.
- Un exponente, posiblemente una fracción, en el formato
x^(exponent)
- Las expresiones con
e
oπ
en ellas, aparte de sí mismas, no estarán en exponentes. (no tendrá que integrar cosas comox^(e+1)
, pero podría integrarx^(e)
)
- Las expresiones con
- Puede usar variables que no sean x 1-char (es decir
f
)- Esto es solo para los rangos ASCII 65-90 y 97-122.
- No tiene que usar la regla de cadena o integrarse
x^(-1)
.
- Un coeficiente, posiblemente una fracción en el formato
- La salida debe tener relleno (separación entre términos, es decir
x^2 + x + C
. - Si no se sabe cómo integrarse con las características anteriores, el programa debería imprimirse
"Cannot integrate "+input
. - Debe ser un programa completo.
Bonificaciones:
- -10% si se imprime a cabo los exponentes "bastante" formateado de rebaja (en lugar de
x^2
,x<sup>2</sup>
). - -10% si imprime la ecuación (es decir
∫xdx = (1/2)x^2 + C
)
Ejemplos:
Entrada:
x
Salida:
(1/2)x^(2) + C
Entrada:
-f^(-2)
Salida:
f^(-1) + C
Entrada:
(1/7)x^(1/7) + 5
Salida:
(1/56)x^(8/7) + 5x + C
Entrada:
πx^e
Salida:
(π/(e+1))x^(e+1) + C
Entrada:
(f+1)^(-1)
Salida:
Cannot integrate (f+1)^(-1)
e
yπ
, ¿los únicos valores en coeficientes serán números racionales? Es decir, no es necesario manejar polinomios multivariables? 2. Cuando dice " variables que no son x 1-char ", ¿está restringiendoa-zA-Z
o tiene la intención de incluir otros rangos Unicode?ln(x) + C
para una entrada dex^(-1)
?x^(e+1)
no será un integrando, pero puede ser el resultado de una integración. 2) No habrá múltiples variables de letras. 3) sí. 4) Sí, pero debería serlo(1/56)x^(1/7+1) + C
(cometí un error en los ejemplos).Respuestas:
Mathematica 478 * 0.9 = 430.2
Esto crea una verdadera función φ que toma una Cadena como Entrada. (¿Eso cuenta como un programa completo para Mathematica?)
La versión sin golf sería:
Tenga en cuenta que las letras griegas son necesarias para poder utilizar todas las otras letras en la entrada.
fuente
MATLAB, 646 x 0.9 = 581.4 bytes
Actualmente, este es un trabajo en progreso que usa MATLABs integradas en capacidades de integración simbólica. Actualmente, los requisitos se han actualizado, por lo que el formato ahora coincide con los requisitos. También califica para el segundo bono de -10%.
Si alguien quiere participar y sugerir formas de corregir la salida, o usar este código como base para otra respuesta, no dude :). Si puedo encontrar el tiempo, seguiré jugando con él y veré si puedo pensar cómo formatear la salida.
Actualización: Ok, así que después de un poco más de trabajo, así es como se encuentra actualmente el código. Todavía es un trabajo en progreso, pero ahora se está acercando a la salida requerida.
Aquí hay algunos ejemplos de lo que produce actualmente. Como puede ver, no está del todo bien, pero se está acercando.
Entradas:
Salidas:
fuente
x^(8/7)/8
que, si bien matemáticamente correcto, no está en la forma que lo desea -(1/8)x^(8/7)
.