対称多項式を検出する[終了]


8

対称多項式は、その変数の置換の下で変化しない多項式です。

言い換えれば、多項式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^2xyx^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つ以上の変数があります。

乗算には*演算子は必要ありません。並置を検出するだけで済みます。(並置による検出は必要ありません。より良いオプションを使用してください)


関数は有効な入力ですか?
Pavel

2
許可される入力を正確に指定し、スペースを十分にカバーするテストケースを含めてください。
xnor

2
私は誰かに答えを書くのに時間を費やすように頼んで、それからあなたがそれが有効かどうかを決めるのは公平ではないと思います。@xnorに同意します。また、あなたが示しました() => ^ => */ => +-が、あなたの例はこれらすべてを示していません。私たちが期待できることは想像できただろうが、期待はでき-なかった/。あなたが述べたように()、私たちはフォーマットで処理することが期待されています(-1+x)(-y-3)か?
Level River St

2
これはまだ不明です。任意次数の多項式を乗算できますか?指数に対して演算を実行できますか?マイナス記号はどこに表示されますか?
xnor 2017

1
入力形式は2つの方法で許可されています」が、2つの非常に異なる課題があり、「仕様」セクションの多くは、2番目の方法が選択された場合は無関係です。
Peter Taylor

回答:



8

Mathematica、43バイト

Last@SymmetricReduction[#,Variables@#]===0&

指定された形式の多項式を入力として受け取り(並置された変数はスペースで区切る必要があることを除く)、Trueまたはを返しFalseます。Variables@#入力に現れる変数を検出します(したがって、入力には、1文字だけでなく、あらゆる種類の奇妙な変数名を含めることができます)。SymmetricReduction順序付けられた多項式のペアを返します。最初の多項式は対称であり、2つは元の多項式と合計されます。したがって、2番目の多項式が同一であるかどうかを確認することで、入力が対称かどうかを検出できます0


OPによると、関数として入力を取り、それにより、さらに多くのことができるようになる可能性があります。
Pavel

1

TI-Basic、46バイト

基本的に、これがどのように機能するかは、多項式が動的に評価される(2バイト)変数型に入力されることです。次に、X値とY値を十分な回数交換して、関数が対称かどうかを確認します。

Prompt u
For(I,0,8
rand->X
Ans->W
rand->Y
u->Z
Y->X
W->Y
If u=W
End
Ans=9

私は仕様が不安定であることを知っています。したがって、このプログラムは入力を文字列として受け取り、並列または*演算子のいずれかで動作し1、trueおよび0falseの出力を行います。
Timtech

確かに、それで1つ検出できます。
Matthew Roh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.