Ein symmetrisches Polynom ist ein Polynom, das unter Permutation seiner Variablen unverändert bleibt.
Mit anderen Worten, ein Polynom f(x,y)
ist genau dann symmetrisch, wenn f(x,y) = f(y,x)
; ein Polynom g(x,y,z)
ist symmetrisch iff g(x,y,z) = g(x,z,y) = g(y,x,z) = etc
.
Zum Beispiel x^2+2xy+y^2
, xy
und x^3+x^2y+xy^2+y^3
sind symmetrische Polynome, wo 2x+y
und x^2+y
nicht sind.
Die Herausforderung
Sie erhalten ein Polynom, und Ihr Programm sollte Wahrheits- / Falschwerte ausgeben, je nachdem, ob das angegebene Polynom ein symmetrisches Polynom ist.
Das Eingabeformat ist auf zwei Arten zulässig. Eine Zeichenfolge und ein Array wie ["x^2","2xy","y^2"]
, wobei das Polynom die Summe der einzelnen Elemente ist.
Beispiel
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
Technische Daten
Die Operation hat Befehle, genau wie in der normalen Mathematik. Die Reihenfolge ist wie folgt:
() => ^ => * => +-
Es gelten die Code-Golf- Regeln.
Alle Zeichen im Alphabet ( a~z
) werden als Variablen akzeptiert, alles andere sind Zahlen.
Das gegebene Polynom hat 2 oder mehr Variablen.
Für die Multiplikation ist der Operator * nicht erforderlich. Sie müssen nur die Nebeneinanderstellung erkennen. (Erkennung durch Nebeneinander ist nicht erforderlich, verwenden Sie die bessere Option)
() => ^ => */ => +-
aber Ihre Beispiele zeigen nicht alle diese. Ich hätte mir vorgestellt, wir könnten es erwarten, -
aber nicht /
. Wie Sie bereits erwähnt haben, wird ()
erwartet, dass wir im Format arbeiten (-1+x)(-y-3)
?