제목과 아티스트의 반복을 피하는 방식으로 mp3 파일 을 정렬 하기위한 의사 코드 제안을 찾고 있습니다. 나는 프랭크 시나트라 (Frank Sinatra), 토니 베넷 (Tony Bennett), 엘라 피츠 제럴드 (Ella Fitzgerald) 등 오래된 기준을 부르는 크루 너를 듣는다. 각 아티스트는 같은 노래를 많이 녹음합니다. Fly Me To The Moon, The To You Tonight, Stardust 등. 내 목표는 아티스트와 노래 제목 사이의 최대 공간으로 노래를 정렬하거나 재생 목록을 주문하는 것입니다. 만약 내가 2000 곡을 가지고 있고 20 곡이 Ella에 의해 있다면 100 곡마다 한번씩 그녀를 듣고 싶습니다. 10 명의 아티스트가 Fly Me To The Moon을 부르면 200 곡마다 한 번씩 듣고 싶습니다. 물론이 두 가지 요구 사항을 결합하여 "궁극적 인 셔플"을 만들고 싶습니다.
나는 이것이 상당히 광범위한 질문이라는 것을 알고 있습니다. 나는 아직 프로그래밍을 시작하지 않았으므로 좋은 접근 방식에 대한 제안을 찾고 있습니다. 실제로 다른 노래 속성의 간격을 균일하게하는 데 필요한 다른 요구 사항이 있지만 여기서는 다루지 않습니다.
시작 지점으로 내가 코드를 수정하고있어 여기 MP3 파일을 조작하고 ID3 태그를 읽을 수 있습니다.
아래 parsifal의 답변을 사용하여 내 요구를 충족시키는 작은 응용 프로그램을 작성했습니다. 나는 또한 여기에 후속 질문을 썼습니다 . 모든 훌륭한 답변에 감사드립니다!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
그러나 "궁극의 셔플"을 원한다고 말합니다. 난 당신이 정말로 무엇을 원하는지 모르겠어요, 심지어 질문을 읽고 ...