Завдання з програмування по роздрібній торгівлі

Як допомогти продавцю визначити, чи є товар з потрібними характеристиками?
ПрикладЧасто прийшовши в магазин взуття і вибравши вподобану модель, ми чекаємо поки продавці визначать, чи є відповідний розмір

Дано

Список варіацій. Кожна варіація у свою чергу містить список атрибутів і їхніх значень.
example-data.json

[
{
 "Size": 37,
 "Color": "Brown",
 "Lock": "Zipper"
},
{
 "Size": 37,
 "Color": "Black",
 "Lock": "Zipper"
},
{
 "Size": 38,
 "Color": "Blue",
 "Lock": "Laces"
},
{
 "Size: 39,
 "Color": "Blue",
 "Lock": "Laces"
},
{
 "Size: 39,
 "Color": "Brown",
 "Lock": "Zipper"
},
{
 "Size: 39,
 "Color": "Brown",
 "Lock": "Laces"
},
{
 "Size": 40,
 "Color": "Brown",
 "Lock": "Laces"
}
]

Потрібно скласти інтерфейс, за яким продавець, вибравши необхідні властивості, може визначити, чи є товар на складі чи ні.

Умови:

 

  • Варіація містить повний список атрибутів (не може бути варіації з не відомими значеннями, якщо атрибут присутній в одній варіації, то він є у всіх)
  • Довжина списку варіантів значень атрибута варіюється від атрибута до атрибуту (один атрибут може приймати одне з двох значень, інший — одне з чотирьох і т. п.)
  • Один атрибут може мати тільки одне значення

 

Функціонал:

Інтерфейс представляє з себе список списків, де на першому рівні — тип атрибуту, на другому його значення.

Кожен елемент може бути в 3 станах:

  • Доступний для вибору — Білий
  • Активний — Синій
  • Доступний при інших комбінаціях — Сірий

На початку всі елементи доступні для вибору

Після вибору одного з атрибутів, всі інші переглядаються.

Ми вибрали 37. Всі інші розміри білі (оскільки вони є за умовою). Синього кольору немає. Він стає сірий, решта є — білі. 37 є тільки на Блискавці. Значить блискавка вибирається автоматично. І тут, увага! 40 розміру блискавці немає, значить 40 ставати сірим.

Читайте також  10 безкоштовних програм для віддаленого доступу до комп'ютера

Якщо нам раптом знадобився синій колір, то скидається розмір (т. к. 37 синього немає) і замок (т. к. 37 блискавці немає, якби був, то він залишився б вибрано), автоматично вибираються шнурки (т. к. синій є тільки зі шнурівками), а розміри стають доступними 38, 39.

Завдання застосоване як:

  • Практика для вивчають програмування
  • Тестове завдання для відбору кандидатів
  • Просто цікаве проведення часу для досвідчених розробників

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.