回答受付終了まであと7日

図のような、交差させないように同じマーク同士を結ぶゲームにおいて、数学的に解の有無を判定するアルゴリズムはないでしょうか?

画像

数学 | プログラミング53閲覧xmlns="http://www.w3.org/2000/svg">100

回答(3件)

円周上に2点がある色が複数ある場合(画像なら赤と緑)、 これらをまっすぐ結んで交点があると不可能です。 ①各色について円周上に2点あるかどうかを見る。 →2点あるのが2色未満なら可能、2色以上なら②へ ②①で2点あった色から2色を選び、各色2点を結んだ時に交点を持つかどうかを調べる。 →交点を持つ色の組み合わせがなければ可能、ひとつでもあれば不可能 という流れだと思います。 ②については、2色選んで偏角を大きさ順に並べたとき、同じ色が連続して現れる瞬間があれば交点なし、完全に交互なら交点ありです。 >例えば、以下のときは「解なし」と出力させたいです。 n=4、 (r1,θ1)=(1、0) (r2,θ2)=(1、π) (r3,θ3)=(1、π/2) (r4,θ4)=(1、3π/2) ②より偏角順に並べ替えると (r1,θ1) (r3,θ3) (r2,θ2) (r4,θ4) となる。各色が交互に現れるので「不可能」 という感じです。 交互かどうかの判定はrの添字を上手く使えばいけると思います。

この回答はいかがでしたか? リアクションしてみよう

自分ならどう考えるだろう、、、 まず、黄と青はどうとでもなるので除外 緑と赤がどうやっても無理なので「解なし」との結果になる アルゴリズム ・円周上に二点ないものは除外 ・残ったものは直線をひきそれぞれ交点があるかで判定 交点が一つでもあれば「解なし」 交点が一つもなければ「解あり」

2点を通過する直線の方程式どおしについて、解の有無で判断できると思います。 例えば、赤と赤を通過する直線の方程式と青と青を通過する直線の方程式を連立して解があれば交差する、解がなければ交差しない。