• 一些约定

    一个playlist是指一个播放序列,其中的每个条目称为一个entry。每个条目对应一个计数器属性,称为counter,counter是实现这个算法的关键。

  • playlist初始化

    将一些entry序列导入playlist,每个entry对应的counter置为0。

  • 播放一个entry

    • 开始播放/播放一条新的entry时:如果是新的entry,则新entry对应的counter加1;如果仅仅是repeat同一首歌,则counter不变。
    • 播放中切换时:
      • 取出当前playlist中各个entry中最小的counter值,记为counter_min;
      • 取出所有counter值等于counter_min的entry,随机播放其中一条。
  • 添加一条entry到playlist

    • 取出当前playlist中各个entry中最小的counter值,记为counter_min;
    • 这条entry追加到playlist末尾;置这条entry的counter为counter_min。
  • 删除一条entry

    略。