Open Wandalen opened 7 years ago
Реалізувати логіку класа "Варіатор"
Обєкт класа варіатор приймає в якості опцій allowed - перелік дозволених варіантів preffered - перелік бажаних варіантів known - перелік відомих варіантів onAttempt - колбек що повертає тру, якщо варіант є доступним
Задача класа знайти список варіантів, які задовольняють умови запиту, що визначається опціями allowed та preffered.
Для тестування варіатора будемо застосовувати масив доступних варіантів available. Масив доступних варіантів є фіктивним, в реальній задачі його вміст не відомий й єдина операція, що дозвона із ним це перевірка на наявність в масиві елемента визначеного значення.
Приклад запиту. available : 240,360,720 allowed : 360,720 preffered : 1080 will give 360
Приклад запиту. available : 240,720 allowed : 360,720 preffered : 1080 will give 720
Приклад запиту. available : 240 allowed : 360,720 preffered : 1080 will give error
Приклад запиту. available : 240,360,720 allowed : 240,360,720,1080 preffered : 240,360 will give 240,360
Приклад запиту. available : 240,720 allowed : 240,360,720,1080 preffered : 240,360 will give 240,720
Приклад запиту. available : 240,720 allowed : 240,360,1080 preffered : 240,360 will give 240
Приклад запиту. available : 720 allowed : 240,360,1080 preffered : 240,360 will give error
Також масиви allowed та preffered можуть мати один або більше елементів any. На елементі any в preffered алгоритм має спробувати всі дозволені варіанти поки не знайде перший доступний. На елементі any в allowed алгоритм має спробувати всі відомі варіанти поки не знайде перший доступний. Для реалізації any в allowed існує опція класа known. Known - масив відомих значень, перелік можливих варіантів, які теоретично можуть існувати і бути доступними. Масив відомих значень є константним, задається раз і впродовж виконання програми не змінюється. Масив відомих значень може не мати в собі якісь із можливих варіантів. На відміну від фіктивного масиву доступних варіантів, доступ до якого обмежений, масив відомих є цілком доступним.
Алгоритм не викидає помилки, якщо знайдено хоча б один доступний варіант. Результат виконання алгоритму не має повторів. Послідовність результату виконання алгоритму має значення.
Поділіться рішенням, якщо комусь цікаво :)
@OlhaBezpalchuk, @vladislavsheludko, @OlhaBezpalchuk не бажаєте прийняти участь?
Народ в мене є чудова алгоритмічна задача для вашого курса :) @ZhuChara2004 якщо знайдеш доречним, я не проти як включиш мою задачу в свій курс. Подробиці задачі в наступному повідомленні.