Étant donné une adresse e-mail, le résultat d'une transformation appliquée à cette adresse e-mail et une deuxième adresse e-mail, retournez la sortie de la même transformation appliquée à la deuxième adresse e-mail.
Les adresses e-mail auront toutes la structure suivante:
Une chaîne de longueur positive contenant des caractères alphanumériques et au plus un .
(la partie locale), suivie d'un @
symbole, suivie d'une chaîne de longueur positive contenant des symboles alphanumériques (le domaine), suivie d'un .
symbole et d'une chaîne finale de longueur positive contenant des caractères alphanumériques (le TLD).
Il existe quatre transformations autorisées:
- Identité (pas de changement). (
[email protected] -> [email protected]
) - Renvoyer uniquement la partie locale (tout ce qui précède
@
) non modifié ([email protected] -> a.b
). - Retour de la partie locale divisée sur le
.
cas échéant, avec le premier symbole de chaque moitié en majuscule. ([email protected] -> A B
). - Retour juste le domaine (tout entre le
@
et le final.
) non modifié. ([email protected] -> c
).
Lorsque plusieurs transformations sont possibles, vous pouvez fournir la sortie de l'une des possibilités. Au début Whitespace et à la fin de la production de peu d' importance, mais au milieu ne ( par exemple , si vous divisez a.b
à A B
il devrait y avoir un seul espace au milieu [et un nombre au début et à la fin de la production], mais si vous divisez a.
, alors A
avec n'importe quel nombre d'espaces de chaque côté sont tous acceptables).
Exemples ( input | output
):
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], foo.bar, [email protected] | gee.whizz
[email protected], foo.bar, [email protected] | gEe.Whizz
[email protected], comedy, [email protected] | office
[email protected], Jones, [email protected] | A
[email protected], [email protected], [email protected] | [email protected]
[email protected], .jones, [email protected] | a.
[email protected], x, [email protected] | 3
[email protected], [email protected], [email protected] | [email protected]
[email protected], John Jones, [email protected] | 1in Thehand
[email protected], Chicken Soup, [email protected] | Fab
[email protected], lange, [email protected] | fat.so
[email protected], Lange, [email protected] | {fat.so, Fat So} # either acceptable
[email protected], chicken, [email protected] | {horse, pig} # either acceptable
Les règles et les failles habituelles s'appliquent.
@
et finale.
). Étant donné que la partie locale et le domaine sont tous les deuxchicken
, il est ambigu que ce soit la 2e ou la 4e transformationA
[avec un espace de fin] que la deuxième entrée soitJones
[avec un espace de début])?[email protected], Jones, [email protected]
estA
- sijones
est adaptée cela signifie que la partie correspondante est la partie entre la première période et le symbole @. Mais cela entraînerait une chaîne vide car lea
est avant la première période et non après.Réponses:
Java 8,
254240236 octets-4 octets grâce à @LukeStevens .
Explication:
Essayez-le ici.
la source
(p.charAt(0)+"").toUpperCase()
au lieu deCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
au début, mais cela n'a pas fonctionné en raison du1in Thehand
cas de test. Mais le mettre en majuscule comme String est en effet plus court queCharacter.toUpperCase
, alors merci!Haskell , 208 octets
Essayez-le en ligne!
C'est triste d'avoir dû dépenser 59 octets pour réinventer
split
(s
).La solution crée une liste de transformations et renvoie la première qui mène au résultat attendu.
la source
Gelée , 40 octets
Préemption grâce à Erik l'Outgolfer pour avoir remarqué l'échec de l'utilisation
Œt
(case-titre) et doncŒu1¦€K
plusŒtK
-1 octet grâce à Erik l'Outgolfer (réarrangement de
⁵⁸ç⁹¤Ŀ
toçµ⁵⁸Ŀ
)Un programme complet prenant
exampleEmail
,exampleOutput
,realEmail
et d' imprimer le résultat.Essayez-le en ligne!
Comment?
Effectue les quatre transformations (plus une précurseur), trouve la première qui donne l'exemple du premier e-mail, puis l'applique au deuxième e-mail:
Remarques:
Suppose que l'exemple d'entrée est strictement identique à la sortie.
Le "précurseur" (le résultat du lien 3) est testé pour faire correspondre le
exampleOutput
, mais il ne correspondra que si leexampleOutput
lui-même est une liste de listes de caractères. En tant que tel, les entrées doivent probablement être citées (le formatage Python peut être utilisé ici) pour éviter la possibilité de l'interpréter comme tel.la source
Python 2 , 135 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 145 octets
Invoquer avec la syntaxe de curry, par exemple
f('[email protected]')('Chicken Soup')('[email protected]')
Afficher l'extrait de code
la source
Mathematica, 217 octets
Essayez-le en ligne!
la source
Ruby ,
117106102 octetsEssayez-le en ligne!
la source
CJam, 42
Essayez-le en ligne
Explication:
la source
PHP 7.1, 176 octets
Essayez-le en ligne!
PHP <7,1, 180 octets
Les versions sous 7.1 devraient changer le
[,$p,$q,$r]=$argv
enlist(,$p,$q,$r)=$argv
, en ajoutant 4 octets.la source
GNU sed , 105 + 1 (drapeau r) = 106 octets
Les trois premières
s
commandes vérifient respectivement les transformations d' identité , de partie locale et de domaine . Si une transformation correspond, elle est appliquée à la deuxième adresse e-mail et less
commandes suivantes échoueront en raison d'un manque de format d'entrée.Essayez-le en ligne!
La transformation de fractionnement de partie locale (dernière
s
commande) est la plus coûteuse à vérifier, en termes d'octets, donc je l'ai placée à la fin et j'ai supposé qu'elle correspond (puisque les autres ont échoué à ce moment-là), en allant directement à son application.la source
Gelée , 43 octets
Essayez-le en ligne!
la source
ŒtK
à la place deŒu1¦€K
sauver 3?Œl
?1in.thehand
ne marcherait pasŒtK
.str.title
).