あなたは以前に頭の体操を注文するのを見たことがあるかもしれません:
BrainBashersトライアスロンの最新ラウンドでは、キースは4位でした。エイドリアンは最年長ではありませんが、2番目ではなかったダンカンよりも年上です。最年少の次の年齢の子供は2番目に終わった。3位で終わった子供は1位で終わった子供より年上です。ビリーは3位で終わった子供より若いです。誰がどこで終わったかを判断し、年齢順に子供を配置できますか?[ソース]
非常によく似た問題のように見えるものを解決するためのアルゴリズム的アプローチを探しています。
オブジェクトを相互に関連付けるルールに基づいて並べ替えたいオブジェクトのセットがあります。特定のルールセットに対して、複数の解決策が存在する場合があります。そして、有効なソリューションでは、すべてのルールが満たされています。一連のルールに有効なソリューションがない可能性もあります。
例:
オブジェクト:A, B, C, D, E, and F
ルール:
- C> A
- C <D
- F <C
- A> F
- E> F
- D> E
考えられる解決策の1つ:
F A C E D B
オブジェクトBは他のどのオブジェクトとも関連していないため、シーケンスのどこに表示されるかは問題ではないことに注意してください。
確かにこれは以前に行われたことがあります。誰かが私を正しい方向に向けることができますか?最終的には、この並べ替えをJavaで実行します。