J'ai besoin d'un algorithme "shuffle albums" pour mon lecteur audio comme dans foobar2k. Le problème est donc: j'ai une liste de pistes, triées selon certains critères pour que les pistes avec le même album soient toutes adjacentes. Maintenant, je dois pouvoir lire des chansons de la playlist en mode "shuffle albums", c'est-à-dire, si la piste suivante vient du même album, il suffit de la jouer, sinon, aller à la première piste d'un album aléatoire suivant. Si l'utilisateur veut jouer la piste précédente, faites la même chose mais en arrière. La question est donc: comment puis-je savoir quel était l'album précédent? Je ne veux vraiment pas garder un historique des albums joués, ou garder une liste séparée. Actuellement, j'implémente le mode shuffle régulier en donnant à chaque piste un index aléatoire aléatoire, de sorte que je puisse trouver les pistes précédentes et suivantes en trouvant les pistes avec le plus grand indice de shuffle plus petit que le courant et le plus petit index aléatoire. Mais cela ne fonctionne pas pour le mode d'albums shuffle. Quelqu'un peut-il m'aider avec ça?Algorithme Groupes de Shuffle
entrée de l'échantillon:
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
Supposons que la piste en cours est la piste 1, piste album A. Ensuite sera la piste 2, Album A. Piste suivante est pas du même album, donc une première piste d'une L'album aléatoire devrait être choisi, disons, Track 1, Album C. Ce que je fais maintenant, c'est choisir la piste suivante comme si c'était un mode shuffle normal, puis aller à la première piste de son album, perdant ainsi l'information d'où je venais à cet album. Donc, quand l'utilisateur veut aller à l'album précédent, je n'ai aucune information comment je suis arrivé là. J'espère que cela rend la question plus claire.
Merci.
Vous devez afficher un exemple d'entrée avec des exemples de votre processus. – Yehonatan
Si vous avez vraiment besoin de revenir en arrière dans une liste non-séquentielle, vous devez stocker l'historique ... –