Для данного адреса электронной почты результат преобразования, примененного к этому адресу электронной почты, и второго адреса электронной почты возвращают выходные данные того же преобразования, примененного ко второму адресу электронной почты.
Все адреса электронной почты будут иметь следующую структуру:
Строка положительной длины, содержащая буквенно-цифровые символы и не более одного .
(локальная часть), за которой следует @
символ, за которым следует строка положительной длины, содержащая буквенно-цифровые символы (домен), за которыми следует .
символ и окончательная строка положительной длины содержащие буквенно-цифровые символы (TLD).
Существует четыре допустимых преобразования:
- Идентичность (без изменений). (
a.b@c.d -> a.b@c.d
) - Возвращает только локальную часть (все до
@
) unmodified (a.b@c.d -> a.b
). - Возврат локальной части, разделенной на
.
if, если присутствует, с первым символом каждой половины с большой буквы. (a.b@c.d -> A B
). - Возврат только домена (все, что между
@
и окончательным.
) без изменений. (a.b@c.d -> c
).
Когда возможно более одного преобразования, вы можете дать вывод любой из возможностей. Пробелы в начале и в конце вывода не имеют значения, но в середине не имеет (то есть , если вы разделите a.b
на A B
должно быть только одно место в середине [и любого числа в начале и в конце вывода], но если вы разделяете a.
, тогда A
с любым количеством пробелов с любой стороны все приемлемо).
Примеры ( input | output
):
john.doe@gmail.com, John Doe, phillip.maini@gmail.com | Phillip Maini
John.Doe@gmail.com, John Doe, Phillip.Maini@gmail.com | Phillip Maini
foo.bar@hotmail.com, foo.bar, gee.whizz@outlook.com | gee.whizz
foo.bar@hotmail.com, foo.bar, gEe.Whizz@outlook.com | gEe.Whizz
rodney.dangerfield@comedy.net, comedy, michael.scott@office.0 | office
.jones@x.1, Jones, a.@3.z | A
.jones@x.1, .jones@x.1, a.@3.z | a.@3.z
.jones@x.1, .jones, a.@3.z | a.
.jones@x.1, x, a.@3.z | 3
.@b.c, .@b.c, 1@2.3 | 1@2.3
john.jones@f.f, John Jones, 1in.thehand@2inthe.bush | 1in Thehand
chicken.soup@q.z, Chicken Soup, fab@ulou.s | Fab
lange@haare.0, lange, fat.so@fat.net | fat.so
Lange@haare.0, Lange, fat.so@fat.net | {fat.so, Fat So} # either acceptable
chicken@chicken.chicken, chicken, horse@pig.farm | {horse, pig} # either acceptable
Применяются обычные правила и лазейки.
@
финальным и последним.
). Так как локальная часть и домен обаchicken
, неоднозначно, является ли это 2-м или 4-м преобразованиемA
[с завершающим пробелом), что вторым вводом будетJones
[с начальным пробелом])?.jones@x.1, Jones, a.@3.z
этоA
- еслиjones
подобрано , что означает согласование часть является частью между первым периодом и символом @. Но это приведет к пустой строке, потому чтоa
перед первым периодом, а не после.Ответы:
Java 8,
254240236 байт-4 байта благодаря @LukeStevens .
Объяснение:
Попробуй это здесь.
источник
(p.charAt(0)+"").toUpperCase()
вместоCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
сначала, но это не сработало из-за1in Thehand
теста. Но верхний регистр как String действительно корочеCharacter.toUpperCase
, так что спасибо!Haskell , 208 байт
Попробуйте онлайн!
Печально, что мне пришлось потратить 59 байтов на новое изобретение
split
(s
).Решение создает список преобразований и возвращает первое, которое приводит к ожидаемому результату.
источник
Желе , 40 байт
Преимущественный благодаря Эрику Outgolfer для замечать неудачи использования
Œt
(название случай) и , следовательно ,Œu1¦€K
болееŒtK
-1 байт благодаря Эрику Outgolfer (перестановка
⁵⁸ç⁹¤Ŀ
вçµ⁵⁸Ŀ
)Полная программа взятия
exampleEmail
,exampleOutput
,realEmail
и печать результата.Попробуйте онлайн!
Как?
Выполняет все четыре преобразования (плюс одно предшествующее), находит первое, которое дает пример из первого письма, затем применяет его ко второму письму:
Примечания:
Предполагается, что input exampleOutput строго совпадает с выводом.
«Предшественник» (результат ссылки 3) проверяется на соответствие
exampleOutput
, но он не будет совпадать, еслиexampleOutput
сам по себе не является списком символов. Таким образом, входные данные, вероятно, должны быть заключены в кавычки (здесь можно использовать форматирование Python), чтобы избежать возможности интерпретировать их как таковые.источник
Python 2 , 135 байт
Попробуйте онлайн!
источник
JavaScript (ES6), 145 байт
Вызывать с синтаксисом карри, например
f('chicken.soup@q.z')('Chicken Soup')('fab@ulou.s')
Показать фрагмент кода
источник
Mathematica, 217 байтов
Попробуйте онлайн!
источник
Рубин ,
117106102 байтаПопробуйте онлайн!
источник
CJam, 42
Попробуйте онлайн
Объяснение:
источник
PHP 7.1, 176 байт
Попробуйте онлайн!
PHP <7.1, 180 байт
Версии под 7.1 нужно будет изменить
[,$p,$q,$r]=$argv
Tolist(,$p,$q,$r)=$argv
, добавив 4 байта.источник
GNU sed , 105 + 1 (флаг r) = 106 байт
Первые три
s
команды проверяют идентичность , локальную часть и доменные преобразования соответственно. Если одно преобразование совпадает, то оно применяется ко второму адресу электронной почты, и следующиеs
команды не будут выполнены из-за отсутствия формата ввода.Попробуйте онлайн!
Преобразование разбиения локальной части (последняя
s
команда) является наиболее дорогой для проверки в терминах байтов, поэтому я поместил ее в конец и предположил, что она совпадает (поскольку другие к тому времени не сработали), перейдя непосредственно к его приложению.источник
Желе , 43 байта
Попробуйте онлайн!
источник
ŒtK
работать вместо того,Œu1¦€K
чтобы сохранить 3?Œl
?1in.thehand
что не будет работать сŒtK
.str.title
).