тестове завдання на вакансію Prolog Dev
![]() |
3 years ago | |
---|---|---|
src | 3 years ago | |
README.md | 3 years ago |
тестове завдання на вакансію Prolog Dev
(swi-prolog 8.4.1-2-g3018b532e-focalppa2)
1. Описать два лимита на разовую транзакцию, используя Пролог.
Описание вида: limit_for_1_tr(Country, LimitSum, LimitCurrency).
a. Описать лимит на одну транзакцию в Украине. Сумма лимита - 30 000 грн
b. Описать лимит на одну транзакцию в России. Сумма лимита - 50 000 рублей
2. Описать месячный лимит на транзакции по Грузии, используя Пролог,
если сумма - 10 000 теньге, количество - 15 транзакций.
Описание вида: limit_for_1_month(Country, LimitSum, LimitCount, LimitCurrency).
3. Описать правило акции супермаркета, используя Пролог.
Правило: если покупатель купил товар с кодом 5111 акционной группы 565,
то ему начисляются двойные бонусы на счет за данный товар.
Сумма покупки - 50 грн.
Описание вида: bonus_check(GroupProduct, ProductID, CostProduct, Bonus).
4. Реализовать на Прологе функции, используя арифметические операции, рекурсию и паттерн-матчинг:
a. train_reverse/2 - на вход получает список вида [1,2,4,3,5] и преобразует его в (->) [5,3,4,2,1]
b. train_last_one/2 - на вход получает список вида [1,2,4,3,5] -> 5
c. train_sort_up/2 - сортирует список по возрастанию [3,1,5,2,4] -> [1,2,3,4,5]
d. train_summ/2 - на вход получает список вида [1,2,4,3,5] -> 15 (сумма всех элементов)
e. train_odds/2 - на вход получает список вида [1,2,4,3,5] -> [2,4] (все четные)
f. train_zip/3 - на вход получает 2 списка вида [1,2,4,3,5] и [7,9,11,8,6] -> [[1,7],[2,9],[4,11],[3,8],[5,6]]
g. train_append_tail/3 - добавляет элемент в конец списка [1,2,3] и 4 -> [1,2,3,4] (сделать чисто рекурсивную реализацию)
h. train_concat/3 - получает на вход 2 списка [1,2,3] & [4,5,6] -> [1,2,3,4,5,6]