Saya mencari saran kode pseudocode untuk menyortir file mp3 saya dengan cara yang menghindari pengulangan judul dan artis . Saya mendengarkan crooners - Frank Sinatra, Tony Bennett, Ella Fitzgerald dll. Menyanyikan lagu-lagu standar lama. Setiap artis merekam banyak lagu yang sama - Terbang Me To The Moon, Cara Anda Melihat Malam Ini, Stardust dll. Tujuan saya adalah mengatur lagu (atau memesan daftar putar) dengan ruang maksimum antara artis dan judul lagu. Jadi jika saya memiliki 2000 lagu dan 20 lagu oleh Ella saya ingin mendengarnya hanya sekali dalam setiap 100 lagu. Jika 10 artis menyanyikan Fly Me To The Moon saya ingin mendengarnya sekali dalam setiap 200 lagu. Tentu saja saya ingin menggabungkan kedua persyaratan ini untuk membuat "shuffle pamungkas" saya.
Saya tahu ini adalah pertanyaan terbuka yang cukup luas. Saya belum mulai memprogramnya, jadi saya hanya mencari saran untuk pendekatan yang baik. Saya sebenarnya memiliki beberapa persyaratan lain mengenai penempatan atribut lagu lainnya secara merata tetapi saya tidak akan membahasnya di sini.
Sebagai titik awal saya memodifikasi kode yang saya temukan di sini untuk memanipulasi file mp3 dan membaca tag ID3.
Saya menulis aplikasi kecil yang memenuhi kebutuhan saya menggunakan jawaban parsifal di bawah ini. Saya juga menulis pertanyaan tindak lanjut di sini . Terima kasih atas semua tanggapan yang luar biasa!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
tetapi Anda mengatakan Anda menginginkan "ultimate shuffle". Saya tidak tahu apa yang sebenarnya Anda inginkan dengan itu, bahkan membaca pertanyaan ...