Un polinomio simétrico es un polinomio que no cambia bajo la permutación de sus variables.
En otras palabras, un polinomio f(x,y)
es simétrico si y solo si f(x,y) = f(y,x)
; un polinomio g(x,y,z)
es simétrico iff g(x,y,z) = g(x,z,y) = g(y,x,z) = etc
.
Por ejemplo, x^2+2xy+y^2
, xy
y x^3+x^2y+xy^2+y^3
son polinomios simétricos, en los que 2x+y
y x^2+y
no lo son.
El reto
Se le dará un polinomio, y su programa debería generar valores de verdad / falsedad, dependiendo de si el polinomio dado es un polinomio simétrico.
El formato de entrada está permitido de dos maneras. Una cadena y una matriz, como ["x^2","2xy","y^2"]
, donde el polinomio es la suma de cada elemento.
Ejemplo
x^2+2xy+y^2 => true
xy => true
xy+yz+xz-3xyz => true
(x+y)(x-y) => false
2x+y => false
x^2+y => false
x+2y+3 => false
Especificaciones
La operación tiene órdenes, al igual que en las matemáticas normales. el orden es así:
() => ^ => * => +-
se aplican las reglas del código de golf .
Todos los caracteres del alfabeto ( a~z
) se aceptan como variables, todo lo demás son números.
El polinomio dado tendrá 2 o más variables.
La multiplicación no requiere el operador *, solo necesita detectar la yuxtaposición. (no es necesario detectar por yuxtaposición, use la mejor opción)
fuente
() => ^ => */ => +-
pero sus ejemplos no muestran todos estos. Me hubiera imaginado que podríamos esperar-
pero no/
. Como ha mencionado,()
¿se espera que lo manejemos en el formato(-1+x)(-y-3)
?Respuestas:
Máximo, 40 bytes
¡Pruébelo en línea!
Una función que toma un polinomio como entrada y devuelve verdadero si es simétrico; de lo contrario, devuelve falso
fuente
Mathematica, 43 bytes
Función sin nombre que toma como entrada un polinomio en el formato dado (excepto que las variables yuxtapuestas deben estar separadas por un espacio) y devuelve
True
oFalse
.Variables@#
detecta las variables que aparecen en la entrada (y, por lo tanto, la entrada puede contener todo tipo de nombres de variables extraños, no solo letras simples).SymmetricReduction
devuelve un par ordenado de polinomios, donde el primero es simétrico y los dos suman al polinomio original; por lo tanto, podemos detectar si la entrada es simétrica al ver si el segundo polinomio es idéntico0
.fuente
TI-Basic, 46 bytes
Básicamente, cómo funciona esto es que el polinomio se ingresa en un tipo de variable (dos bytes) que se evalúa dinámicamente. Luego, intercambiamos los valores X e Y suficientes veces para ver si la función es simétrica.
fuente
*
operador, y produce salidas1
para verdadero y0
falso.