Нещодавно я придбав новий гаманець, який може вмістити 8 карт (4 з обох боків). Однак у мене, мабуть, є більше карт, ніж це, і мені потрібно зробити вибір, які з них я хочу взяти з собою. Деякі картки я використовую частіше, ніж інші, але картки, які я вважаю за краще брати з собою, не обов'язково є тими, якими я користуюся найбільше.
Змагання
Давши стопку карт, поверніть макет мого гаманця найкращим чином, щоб змінити мої налаштування та обмеження. Макет повинен бути таким:
__ __ (row 1)
__ __ (row 2)
__ __ (row 3)
__ __ (row 4)
На даний момент я маю такі картки - стеки завжди будуть складатися з вибору з них:
- 1 посвідчення особи ( ID )
- 1 водійське посвідчення ( DL )
- 2 кредитні картки ( CC )
- 5 дебетових карт ( DC )
- 1 картка громадського транспорту ( ПК )
- 1 карта доступу до спортзалу ( GC )
- 9 членських карток від випадкових магазинів і складів ( MC )
У мене є деякі переваги та обмеження:
- Карти, відсортовані за пріоритетом: ID, DL, CC, DC, PC, GC, MC
- Карти, відсортовані за частотою використання: CC, DC, PC, GC, MC, ID, DL
- З міркувань безпеки загальна кількість дебетових карток та кредитних карток у моєму гаманці може бути щонайменше на 1 більше, ніж сума всіх інших карток, які надійдуть у мій гаманець ( N DC + N CC ≤ N ID + N DL + N PC + N GC + N MC +1).
- Якщо вона присутня, моє посвідчення особи та посвідчення водія завжди мають бути в рядку 1. Це не означає, що інші картки можуть не займати місця в рядку 1.
- Карти, що найчастіше використовуються зі стека, завжди повинні знаходитись у рядку 4.
Правила
- Жодна карта не може займати одне і те ж місце.
- Карти з вищим пріоритетом завжди віддаються перевагу перед картками з нижчим пріоритетом, якщо тільки не введено обмеження DC / CC
- ID / DL в рядку 1 перекриває правило частоти: якщо надається лише ідентифікатор, він буде переходити в рядок 1, а рядок 4 буде порожнім!
- Форматування вводу можна виконати будь-яким зручним для вас способом, доки зберігається порядок вхідного стека. наприклад,
ID,CC,PC,MC,MC,MC,DL
може також поставлятися як, наприклад,1ID 1CC 1PC 3MC 1DL 0DC 0GC
абоID CC PC MC MC MC DL
. Форматування виводу має кілька обмежень: рядки повинні починатися з нового рядка, стовпці повинні бути певним чином розмежовані. Порожні плями можуть бути представлені будь-яким зручним для вас способом, доки це не зіпсує макет 4x2.
Рішення / замовлення може бути більше, залежно від того, яке ви надасте як вихід.
- Ви можете припустити, що картки одного типу завжди будуть згруповані при вході.
- Крім вищезазначеного, стандарт код-гольф застосовуються правила та лазівки.
Бонус
Вам дозволяється видалити 15% вашого рахунку, якщо ви також повернете будь-які картки, які не потрапили в гаманець. Друк "Це підходить!" у разі відсутності інших карт. Цей додатковий вихід повинен бути чітко відокремлений від макета повернення.
Приклади
Вхід:
ID, DL, CC, GC, MC
2 можливі виходи:
ID DL DL ID
__ __ or __ MC
MC __ __ __
CC GC GC CC
optional: It fits!
Вхід:
ID, CC, DC, PC, GC, MC, MC, MC, MC, MC
2 можливі виходи:
ID MC GC ID
MC MC or MC PC
PC GC MC MC
CC DC DC CC
optional: e.g. (MC, MC) or (2MC)
Вхід:
DC, DC, CC, CC, GC, DL
2 можливі виходи:
DL __ GC DL
__ __ or DC __
GC DC __ __
CC CC CC CC
optional: e.g. (DC) or (1DC)
Вхід:
CC, DC, DC, DC
2 можливі виходи:
__ __ __ __
__ __ or __ __
__ __ __ __
CC __ __ CC
optional: e.g. (DC, DC, DC) or (3DC)
Вхід:
CC, CC, MC, MC, MC, MC, MC, MC, PC, DC, DC, DC, DC, DC, GC
2 можливі виходи:
MC MC MC DC
PC GC or DC GC
DC DC PC MC
CC CC CC CC
optional: e.g. (DC, DC, DC, MC, MC, MC, MC) or (3DC, 4MC)
Вхід:
MC, MC, MC, MC, MC, MC, MC
2 можливі виходи:
__ MC MC MC
MC MC or MC MC
MC MC MC __
MC MC MC MC
optional: It fits!
Вхід:
ID, CC
2 можливі виходи:
ID __ __ ID
__ __ or __ __
__ __ __ __
CC __ CC __
optional: It fits!
Це є код-гольф, тому найкоротший код (у байтах) виграє.