MastersAcademy / Programming-Basics

Репозиторій з курсу "Основи програмування" проекту Masters Academy
https://www.facebook.com/cherkasy.masters/
19 stars 155 forks source link

Epic Problem #871

Open Wandalen opened 7 years ago

Wandalen commented 7 years ago

Народ в мене є чудова алгоритмічна задача для вашого курса :) @ZhuChara2004 якщо знайдеш доречним, я не проти як включиш мою задачу в свій курс. Подробиці задачі в наступному повідомленні.

Wandalen commented 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 - масив відомих значень, перелік можливих варіантів, які теоретично можуть існувати і бути доступними. Масив відомих значень є константним, задається раз і впродовж виконання програми не змінюється. Масив відомих значень може не мати в собі якісь із можливих варіантів. На відміну від фіктивного масиву доступних варіантів, доступ до якого обмежений, масив відомих є цілком доступним.

Алгоритм не викидає помилки, якщо знайдено хоча б один доступний варіант. Результат виконання алгоритму не має повторів. Послідовність результату виконання алгоритму має значення.

Wandalen commented 7 years ago

Поділіться рішенням, якщо комусь цікаво :)

Wandalen commented 7 years ago

@OlhaBezpalchuk, @vladislavsheludko, @OlhaBezpalchuk не бажаєте прийняти участь?