Нещодавно я придбав новий гаманець, який може вмістити 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!
Це є код-гольф, тому найкоротший код (у байтах) виграє.