Я шукаю псевдокоди щодо сортування моїх mp3-файлів таким чином, щоб уникнути повтору заголовка та виконавця . Я слухаю коронців - Френка Сінатра, Тоні Беннетта, Елла Фіцджеральд тощо, співаючи старі стандарти. Кожен артист записує багато тих самих пісень - Fly Me To The Moon, The Way You Look Tonight, Stardust тощо. Моя мета - упорядкувати пісні (або замовити список відтворення) з максимальним пробілом між виконавцями та назвами пісень. Тож якщо у мене є 2000 пісень, а 20 - від Елли, я хотів би почути її лише раз на кожні 100 пісень. Якщо 10 виконавців співають Fly Me To The Moon, я хотів би почути це раз на кожні 200 пісень. Звичайно, я хочу поєднати ці дві вимоги, щоб створити "остаточне переміщення".
Я знаю, що це досить широке відкрите питання. Я ще не почав її програмувати, тому просто шукаю пропозиції щодо гарного підходу. Насправді у мене є деякі інші вимоги щодо рівномірного розміщення інших атрибутів пісні, але я тут не вникаю в неї.
Як вихідний пункт, я змінюю код, який я знайшов тут, щоб маніпулювати mp3-файлами та читати теги ID3.
Я написав невеликий додаток, який задовольняє мої потреби, використовуючи відповідь parsifal нижче. Тут я також написав додаткове запитання . Дякую за всі чудові відгуки!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
але ти кажеш, що хочеш "остаточного переміщення". Я не знаю, чого ви насправді цього хочете, навіть читаючи питання ...