Tôi đang tìm kiếm các đề xuất mã giả để sắp xếp các tệp mp3 của mình theo cách tránh sự lặp lại tiêu đề và nghệ sĩ . Tôi lắng nghe những kẻ lừa đảo - Frank Sinatra, Tony Bennett, Ella Fitzgerald v.v ... hát những tiêu chuẩn cũ. Mỗi nghệ sĩ ghi lại nhiều bài hát giống nhau - Fly Me To The Moon, The Way You Look Tonight, Stardust, v.v. Mục tiêu của tôi là sắp xếp các bài hát (hoặc đặt hàng danh sách phát) với khoảng cách tối đa giữa các nghệ sĩ và tên bài hát. Vì vậy, nếu tôi có 2000 bài hát và 20 bài hát của Ella, tôi chỉ muốn nghe cô ấy một lần trong mỗi 100 bài hát. Nếu 10 nghệ sĩ hát Fly Me To The Moon, tôi muốn nghe một lần trong mỗi 200 bài hát. Tất nhiên tôi muốn kết hợp hai yêu cầu này để tạo ra "shuffle cuối cùng" của mình.
Tôi biết đây là một câu hỏi khá rộng mở. Tôi chưa bắt đầu lập trình nó nên tôi chỉ tìm kiếm gợi ý về một cách tiếp cận tốt. Tôi thực sự có một số yêu cầu khác liên quan đến khoảng cách đều nhau các thuộc tính bài hát khác nhưng tôi sẽ không tham gia vào đó ở đây.
Là một điểm khởi đầu, tôi đang sửa đổi mã, tôi tìm thấy ở đây để thao tác các tệp mp3 và đọc các thẻ ID3.
Tôi đã viết một ứng dụng nhỏ thỏa mãn nhu cầu của mình bằng cách sử dụng câu trả lời của Parsifal bên dưới. Tôi cũng đã viết một câu hỏi tiếp theo ở đây . Cám ơn vì tất cả những phản hồi tốt đẹp!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
nhưng bạn nói rằng bạn muốn có một "shuffle cuối cùng". Tôi không biết bạn thực sự muốn gì với điều đó, thậm chí đọc câu hỏi ...