Biorąc pod uwagę adres e-mail, wynik transformacji zastosowanej do tego adresu e-mail oraz drugi adres e-mail zwracają wynik tej samej transformacji zastosowanej do drugiego adresu e-mail.
Wszystkie adresy e-mail będą miały następującą strukturę:
Ciąg o długości dodatniej zawierający znaki alfanumeryczne i co najwyżej jeden .
(część lokalna), po którym następuje @
symbol, po czym ciąg o długości dodatniej zawierający alfanumeryczne znaki sumboliczne (dziedzina), po którym następuje .
symbol i ostatni ciąg o długości dodatniej zawierający znaki alfanumeryczne (TLD).
Możliwe są cztery transformacje:
- Tożsamość (bez zmian). (
[email protected] -> [email protected]
) - Zwracanie tylko części lokalnej (wszystko przed
@
) niezmodyfikowanej ([email protected] -> a.b
). - Zwracanie części lokalnej podzielonej na „
.
jeśli jest obecny”, z pierwszym symbolem każdej połowy pisanym wielkimi literami. ([email protected] -> A B
). - Zwracanie tylko domeny (wszystko między
@
ostatecznym.
) niezmodyfikowanym. ([email protected] -> c
).
Gdy możliwa jest więcej niż jedna transformacja, możesz dać wynik dowolnej z możliwości. Białe spacje na początku i na końcu wyjścia nie mają znaczenia, ale na środku ma to znaczenie (tzn. Jeśli podzielisz się a.b
na A B
, powinna być tylko jedna spacja na środku [i dowolna liczba na początku i na końcu wyjścia], ale jeśli podzielisz a.
, wówczas A
dowolna liczba spacji po obu stronach jest akceptowalna).
Przykłady ( 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
Obowiązują zwykłe zasady i luki.
@
i końcową.
). Ponieważ część lokalna i dziedzina są jednocześniechicken
, nie jest jasne, czy jest to druga czy czwarta transformacjaA
[z końcową spacją], aby drugie wejście byłoJones
[z wiodącą spacją])?[email protected], Jones, [email protected]
jestA
- jeślijones
jest dopasowany co oznacza, że część dopasowanie jest część pomiędzy pierwszym okresie i symbolu @. Ale to spowodowałoby pusty ciąg, ponieważa
jest przed pierwszym okresem, a nie po nim.Odpowiedzi:
Java 8,
254240236 bajtów-4 bajty dzięki @LukeStevens .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
(p.charAt(0)+"").toUpperCase()
zamiastCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
, ale to nie zadziałało z powodu1in Thehand
przypadku testowego. Ale górna krawędź, ponieważ String jest rzeczywiście krótszy niżCharacter.toUpperCase
, więc dzięki!Haskell , 208 bajtów
Wypróbuj online!
To smutne, że musiałem wydać 59 bajtów na ponowne wynalezienie
split
(s
).Rozwiązanie tworzy listę przekształceń i zwraca pierwszą, która prowadzi do oczekiwanego wyniku.
źródło
Galaretka , 40 bajtów
Uprzedzające dzięki Erikowi Outgolferowi za zauważenie niepowodzenia w użyciu
Œt
(przypadek tytułowy), a coŒu1¦€K
za tym idzieŒtK
-1 bajt dzięki Erik the Outgolfer (przegrupowanie
⁵⁸ç⁹¤Ŀ
naçµ⁵⁸Ŀ
)Pełną podejmowanie programu
exampleEmail
,exampleOutput
,realEmail
i drukowanie wyników.Wypróbuj online!
W jaki sposób?
Wykonuje wszystkie cztery transformacje (plus prekursor), znajduje pierwszą, która daje przykład z pierwszego e-maila, a następnie stosuje go do drugiego e-maila:
Uwagi:
Zakłada, że przykład wejściowy Wyjście jest dokładnie taki sam, jak wynik wyjściowy.
„Prekursor” (wynik linku 3) jest testowany pod kątem dopasowania
exampleOutput
, ale nie będzie pasował, dopókiexampleOutput
sam nie będzie listą znaków. Jako takie dane wejściowe powinny być prawdopodobnie cytowane (tutaj można zastosować formatowanie w języku Python), aby uniknąć możliwości ich interpretacji jako takiej.źródło
Python 2 , 135 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 145 bajtów
Wywołaj ze składnią curry, np
f('[email protected]')('Chicken Soup')('[email protected]')
Pokaż fragment kodu
źródło
Mathematica, 217 bajtów
Wypróbuj online!
źródło
Ruby ,
117106102 bajtówWypróbuj online!
źródło
CJam, 42
Wypróbuj online
Wyjaśnienie:
źródło
PHP 7.1, 176 bajtów
Wypróbuj online!
PHP <7.1, 180 bajtów
Wersje poniżej 7.1 musiałyby zmienić
[,$p,$q,$r]=$argv
TOlist(,$p,$q,$r)=$argv
, dodając 4 bajty.źródło
GNU sed , 105 + 1 (flaga r) = 106 bajtów
Pierwsze trzy
s
polecenia sprawdzają odpowiednio tożsamość , część lokalną i transformacje domeny . Jeśli jedna transformacja jest zgodna, jest ona stosowana do drugiego adresu e-mail, a następująces
polecenia zakończą się niepowodzeniem z powodu braku formatu wejściowego.Wypróbuj online!
Lokalny część podzielonego transformacja (ostatnia
s
komenda) jest najdroższym, by sprawdzić, w kategoriach bajtów, dlatego umieściłem go na końcu i zakłada się, że pasuje (ponieważ inni nie udało w tym czasie), przechodząc bezpośrednio do jego stosowania.źródło
Galaretka , 43 bajty
Wypróbuj online!
źródło
ŒtK
działałoby zamiastŒu1¦€K
oszczędzać 3?Œl
?1in.thehand
to nie zadziałaŒtK
.str.title
).