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)
fonte
() => ^ => */ => +-
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)
?Respostas:
Máximos, 40 bytes
Experimente Online!
Uma função que recebe um polinômio como entrada e retorna true se for simétrica; caso contrário, retorna false
fonte
Mathematica, 43 bytes
Função sem nome, tendo como entrada um polinômio no formato fornecido (exceto que as variáveis justapostas devem ser separadas por um espaço) e retornando
True
ouFalse
.Variables@#
detecta as variáveis que aparecem na entrada (e, portanto, a entrada pode conter todos os tipos de nomes de variáveis estranhos, não apenas letras únicas).SymmetricReduction
retorna um par ordenado de polinômios, onde o primeiro é simétrico e as duas somam ao polinômio original; portanto, podemos detectar se a entrada é simétrica, verificando se o segundo polinômio é idêntico0
.fonte
TI-Basic, 46 bytes
Basicamente, como isso funciona é o polinômio é inserido em um tipo de variável (dois bytes) que é avaliado dinamicamente. Em seguida, trocamos os valores X e Y vezes suficientes para ver se a função é simétrica.
fonte
*
operador e gera saídas1
para true e0
false.