Um polinômio simétrico é um polinômio que é inalterado sob a permutação de suas variáveis.
Em outras palavras, um polinômio f(x,y)
é simétrico se e somente se f(x,y) = f(y,x)
; um polinômio g(x,y,z)
é simétrico iff g(x,y,z) = g(x,z,y) = g(y,x,z) = etc
.
Por exemplo, x^2+2xy+y^2
, xy
e x^3+x^2y+xy^2+y^3
são polinômios simétricos, onde 2x+y
e x^2+y
não são.
O desafio
Você receberá um polinômio e seu programa deve gerar valores de verdade / falsidade, dependendo se o polinômio fornecido for um polinômio simétrico.
O formato de entrada é permitido de duas maneiras. Uma string e uma matriz, como ["x^2","2xy","y^2"]
, em que o polinômio é a soma de cada elemento.
Exemplo
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
Especificações
A operação tem pedidos, assim como na matemática normal. a ordem é assim:
() => ^ => * => +-
aplicam -se regras de código de golfe .
Todos os caracteres do alfabeto ( a~z
) são aceitos como variáveis, tudo o resto são números.
O polinômio fornecido terá 2 ou mais variáveis.
A multiplicação não requer o operador *, você só precisa detectar a justaposição. (a detecção por justaposição não é necessária, use a opção melhor)
() => ^ => */ => +-
mas seus exemplos não mostram tudo isso. Eu teria imaginado que poderíamos esperar, -
mas não /
. Como você mencionou, ()
devemos lidar com o formato (-1+x)(-y-3)
?