Подскажите, пожалуйста. Не проходит по 3 пункту: "Для одного заказа любой видео-ролик должен показываться не более одного раза". Ну, и еще по одному. Думаю, основная проблема все-таки в 3 пункте.
Я решил попробовать не рекурсивный способ, а динамический. Суть - построить таблицу (в каждой строке добавляем рекламный ролик, а каждый столбец это плюс одна секунда), в ней расписать варианты подбора. В Вики написано, что такой способ будет работать быстрее рекурсивного при большом количестве элементов.
Если в хранилище все ролики разные, то метод не будет возвращать повторы. Если будут попадаться одинаковые ролики, то они "фильтруются" через LinkedHashSet (в классе Advertisement я переопределил методы equals и hashCode).
package com.javarush.task.task27.task2712;
import com.javarush.task.task27.task2712.kitchen.Cook;
import com.javarush.task.task27.task2712.kitchen.Waiter;
import java.io.IOException;
public class Restaurant {
public static void main(String[] args) throws IOException {
Tablet tablet = new Tablet(1);
Cook cook = new Cook("Amigo");
tablet.addObserver(cook);
Waiter waiter = new Waiter();
cook.addObserver(waiter);
tablet.createOrder();
tablet.createOrder();
tablet.createOrder();
tablet.createOrder();
}
}