対称多項式は、その変数の置換の下で変化しない多項式です。
言い換えれば、多項式f(x,y)
は、次の場合にのみ対称ですf(x,y) = f(y,x)
。多項式g(x,y,z)
は対称iff g(x,y,z) = g(x,z,y) = g(y,x,z) = etc
です。
たとえばx^2+2xy+y^2
、xy
とx^3+x^2y+xy^2+y^3
は対称多項式ですが2x+y
、とx^2+y
はそうではありません。
チャレンジ
多項式が与えられ、与えられた多項式が対称多項式であるかどうかに応じて、プログラムは真偽値を出力します。
入力形式は2つの方法で使用できます。文字列とのような配列。["x^2","2xy","y^2"]
ここで、多項式は各要素の合計です。
例
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
スペック
演算には、通常の数学と同じように次数があります。順序は次のとおりです。
() => ^ => * => +-
コードゴルフのルールが適用されます。
アルファベット(a~z
)内のすべての文字は変数として受け入れられ、それ以外はすべて数字です。
指定された多項式には2つ以上の変数があります。
乗算には*演算子は必要ありません。並置を検出するだけで済みます。(並置による検出は必要ありません。より良いオプションを使用してください)
() => ^ => */ => +-
が、あなたの例はこれらすべてを示していません。私たちが期待できることは想像できただろうが、期待はでき-
なかった/
。あなたが述べたように()
、私たちはフォーマットで処理することが期待されています(-1+x)(-y-3)
か?