Estou procurando sugestões de pseudocódigo para classificar meus arquivos mp3 de uma maneira que evite a repetição de títulos e artistas . Ouço cantores - Frank Sinatra, Tony Bennett, Ella Fitzgerald etc. cantando velhos padrões. Cada artista grava muitas das mesmas músicas - Fly Me To The Moon, The Way You Look Tonight, Stardust etc. Meu objetivo é organizar as músicas (ou solicitar a lista de reprodução) com o espaço máximo entre os artistas e os títulos das músicas. Então, se eu tenho 2000 músicas e 20 são de Ella, eu gostaria de ouvi-la apenas uma vez a cada 100 músicas. Se dez artistas cantarem Fly Me To The Moon, eu gostaria de ouvir uma vez a cada 200 músicas. É claro que quero combinar esses dois requisitos para criar meu "shuffle final".
Eu sei que essa é uma questão em aberto. Ainda não comecei a programar, então estou apenas procurando sugestões de uma boa abordagem a ser adotada. Na verdade, tenho alguns outros requisitos em relação ao espaçamento uniforme de outros atributos da música, mas não abordarei isso aqui.
Como ponto de partida, estou modificando o código que encontrei aqui para manipular arquivos mp3 e ler tags ID3.
Eu escrevi um pequeno aplicativo que satisfaz minha necessidade usando a resposta de parsifal abaixo. Também escrevi uma pergunta de acompanhamento aqui . Obrigado por todas as ótimas respostas!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
mas você diz que deseja um "shuffle final". Eu não sei o que você realmente quer com isso, mesmo lendo a pergunta ...