тестове завдання на вакансію Prolog Dev

221V 720e1f0495 task part 4 3 years ago
src 720e1f0495 task part 4 3 years ago
README.md 379eb8e4c4 prolog version 3 years ago

README.md

prolog_test

тестове завдання на вакансію 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]