Повернувся до шкільного сезону! Тож для неповної роботи вам допомагають у шкільній бібліотеці. Проблема в тому, що головний бібліотекар ніколи навіть не чув слів "Дьюї Десятковий", не кажучи вже про реалізацію цієї системи. Натомість система сортування, яка використовується, зросла "органічно", оскільки бібліотека розширилась ...
Прагнучи зберегти свій розум, ви вирішили написати програму, яка допоможе вам сортувати книги по мірі повернення, бо горе вам, якщо ви сортуєте книги неправильно. (Головний бібліотекар ДУЖЕ суворий.)
Введення-виведення
- Вхідними даними буде список (гіпотетичних) назв книг, по одному на рядок, з STDIN / мовного еквівалента.
- Ви можете припустити не більше 100 книг, введених одночасно (ви можете переносити стільки стільки по бібліотеці одночасно).
- Книги можуть мати кілька слів у своїх заголовках, і ці слова можуть бути розділені пробілами чи іншими розділовими знаками (наприклад, двокрапка
:
, тире-
тощо). - Для зручності обчислення припустимо, що всі заголовки є UTF-8.
Вихід - це ті самі заголовки, відсортовані за наведеними нижче правилами, знову по одному на рядок, до STDOUT / мовний еквівалент.
Правила сортування
Книги впорядковуються чисельно на основі їх середнього значення символу (тобто, сукупне значення символів, поділене на кількість символів у заголовку книги), підраховане за такими правилами:
- Усі символи враховуються для визначення кількості символів у заголовку.
- Малі літери підраховуються за їх положенням в алфавіті. (a = 1, b = 2, ... z = 26)
- Якщо заголовок містить великі літери, ці рахунки становлять 1,5 їхнього малого значення (A = 1,5, B = 3, ... Z = 39). («Великі літери важливі! - каже бібліотекар.)
- Кожен розділовий знак / символ у цьому списку
!@#$%^&*()-=_+[]\{}|;':",./<>?~
нараховує -1 від сукупного значення перед усередненням. ("Грандіозних назв немає!") - Якщо заголовок містить число, написане арабськими цифрами , це число віднімається від середнього значення перед сортуванням. Кілька послідовних цифр трактуються як одне число (наприклад,
42
віднімають 42, а не віднімають 4, а потім віднімають 2). Індивідуальні цифри не враховуються за сумарним значенням (тобто кожна цифра вносить 0), але DO рахують для кількості символів. Зауважте, що це може призвести до негативного значення і до нього слід поводитися належним чином. (Подейкують, у бібліотекаря вже кілька років пригнічується інструктор з математики.) - Якщо заголовок містить два окремі слова, які починаються з
R
, книга отримує оцінку "нескінченності" і скидається в купу в кутку (тобто, випадковим чином розташовується в кінці списку). (Колись бібліотекаря скинула людина з цими ініціалами, або так ви чули.) - Пробіли не враховуються для сукупного значення символів (тобто вони вносять 0), але DO вносять кількість символів у заголовку.
- Символи, які не відповідають наведеним вище правилам (наприклад, а
ÿ
), не враховують сукупне значення символів (тобто вони вносять 0), але DO вносять кількість символів у заголовку. - Наприклад, гіпотетична книга
ÿÿÿÿÿ
матиме "бал"(0+0+0+0+0) / 5 = 0
, а гіпотетична книгаÿÿyÿÿ
- "оцінка"(0+0+25+0+0) / 5 = 5
. - Дві книги, які "набрали" те саме, можуть бути результатами на ваш вибір. (У будь-якому випадку вони на одній полиці)
Приклад введення 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
Приклад Вихід 1 (з "балами" в дужках, щоб показати міркування - не потрібно їх друкувати)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
Приклад введення 2
Matthew
Mark
Luke
John
Revelations
Приклад Вихід 2 (з "балами" в дужках, щоб показати міркування - не потрібно їх друкувати)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
Приклад введення 3
42
9 Kings
1:8
7th
Приклад Виведення 3 (з "балами" в дужках, щоб показати міркування - не потрібно їх друкувати)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
Інші обмеження
- Це Code-Golf, тому що потрібно зберігати програму в таємниці від постійно спостерігаючих очей бібліотекаря, і чим менше програма, тим простіше її приховати.
- Застосовуються стандартні обмеження лазівки
- Не дозволяйте бібліотекару наздоганяти вас, витрачаючи весь свій час на PPCG.