C'est la rentrée scolaire! Donc, pour un travail à temps partiel, vous aidez à la bibliothèque de l'école. Le problème est que le bibliothécaire en chef n'a même jamais entendu les mots «Dewey Decimal», et encore moins mis en œuvre ce système. Au lieu de cela, le système de tri utilisé s'est développé "organiquement" à mesure que la bibliothèque s'est agrandie ...
Dans un effort pour garder votre santé mentale, vous avez choisi d'écrire un programme pour vous aider à trier les livres au fur et à mesure de leur retour, car malheur à vous si vous triez les livres mal. (Le bibliothécaire en chef est TRÈS strict.)
Entrée sortie
- L'entrée sera une liste de titres de livres (hypothétiques), un par ligne, à partir de l'équivalent STDIN / langue.
- Vous ne pouvez pas accepter plus de 100 livres à la fois (vous ne pouvez en transporter qu'un grand nombre dans la bibliothèque à la fois).
- Les livres peuvent avoir plusieurs mots dans leurs titres, et ces mots peuvent être séparés par des espaces ou d'autres signes de ponctuation (par exemple, deux points
:
, un tiret-
, etc.). - Pour faciliter le calcul, supposez que tous les titres sont UTF-8.
La sortie est les mêmes titres, triés selon les règles ci-dessous, encore une fois par ligne, en équivalent STDOUT / langue.
Les règles de tri
Les livres sont triés numériquement en fonction de leur valeur de caractère moyenne (c.-à-d. La valeur de caractère cumulative divisée par le nombre de caractères dans le titre du livre), comptée selon les règles suivantes:
- Tous les caractères comptent pour déterminer le nombre de caractères dans un titre.
- Les lettres minuscules sont comptées par leur position dans l'alphabet. (a = 1, b = 2, ... z = 26)
- Si le titre contient des majuscules, celles-ci comptent pour 1,5 leur valeur minuscule (A = 1,5, B = 3, ... Z = 39). ("Les majuscules sont importantes!", Explique le bibliothécaire.)
- Chaque signe / symbole de ponctuation dans cette liste
!@#$%^&*()-=_+[]\{}|;':",./<>?~
compte -1 à partir de la valeur cumulée avant la moyenne. ("Les titres grandioses ne le sont pas!") - Si le titre contient un nombre, écrit en chiffres arabes , ce nombre est soustrait de la valeur moyenne avant le tri. Plusieurs chiffres consécutifs sont traités comme un seul chiffre (par exemple,
42
soustraire 42, pas soustraire 4 puis soustraire 2). Les chiffres individuels ne comptent pas pour la valeur cumulative (c'est-à-dire que chaque chiffre contribue à 0), mais comptent pour le nombre de caractères. Notez que cela peut entraîner une valeur négative et doit être traité de manière appropriée. (Selon la rumeur, le bibliothécaire a le béguin pour un professeur de mathématiques depuis plusieurs années, maintenant.) - Si le titre contient deux mots distincts qui commencent par un
R
, le livre obtient une partition «infini» et est jeté dans une pile dans le coin (c'est-à-dire disposé au hasard à la fin de la liste). (Le bibliothécaire a déjà été jeté par une personne portant ces initiales, ou du moins vous l'avez entendu.) - Les espaces ne comptent pas pour la valeur cumulée des caractères (c'est-à-dire qu'ils contribuent 0), mais contribuent au nombre de caractères dans un titre.
- Les caractères qui ne correspondent pas aux règles ci-dessus (par exemple, a
ÿ
) ne comptent pas pour la valeur de caractère cumulative (c'est-à-dire qu'ils contribuent 0), mais contribuent au nombre de caractères dans un titre. - Par exemple, un livre hypothétique
ÿÿÿÿÿ
aurait une «partition» de(0+0+0+0+0) / 5 = 0
, mais un livre hypothétiqueÿÿyÿÿ
aurait une «partition» de(0+0+25+0+0) / 5 = 5
. - Deux livres qui arrivent à "marquer" la même chose peuvent être sortis dans votre choix de commande. (Ils sont sur la même étagère, de toute façon)
Exemple d'entrée 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
Exemple de résultat 1 (avec "scores" entre parenthèses pour montrer le raisonnement - vous n'avez pas besoin de les imprimer)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
Exemple d'entrée 2
Matthew
Mark
Luke
John
Revelations
Exemple de résultat 2 (avec "scores" entre parenthèses pour montrer le raisonnement - vous n'avez pas besoin de les imprimer)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
Exemple d'entrée 3
42
9 Kings
1:8
7th
Exemple de résultat 3 (avec "scores" entre parenthèses pour montrer le raisonnement - vous n'avez pas besoin de les imprimer)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
Autres restrictions
- Il s'agit de Code-Golf, car vous devez garder le programme secret aux yeux du bibliothécaire, et plus le programme est petit, plus il est facile à cacher.
- Des restrictions standard contre les échappatoires s'appliquent
- Ne laissez pas le bibliothécaire vous rattraper en vous détendant en passant tout votre temps sur PPCG.