Écrivez une fonction ou un programme qui, lorsqu'il reçoit une liste de noms, génère ou renvoie une liste où les doublons de prénoms ont une version abrégée unique de leur nom de famille.
Contribution:
Une liste de noms, où un nom est défini par un nom donné et un nom de famille séparés par un espace. Les noms sont des chaînes non vides contenant uniquement des lettres majuscules et minuscules. La liste peut être un tableau de chaînes ou les noms séparés par un caractère constant non alpha, non espace, mais la sortie doit être au même format que l'entrée.
Production:
Une liste des noms saisis dans le même ordre et format que l'entrée qui ont été modifiés par ces règles:
- Pour les prénoms uniques, affichez uniquement le prénom
- Pour les noms qui partagent le même prénom:
- En plus de leur prénom, ajoutez la version unique la plus courte de leur nom de famille qui n'est pas partagée par un autre nom, suivie d'un point. Par exemple:
John Clancy, John Smith
devientJohn C.,John S.
etJames Brown, James Bratte
devientJames Bro.,James Bra.
- Si un nom de famille est un sous-ensemble d'un autre, par exemple
Julian King,Julian Kingsley
, renvoyez le nom de famille complet du plus petit sans point. L'exemple deviendraitJulian King,Julian King.
- En plus de leur prénom, ajoutez la version unique la plus courte de leur nom de famille qui n'est pas partagée par un autre nom, suivie d'un point. Par exemple:
- Fondamentalement, un point représente l'expression régulière
.+
, où un seul nom doit correspondre. - Vous pouvez supposer que personne ne partagera le même prénom et le même nom de famille
- Les noms sont sensibles à la casse
Cas de test:
John Clancy,Julie Walker,John Walker,Julie Clancy
->John C.,Julie W.,John W.,Julie C.
Julian King,Jack Johnson,Julian Kingsley
>Julian King,Jack,Julian King.
Jack Brown,Jack Black,Jack Blue
>Jack Br.,Jack Bla.,Jack Blu.
John Storm,Jon Snow,Johnny Storm
>John,Jon,Johnny
Jill DeSoma,Jill Desmond
>Jill DeS.,Jill Des.
XxXnO sCOppeXxX,XxXNO MERCYXxX
>XxXnO,XxXNO
Il s'agit de code-golf , donc le nombre d'octets le plus bas pour chaque langue l'emporte.
Angela C.
vient le dans le cas de test?Julie
oups, merci. CorrigéRéponses:
Gelée ,
34 33 3230 octetsUn lien monadique prenant une liste de listes de caractères (ie une liste de "chaînes") et renvoyant les abréviations dans le même format et le même ordre.
Essayez-le en ligne! (une suite complète de tests de programme)
Comment?
la source
Python 2 , 130 octets
Essayez-le en ligne!
Génère d'abord tous les surnoms, comme suit:
Choisit ensuite le premier * de chaque liste qui est le moins fréquent dans
sum(n,[])
. Ce sera toujours le premier surnom unique.Notez que cela
n
inclut les pseudonymes erronés'John .'
, etc., mais ils ne seront jamais sélectionnés.(* CPython 2.7 le
min
fait de toute façon. Ce code n'est peut-être pas portable !)la source
Rubis
165162166160octetsComprend 1 espace de fin si seul le nom donné est retourné, par exemple.
"John "
Essayez-le en ligne!
163 octets si vous ne voulez pas l'espace de fin
Essayez-le en ligne!
la source