Допоможіть ДПКГ Клаусу доставити свої подарунки
Огляд
PPCG Клаус працює з привітанням пізно, доставляючи свої подарунки, адже зараз у нас так багато дивних маленьких дітей. Це робить КПКГ Клаусу набагато складніше дістати всі подарунки до потрібного місця. Ваше завдання полягає в тому, щоб допомогти йому правильно розділити подарунки.
Складність
Враховуючи список великих імен, що представляють дітей, яких він повинен доставити, та список подарунків, представлених цифрами, ви повинні з’ясувати, як розподілити подарунки серед згаданих дітей. Звичайно, тут є улов….
У наш час діти стають прискіпливими, якщо малюк - це непарний хлопець (перший початковий код ASCII - непарний), він хоче дивний подарунок! Якщо він рівний хлопець (першим початковим є ASCII-код навіть), він, очевидно, повинен отримати рівний! Однак будь-яка дитина, яка ділиться на 3, - це неслухняний, неслухняний хлопець, тому КПКГ Клаус повинен повністю ігнорувати їх, щоб змусити їх вести себе в наступному році. Щоб вважати свій маршрут успішним, він повинен вручити всі подарунки усім дітям, які їх заслуговують, і не повинен дарувати жодній дитині занадто багато подарунків. Якщо будь-яка дитина отримає на 3+ більше подарунків, ніж його однолітки, він ризикує стати неслухняною дитиною в наступному році, і це просто не правильно! Крім того, якщо будь-яка добра дитина отримала подарунок, коли інша хороша дитина цього не зробила, це також перетворило б цю дитину на зло.
Приклад
Діти такі:
Kids = ["Amy", "Betty", "Clyde", "Dave", "Francine"] = [A,B,C,D,F] = [65,66,67,68,70]
- Бетті - це криза людства, чітко в змові з числом 3.
- Емі та Клайд з дитинства були диваком і хотіли б отримувати навіть подарунки.
- Дейв і Франсін - це нормально, навіть, діти; вони повинні отримувати навіть навіть подарунки!
Подарунки такі:
Presents = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
Один з можливих результатів:
[
['Amy',[1,3,5]],
['Betty',[]],
['Clyde',[7,9,11,13]],
['Dave',[2,4,6,8]],
['Francine',[10,12,14]]
]
Сценарії винятку
Однак, те, що PPCG Клаус готовий і готовий, не означає, що Claus PPCG може. Ось список сценаріїв винятків, коли ви повинні зламати погані новини для PPCG Claus із повідомленням:
PPCGmas is cancelled!
Наступні сценарії призведуть до скасування Різдва:
- Нема дітей.
[],[1,2,3]- Ну, вони віддають.
- Гарних дітей немає.
["Betty"],[1,2,3]- Серйозно, накрути Бетті.
- Немає подарунків чи менше подарунків, ніж хороших дітей.
["Amy","Charles"],[]- Один або більше не отримали би подарунки.["Amy","Charles"],[1]- Один або більше не отримали би подарунки.
- Немає незвичайних / навіть подарунків, щоб задовольнити всіх хороших дітей.
["Amy","Dave"],[2,4,6]- Емі накручена.
Ось перелік сценаріїв, які не повинні впливати на PPCGmas:
- Залишилися подарунки (Усі діти повинні отримати максимальну кількість подарунків).
["Amy","Dave"],[2,4,6,8,10,12,14,7,9] = [["Amy",[7,9]],["Dave",[2,4,6,8]]]
Основні правила
- Добрі діти є парними або непарними, грунтуючись на їх перших початкових.
- У поганих дітей перша початкова цілком поділяється на 3.
- Усі добрі діти повинні отримати хоча б одного подарунка.
- Жодна хороша дитина не повинна отримувати більше 2 подарунків більше, ніж будь-яка інша хороша дитина.
- Якщо є залишки подарунків, ви повинні їх максимально поширити, не порушуючи 4.
- Погані діти взагалі не повинні отримувати подарунків.
- Якщо будь-яке з них порушено, ви повинні точно вивести
PPCGmas is cancelled!.
Вимоги до формату вводу / виводу
- 1-й вхід повинен бути рядком / списком / розділеним комами повними іменами, а не лише першим початковим.
- Другий вхід повинен бути рядком / списком / розділеним комами позитивними цілими числами.
- Результатом може бути будь-яке позначення того, як ви розподіляли подарунки, що має сенс; або
PPCGmas is Cancelled!.
Критерій виграшу: код-гольф
TL; DR: Бетті - ривок, не змагайся.
3? EDIT : Якщо варто "накрутити Бетті", чому вона взагалі виклик?