Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 02.05.2022
Сообщений: 8

Уникальные почты

02.06.2022, 17:27. Показов 2364. Ответов 3

Студворк — интернет-сервис помощи студентам
Пользователи заходят в приложение, вводя свой почтовый адрес. Мы получили логи с нескольких приложений и хотим посчитать количество уникальных пользователей, заходивших в них.

Почтовые адреса состоят из маленьких латинских букв, точек (.), дефисов (-) и одной «собаки» (@). Часть до «собаки» назовем логином, после «собаки» - доменом.

Пользователь может добавлять сколько угодно точек в свой логин, они игнорируются, вход при этом все равно будет успешным. Также пользователь может добавить дефис в свой логин, тогда часть логина после дефиса и сам дефис игнорируются. Например stalker@mail.ru и s.t.a.l.k.e.r.@mail.ru считаются одним пользователем, super-user@mail.ru и sup.er@mail.ru тоже считаются одним пользователем.

Эти правила не применяются к домену. Два пользователя с одинаковым логином, но разными доменами считаются разными. Назовем окончанием домена подстроку после последней точки. Тогда два домена, отличающиеся только окончаниями, считаются одинаковыми. Например super@mail.mail.ru и super@mail.mail.com - один пользователь, super@mail.com и super@mail.co.uk - разные пользователи.

Формат ввода
В первой строке входных данных находится одно число N - количество почтовых адресов в логах.

В последующих N строках находится N почтовых адресов Mi, по одному адресу в каждой строке.

Ограничения


0 < N < 10^5
0≤Mi.length < 50

Формат вывода
Выведите одно число - количество уникальных пользователей.


Пример 1:
ввод:

2
s.t.a.l.k.e.r.@mail.ru
stalker-winner@mail.com

вывод:
1

Пример 2:
ввод:

2
user@mail.ru
user@ma.ru

вывод:
2
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2022, 17:27
Ответы с готовыми решениями:

Уникальные строки
Дана матрица, выведите число уникальных строк в матрице. Формат выходных данных В первой и последующих строках вводится матрица...

Отсортировать уникальные строки
Нужна помощь! Дан список заполненный строками, где некоторые строки могут повторяться. Получите отсортированный список, в которым не...

Участники олимпиады и уникальные номера
N участников олимпиады получили уникальные номера от 1 до N. В результате решения задач на олимпиаде каждый участник получил некоторое...

3
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
02.06.2022, 17:49
Errast,
Python
1
2
3
4
5
6
7
8
9
n = int(input())
s = [input().split('@') for i in range(n)]
for i in s:
    i[0] = i[0].replace('.', '')
    if '-' in i[0]:
        i[0] = i[0].split('-')[0]
    i[1] = '.'.join(i[1].split('.')[:-1])
s = [v for i, v in enumerate(s) if v not in s[:i]]
print(len(s))
0
 Аватар для __ALPHA__
302 / 160 / 87
Регистрация: 16.04.2018
Сообщений: 239
02.06.2022, 18:12
Еще вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N = int(input())
addresses = [input() for _ in range(N)]
 
temp = list()
 
for address in addresses:
    address, domain = address.split('@', 1)
    address = address.replace('.', '')
    address = address.split('-', 1)[0]
    ddot = domain.rfind('.')
    domain = domain[:ddot]
    temp.append(address+'@'+domain)
 
#print(temp) #DEBUG
print(len(set(temp)))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
03.06.2022, 02:28
Python
1
2
3
4
5
6
7
8
def get_email(s):
    login, _, domen = s.partition('@')
    login = login.replace('.', '')
    login, _, _ = login.partition('-')
    domen, _, _ = domen.rpartition('.')
    return login, domen
#==============================================================================
print( len( { get_email( input('-> ') ) for _ in range( int( input('n = ') ) ) } ) )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2022, 02:28
Помогаю со студенческими работами здесь

Уникальные и общие элементы списков
Есть 3 списка, содержащих целые числа. С ними нужно сделать следующее: 1. Собрать в 4 список уникальные элементы для каждого из 3...

Функция, оставляет только уникальные слова
Написать функцию remove_duplicate_words, которая оставляет в строке только уникальные слова. remove_duplicate_words(&quot;aaa bbb aaa...

Найти уникальные слова и создать словарь
Напишите абзац текста в строке, заключенной в тройные кавычки. Используйте метод .split для создания списка слов из этого текста. ...

Уникальные перестановки из всех элементов списка
Задача: Получить уникальные перестановки из всех элементов списка. Например, есть список Необходимо получить перестановки: (1, 1, 2)...

Отсортировать этот список,и оставить только уникальные элементы и вывести их
lst= Суть задачи,нужно отсортировать этот список,и оставить только уникальные элементы и вывести их! Уникальные элементы в этом списке:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru