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)
quelle
() => ^ => */ => +-
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)
?Antworten:
Maxima, 40 Bytes
Probieren Sie es online aus!
Eine Funktion, die ein Polynom als Eingabe verwendet und true zurückgibt, wenn es symmetrisch ist, gibt andernfalls false zurück
quelle
Mathematica, 43 Bytes
Unbenannte Funktion, die ein Polynom im angegebenen Format als Eingabe verwendet (mit der Ausnahme, dass nebeneinander stehende Variablen durch ein Leerzeichen getrennt werden müssen) und zurückgibt
True
oderFalse
.Variables@#
Erkennt die in der Eingabe angezeigten Variablen (und daher kann die Eingabe alle Arten von seltsamen Variablennamen enthalten, nicht nur einzelne Buchstaben).SymmetricReduction
gibt ein geordnetes Polynompaar zurück, wobei das erste symmetrisch ist und die beiden sich zum ursprünglichen Polynom summieren; Daher können wir feststellen, ob die Eingabe symmetrisch ist, indem wir sehen, ob das zweite Polynom identisch ist0
.quelle
TI-Basic, 46 Bytes
Grundsätzlich funktioniert das Polynom in einen (Zwei-Byte-) Variablentyp, der dynamisch ausgewertet wird. Dann tauschen wir die X- und Y-Werte oft genug aus, um festzustellen, ob die Funktion symmetrisch ist.
quelle
*
Operator und gibt1
für wahr und0
für falsch aus.