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)
() => ^ => */ => +-
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)
?