Es ist wieder Schulzeit! Für einen Teilzeitjob helfen Sie also in der Bibliothek der Schule. Das Problem ist, dass der Hauptbibliothekar noch nie die Worte "Dewey Decimal" gehört hat, geschweige denn dieses System implementiert hat. Stattdessen ist das verwendete Sortiersystem mit der Erweiterung der Bibliothek "organisch" gewachsen ...
In dem Bestreben, Ihre geistige Gesundheit zu wahren, haben Sie sich dazu entschlossen, ein Programm zu schreiben, mit dem Sie Bücher sortieren können, wenn sie zurückgegeben werden. (Der Bibliothekar ist sehr streng.)
Input-Output
- Die Eingabe ist eine Liste von (hypothetischen) Buchtiteln, eine pro Zeile, von STDIN / Sprachäquivalent.
- Sie können davon ausgehen, dass nicht mehr als 100 Bücher gleichzeitig eingegeben wurden (Sie können nur so viele Bücher gleichzeitig in der Bibliothek herumtragen).
- Bücher können mehrere Wörter in ihren Titeln enthalten und diese Wörter können durch Leerzeichen oder andere Satzzeichen (z. B. einen Doppelpunkt
:
, einen Bindestrich-
usw.) getrennt sein. - Nehmen Sie zur Vereinfachung der Berechnung an, dass alle Titel UTF-8 sind.
Es werden die gleichen Titel ausgegeben, sortiert nach den folgenden Regeln, wiederum einer pro Zeile nach STDOUT / Sprachäquivalent.
Die Sortierregeln
Bücher werden numerisch sortiert, basierend auf ihrem durchschnittlichen Zeichenwert (dh dem kumulierten Zeichenwert geteilt durch die Anzahl der Zeichen im Buchtitel), wobei die folgenden Regeln gelten:
- Alle Zeichen bestimmen die Anzahl der Zeichen in einem Titel.
- Kleinbuchstaben werden nach ihrer Position im Alphabet gezählt. (a = 1, b = 2, ... z = 26)
- Wenn der Titel Großbuchstaben enthält, zählen diese für 1,5 ihren Kleinbuchstabenwert (A = 1,5, B = 3, ... Z = 39). ("Großbuchstaben sind wichtig!", Sagt der Bibliothekar.)
- Jedes Interpunktionszeichen / Symbol in dieser Liste
!@#$%^&*()-=_+[]\{}|;':",./<>?~
zählt -1 vom kumulierten Wert vor der Mittelwertbildung. ("Grandiose Titel sind nicht!") - Wenn der Titel eine arabisch geschriebene Zahl enthält , wird diese Zahl vor dem Sortieren vom Durchschnittswert abgezogen. Mehrere aufeinanderfolgende Ziffern werden als eine Zahl behandelt (z. B.
42
42 subtrahieren, 4 nicht subtrahieren und dann 2 subtrahieren). Einzelne Ziffern zählen nicht für den kumulativen Wert (dh jede Ziffer trägt 0 bei), sondern für die Anzahl der Zeichen. Beachten Sie, dass dies zu einem negativen Wert führen kann und entsprechend behandelt werden sollte. (Gerüchten zufolge ist der Bibliothekar seit einigen Jahren in einen Mathematiklehrer verknallt.) - Wenn der Titel zwei separate Wörter enthält, die mit einem beginnen
R
, erhält das Buch die Note "unendlich" und wird auf einen Stapel in der Ecke gelegt (dh zufällig am Ende der Liste angeordnet). (Der Bibliothekar wurde einmal von einer Person mit diesen Initialen entlassen, oder wie Sie gehört haben.) - Leerzeichen zählen nicht für den kumulativen Zeichenwert (dh sie tragen 0 bei), tragen jedoch zur Anzahl der Zeichen in einem Titel bei.
- Zeichen, die nicht den obigen Regeln entsprechen (z. B. a
ÿ
), zählen nicht für den kumulativen Zeichenwert (dh sie tragen 0 bei), tragen jedoch zur Anzahl der Zeichen in einem Titel bei. - Zum Beispiel hätte ein hypothetisches Buch
ÿÿÿÿÿ
eine "Punktzahl" von(0+0+0+0+0) / 5 = 0
, aber ein hypothetisches Buchÿÿyÿÿ
hätte eine "Punktzahl" von(0+0+25+0+0) / 5 = 5
. - Zwei Bücher, die zufällig gleich "punkten", können in der von Ihnen gewählten Reihenfolge ausgegeben werden. (Sie sind auf jeden Fall im selben Regal)
Beispiel Eingabe 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
Beispiel Ausgabe 1 (mit "Punkten" in Klammern, um die Argumentation anzuzeigen - Sie müssen sie nicht ausdrucken)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
Beispiel Eingabe 2
Matthew
Mark
Luke
John
Revelations
Beispielausgabe 2 (mit "Punkten" in Klammern als Begründung - Sie müssen sie nicht ausdrucken)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
Beispiel Eingabe 3
42
9 Kings
1:8
7th
Beispielausgabe 3 (mit "Punkten" in Klammern als Begründung - Sie müssen sie nicht ausdrucken)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
Andere Einschränkungen
- Das ist Code-Golf, weil Sie das Programm vor den Augen des Bibliothekars geheim halten müssen. Je kleiner das Programm, desto einfacher ist es, es zu verbergen.
- Es gelten die üblichen Lückenbeschränkungen
- Lassen Sie sich nicht vom Bibliothekar davon abhalten, Ihre Zeit mit PPCG zu verbringen.