Dado um endereço de email, o resultado de uma transformação aplicada a esse endereço de email e um segundo endereço de email, retornam a saída da mesma transformação aplicada ao segundo endereço de email.
Todos os endereços de email terão a seguinte estrutura:
Uma sequência de comprimento positivo contendo caracteres alfanuméricos e no máximo um .
(a parte local), seguida por um @
símbolo, seguida por uma sequência de comprimento positivo contendo símbolos alfanuméricos (o domínio), seguida por um .
símbolo e uma sequência final de comprimento positivo contendo caracteres alfanuméricos (o TLD).
Existem quatro transformações permitidas:
- Identidade (sem alteração). (
[email protected] -> [email protected]
) - Retornando apenas a parte local (tudo antes da
@
) não modificada ([email protected] -> a.b
). - Retornando a parte local, divida no
.
se presente, com o primeiro símbolo de cada metade em maiúscula. ([email protected] -> A B
) - Retornando apenas o domínio (tudo entre o
@
e o final.
) sem modificação. ([email protected] -> c
)
Quando mais de uma transformação é possível, você pode fornecer a saída de qualquer uma das possibilidades. Espaço em branco no início e no final da saída não importa, mas no meio importa (por exemplo, se você dividir a.b
para A B
, deve haver apenas um espaço no meio [e qualquer número no início e no final da saída], mas se você dividir a.
, A
todos os espaços de ambos os lados serão aceitáveis).
Exemplos ( 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
Aplicam-se regras e brechas usuais.
@
e final.
). Desde a parte local e domínio estão tantochicken
, é ambígua se é o 2º ou 4º transformaçãoA
[com um espaço à direita] que a segunda entrada sejaJones
[com um espaço à esquerda])?[email protected], Jones, [email protected]
éA
- sejones
for correspondido, significa que a parte correspondente é a parte entre o primeiro período e o símbolo @. Mas isso resultaria em uma sequência vazia, porquea
é antes do primeiro período e não depois.Respostas:
Java 8,
254240236 bytes-4 bytes graças a @LukeStevens .
Explicação:
Experimente aqui.
fonte
(p.charAt(0)+"").toUpperCase()
vez deCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
no começo, mas isso não funcionou devido ao1in Thehand
caso de teste. Mas colocar maiúsculas em maiúsculas como String é realmente mais curto do queCharacter.toUpperCase
, então, obrigado!Haskell , 208 bytes
Experimente online!
É triste que eu tenha gastado 59 bytes em reinventar
split
(s
).A solução cria uma lista de transformações e retorna a primeira que leva ao resultado esperado.
fonte
Geléia , 40 bytes
De preferência graças a Erik a Outgolfer para reparar a falha de usar
Œt
(título caso) e, consequentemente,Œu1¦€K
sobreŒtK
-1 byte graças a Erik the Outgolfer (rearranjo de
⁵⁸ç⁹¤Ŀ
toçµ⁵⁸Ŀ
)A tomada programa completo
exampleEmail
,exampleOutput
,realEmail
e imprimir o resultado.Experimente online!
Quão?
Executa todas as quatro transformações (mais uma precursora), localiza a primeira que produz o exemplo do primeiro email e aplica-o ao segundo email:
Notas:
Supõe que a entrada exampleOutput seja estritamente a mesma que a saída seria.
O "precursor" (o resultado do link 3) é testado para corresponder a
exampleOutput
, mas não corresponderá, a menos queexampleOutput
seja uma lista de listas de caracteres. Como tal, as entradas provavelmente devem ser citadas (a formatação Python pode ser usada aqui) para evitar a possibilidade de interpretá-la como tal.fonte
Python 2 , 135 bytes
Experimente online!
fonte
JavaScript (ES6), 145 bytes
Invoque com sintaxe de curry, por exemplo
f('[email protected]')('Chicken Soup')('[email protected]')
Mostrar snippet de código
fonte
Mathematica, 217 bytes
Experimente online!
fonte
Ruby ,
117106102 bytesExperimente online!
fonte
CJam, 42
Experimente online
Explicação:
fonte
PHP 7.1, 176 bytes
Experimente online!
PHP <7,1, 180 bytes
As versões abaixo de 7.1 precisariam alterar
[,$p,$q,$r]=$argv
paralist(,$p,$q,$r)=$argv
, adicionando 4 bytes.fonte
GNU sed , 105 + 1 (sinalizador r) = 106 bytes
Os três primeiros
s
comandos verificam as transformações de identidade , parte local e domínio, respectivamente. Se uma transformação corresponder, ela será aplicada ao segundo endereço de email e os seguintess
comandos falharão devido à falta do formato de entrada.Experimente online!
A transformação de divisão da parte local (último
s
comando) é a mais cara de verificar, em termos de bytes, portanto eu a coloquei no final e assumi que ela corresponde (já que as outras falharam nessa época), indo diretamente para a sua aplicação.fonte
Gelatina , 43 bytes
Experimente online!
fonte
ŒtK
trabalhar no lugar deŒu1¦€K
salvar 3?Œl
?1in.thehand
isso não funcionariaŒtK
.str.title
).