Powrót do sezonu szkolnego! W przypadku pracy w niepełnym wymiarze godzin pomagasz w szkolnej bibliotece. Problem polega na tym, że główny bibliotekarz nigdy nie słyszał słowa „Dewey Decimal”, nie mówiąc już o wdrożeniu tego systemu. Zamiast tego używany system sortowania urósł „organicznie”, ponieważ biblioteka się rozszerzyła ...
Aby zachować zdrowie psychiczne, postanowiłeś napisać program, który pomoże ci sortować książki po ich zwróceniu, bo biada ci, jeśli źle posortujesz książki. (Główny bibliotekarz jest BARDZO surowy).
Wejście wyjście
- Wprowadzana będzie lista (hipotetycznych) tytułów książek, po jednym w wierszu, z STDIN / odpowiednika językowego.
- Jednocześnie możesz założyć, że wkładanych jest nie więcej niż 100 książek (możesz jednocześnie nosić tylko tyle książek w bibliotece).
- Książki mogą zawierać wiele słów w swoich tytułach, które mogą być oddzielone spacjami lub innymi znakami interpunkcyjnymi (np. Dwukropek
:
, myślnik-
itp.). - Dla ułatwienia obliczeń załóż, że wszystkie tytuły to UTF-8.
Dane wyjściowe to te same tytuły, posortowane zgodnie z poniższymi zasadami, ponownie po jednym w wierszu, do STDOUT / odpowiednika językowego.
Zasady sortowania
Książki są sortowane numerycznie na podstawie ich średniej wartości znaków (tj. Skumulowanej wartości znaku podzielonej liczby znaków w tytule książki), zliczonej według następujących reguł:
- Wszystkie znaki liczą się do określenia liczby znaków w tytule.
- Małe litery są liczone według ich pozycji w alfabecie. (a = 1, b = 2, ... z = 26)
- Jeśli tytuł zawiera wielkie litery, liczą one 1,5 wartości małej litery (A = 1,5, B = 3, ... Z = 39). („Ważne są wielkie litery!”, Mówi bibliotekarz).
- Każdy znak interpunkcyjny / symbol na tej liście
!@#$%^&*()-=_+[]\{}|;':",./<>?~
liczy -1 od wartości skumulowanej przed uśrednieniem. („Wielkie tytuły nie są!”) - Jeśli tytuł zawiera liczbę zapisaną cyframi arabskimi , liczba ta jest odejmowana od średniej wartości przed sortowaniem. Wiele kolejnych cyfr jest traktowanych jako jedna liczba (np.
42
Odejmuje 42, a nie odejmuje 4, a następnie odejmuje 2). Poszczególne cyfry nie liczą się do wartości skumulowanej (tj. Każda cyfra odpowiada 0), ale DO liczą się liczby znaków. Należy pamiętać, że może to spowodować ujemną wartość i powinno być odpowiednio traktowane. (Plotka głosi, że bibliotekarz zakochał się w instruktorze matematyki od kilku lat). - Jeśli tytuł zawiera dwa osobne słowa rozpoczynające się od
R
, książka otrzymuje wynik „nieskończoności” i jest zrzucana na stos w rogu (tj. Losowo ułożona na końcu listy). (Bibliotekarz został kiedyś porzucony przez osobę z tymi inicjałami, a przynajmniej tak słyszeliście). - Spacje nie liczą się do skumulowanej wartości znaku (tj. Przyczyniają się do 0), ale DO przyczyniają się do liczby znaków w tytule.
- Znaki, które nie pasują do powyższych zasad (np. A
ÿ
), nie liczą się do skumulowanej wartości postaci (tj. Mają wartość 0), ale DOKŁADNIE przyczyniają się do liczby znaków w tytule. - Na przykład hipotetyczna książka
ÿÿÿÿÿ
miałaby „partyturę”(0+0+0+0+0) / 5 = 0
, ale hipotetyczna książkaÿÿyÿÿ
miałaby „partyturę”(0+0+25+0+0) / 5 = 5
. - Dwie książki, które tak samo „zdobywają punkty”, mogą zostać wydrukowane w wybranym porządku. (W każdym razie są na tej samej półce)
Przykład danych wejściowych 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
Przykład Wyjście 1 (z „wynikami” w nawiasach, aby pokazać uzasadnienie - nie trzeba ich drukować)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
Przykład danych wejściowych 2
Matthew
Mark
Luke
John
Revelations
Przykład Wyjście 2 (z „wynikami” w nawiasach, aby pokazać uzasadnienie - nie trzeba ich drukować)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
Przykład danych wejściowych 3
42
9 Kings
1:8
7th
Przykład Wyjście 3 (z „wynikami” w nawiasach, aby pokazać uzasadnienie - nie trzeba ich drukować)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
Inne ograniczenia
- To jest Code-Golf, ponieważ musisz trzymać program w tajemnicy przed wiecznie obserwującymi oczami bibliotekarza, a im mniejszy program, tym łatwiej jest go ukryć.
- Obowiązują standardowe ograniczenia dotyczące luk
- Nie pozwól, aby bibliotekarz złapał cię na luzie, spędzając cały swój czas na PPCG.