Cree una función que tome una ecuación polinómica, un valor para xy devuelva el resultado de la operación.
Ejemplo: dado 4x^2+2x-5y x=3salida 37. Este es el resultado de4(3)^2+2(3)-5
- Suponga que todos los polinomios son válidos
- El formato polinómico siempre será
coefficient(variable)^exponent => 4x^2excepto:- Cuando el exponente es
1serácoefficient(variable) => 4x - Cuando el coeficiente es
1será(variable)^exponent => x^2
- Cuando el exponente es
- Los polinomios son solo una variable
- El uso de bibliotecas externas está prohibido.
- El coeficiente y la entrada variable pueden ser números positivos y negativos.
Casos de prueba
("3x^3-5x^2+2x-10", 5) => 250("10x^4-5x^3-10x^2+3x+50", 3) => 644("10x+20", 10) => 120("-20x^2+20x-50", -8) => -1490("9", 5) => 9("8x^2+5", 0) => 5
Actualizar
- El formato polinómico siempre será
coefficient(variable)^exponent => 4x^2excepto:- Cuando el exponente es
1serácoefficient(variable) => 4x - Cuando el coeficiente es
1será(variable)^exponent => x^2
- Cuando el exponente es
- Se eliminó la regla del exponente negativo. Mi error. Un polinomio válido no contiene exponente negativo
- Un exponente de
0sería solocoefficient - Se agregó un caso de prueba para
input 0
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
code-golf
math
polynomials
Luis felipe De jesus Munoz
fuente
fuente

3x^3-5x^2+2x-10podemos ingresar3*x^3-5*x^2+2*x-10? O[3 -5 2 -10]. [3 2 1 0]?Respuestas:
JavaScript (ES7), 48 bytes
Basado en una sugerencia de @RickHitchcock
Espera
Xen mayúsculas. Toma entrada en la sintaxis de curry(p)(X).Pruébalo en línea!
JavaScript (ES7), 49 bytes
El mismo enfoque que @DeadPossum . Toma entrada en la sintaxis de curry
(p)(x).Pruébalo en línea!
fuente
replace:p=>x=>eval(p.replace(/[x^]/g,a=>a>f?'*x':'**'))fmenos que esté incluida en el recuento de bytes, a costa de los 2 bytes que se supone que se guardarán. Sin embargo, me gusta este método. Puede haber una manera de guardar un byte o dos actualizándolo de alguna manera.Xmayúsculas, entonces podemos hacerloa<{}?'*X':'**', guardando un byte. De ahí mi pregunta al OP.xsolo1xparax.Python 2 , 54 bytes
-2 bytes gracias a Jo King
-5 bytes gracias a Arnauld
Pruébalo en línea!
fuente
Python 3 ,
535048 byteseditar : -5 bytes gracias a Dennis!
Pruébalo en línea!
Se usa
translatepara evitar encadenarreplacellamadas; La versión de Python 3translatees menos incómoda que la de su predecesora.fuente
"*(%d)"%xpuede llegar a ser"*(x)".xestaba dentro de mievalalcance! Voy a actualizarxque ya no es una representación de cadena, también"*x"funciona.R , 44 bytes
Pruébalo en línea!
Bastante sencillo con R. Reemplazar
nxconn*xy luegoevallaparsecadena d.xse usa ya que así es como nombramos el segundo argumento.La función eval podría incluso ser utilizado de manera más directa con un primer argumento con el formato correcto, y otros argumentos formales (
y,z, etc.) podría ser fácilmente añadidos:R , 20 bytes (no competitivos)
Pruébalo en línea!
fuente
Japt 2.0, 13 bytes
Probarlo .
Explicación:
fuente
Wolfram Language (Mathematica) , 22 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
113108bytesPruébalo en línea!
Gracias a @Arnauld
Dado que la mejor solución JS hasta el momento por @Arnauld (49 bytes) ya ha sido publicada y se usa
eval, decidí usar Regex y reducir en lugar de eso.Aunque bastante largo en comparación con el suyo.
Explicacion:
fuente
-lugar de[-], en~b.indexOf`x`lugar deb.indexOf`x`>0y eliminando ell=que no se utiliza. (Pero esto no soluciona el error).1x^-2en el-.05AB1E ,
1619 bytes+3 bytes como corrección de errores para entrada negativa
x..E( Ejecutar como código de lote ) se ha reemplazado con Ejecutar como Pythonevalen esta última confirmación de @Adnan , pero esta versión aún no está en TIO. @ Mr.Xcoder lo probó en su local (última versión) 05AB1E para verificar que funciona.Vea esta versión sin
.Ever cómo convirtió la cadena de expresión.Explicación:
Programa alternativo de
2528 bytes que funciona en la versión actual de TIO:Pruébalo en línea.
Explicación:
“…¢(“es la cadenaprint(porque:“y“comienza y termina la cadena comprimida…¢es igual a0426porque mira los índices en el archivo info.txt , donde…tiene el índice 4 y¢tiene el índice 26.0426se usa luego en el archivo del diccionario , donde la línea 427 (índice 426) es la palabra que busca, que esprinten este caso.(no tiene un índice en el archivo info.txt, por lo que se interpreta como es.fuente
JavaScript (Node.js) , 143 bytes
Sé que hay mejores respuestas, pero quería hacerlo sin usar eval
Pruébalo en línea!
fuente
[a-z0-9.]¿verdad? La única letra que puede aparecer esx. ¿Por qué.? No necesita manejar coeficientes o exponentes no enteros.Physica , 35 bytes
Pruébalo en línea!
fuente
Jalea , 21 bytes
Pruébalo en línea!
fuente
("-20x^2+20x-50", -8).Java 8,
150149148 bytesNo estoy seguro de si es posible tener una función lambda curry que arroje una excepción. Si es así, se puede guardar 1 byte cambiando-1 byte gracias a @ OlivierGrégoire por mostrarme cómo hacer esto.(s,n)->an->s->.Pruébalo en línea.
Explicación:
Desafortunadamente, la evaluación de JavaScript no es compatible
**, por lo que tengo que usar un reemplazo más largo para convertirla en suMath.powlugar ...fuente
**(ES7 +), ¿por qué esto no admite eso?eval. Y creo que esta evaluación de JavaScript incorporada que puedo usarScriptEngineManagerno se ha actualizado en Java JDK durante años, por lo que no es compatibleES7+...TI-Basic, 6 bytes
La expresión se toma como argumento y se ingresa X durante el tiempo de ejecución. Alternativamente 8 bytes sin
expr:Aquí se ingresan ambos argumentos en tiempo de ejecución.
fuente
Octava ,
473837 bytesAhorró muchos bytes al tomar la segunda entrada como una cadena en lugar de un número.
Pruébalo en línea!
Explicación:
Bastante sencillo: reemplazar
xpor(c), dondeces la segunda entrada, y evaluar. Los paréntesis son necesarios porque en Octave-8^2 == -64.fuente
Ruby , 43 bytes
Pruébalo en línea!
fuente
Perl 5
-pl, 35 bytesPruébalo en línea!
fuente
Ruby ,
4341 bytesPruébalo en línea!
Guardado dos bytes gracias a @ Mr.Xcoder
Como todavía no hay una respuesta de Ruby, agregué una.Nvm hubo uno que usó un enfoque diferenteExplicacion:
fuente
gsub"x","*x"salva dos bytes.Excel, 36 + 2 bytes, no competidor
Evaluar un campo de texto como una fórmula no es sencillo en Excel. Hay un escondido
=EVALUATE()función , a la que se puede llamar definiendo un Nombre.En Excel 2007, Fórmulas> Definir nombre. Definir un nombre llamado
E, con referencias a:Luego, con la entrada de Fórmula adentro
A1, elxvalor adentroB1, ingresando=Een elC1resultado esperado.fuente
Wolfram Language (Mathematica) , 19 bytes
Pruébalo en línea!
Toma de entrada por currificación:
f[x][expr].fuente