foobar2kのように、オーディオプレーヤーに「アルバムのシャッフル」アルゴリズムが必要です。したがって、問題は次のとおりです。同じアルバムのトラックがすべて隣接するように、いくつかの基準に従ってソートされたトラックのリストがあります。次に、プレイリストの曲を「アルバムのシャッフル」モードで再生できるようにする必要があります。つまり、次のトラックが同じアルバムの場合は再生するだけです。それ以外の場合は、次のランダムアルバムの最初のトラックに移動します。ユーザーが前のトラックを再生したい場合は、同じことを逆方向に実行します。だから問題は、前のアルバムが何であったかをどうやって知るのかということです。再生したアルバムの履歴を保持したり、別のリストを保持したりしたくありません。
現在、各トラックにランダムなシャッフルインデックスを付けて通常のシャッフルモードを実装しているので、最大のシャッフルインデックスが現在より小さく、最小のシャッフルインデックスが現在よりも大きいトラックを見つけることで、前のトラックと次のトラックを見つけることができます。ただし、シャッフルアルバムモードでは機能しません。誰かがこれを手伝ってくれますか?
サンプル入力:
Track 1, Album A
Track 2, Album A
Track 1, Album B
Track 2, Album B
Track 3, Album B
Track 1, Album C
Track 2, Album C
Track 3, Album C
現在のトラックがトラック1、アルバムAであるとします。次のトラックはトラック2、アルバムAになります。次のトラックは同じアルバムのものではないため、ランダムなアルバムの最初のトラックを選択する必要があります。たとえば、トラック1、アルバムCです。 。私が今していることは、通常のシャッフルモードであるかのように次のトラックを選択し、次にそのアルバムの最初のトラックに移動することです。そのため、このアルバムに到達した場所から情報が失われます。そのため、ユーザーが前のアルバムに行きたいと思ったとき、どうやってそこにたどり着いたのかわかりません。それが質問をより明確にすることを願っています。
ありがとうございました。