Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2017 16:58:10

lightluck134
Зарегистрирован: 2017-12-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Множества

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

Задание:
Каждый из N школьников некоторой школы знает Mᵢ языков. Определите, какие языки знают все школьники и языки, которые знает хотя бы один из школьников.

Формат ввода
Первая строка входных данных содержит количество школьников N. Далее идет N чисел Mᵢ, после каждого из чисел идет Mᵢ строк, содержащих названия языков, которые знает i-й школьник. Длина названий языков не превышает 1000 символов, количество различных языков не более 1000. 1≤N≤1000, 1≤Mᵢ≤500.

Формат вывода
В первой строке выведите количество языков, которые знают все школьники. Начиная со второй строки - список таких языков. Затем - количество языков, которые знает хотя бы один школьник, на следующих строках - список таких языков.

Офлайн

#2 Дек. 10, 2017 18:37:26

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Множества

 N = int(input())
one_time_names = []
many_times_name = []
many_times = {}
one_time = {}
langs = []
langs_col = {}
for h in range(0, N):
    langs.append(str(input()))
for g in langs:
    try:
        a = langs_col[g]
        langs_col[g] = langs_col[g] + 1
    except KeyError:
        langs_col[g] = 1
for x in langs:
    if langs_col[x] == 1:
        one_time[x] = 1
        if x not in one_time_names:
            one_time_names.append(x)
        else: pass
    else:
        many_times[x] = langs_col[x]
        if x not in many_times_name:
            many_times_name.append(x)
        else: pass
print(len(many_times_name), many_times)
print(len(one_time_names), one_time)

Решение выдает, возможно, ответ в неправильном формате. Перепиши конец как тебе надо. Думаю, этот вариант пройдет на тесте. По крайней мере он прошел 6 моих тестов



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#3 Дек. 10, 2017 19:44:03

lightluck134
Зарегистрирован: 2017-12-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Множества

Спасибо!
Сегодня все же удалось найти верное решение. Оставлю его здесь, может быть кому-нибудь еще пригодится

students = {}
allLang = set([])
nPup = int(input())
for pup in range(1, nPup + 1):
nLang = int(input())
languages = []
for lang in range(1, nLang + 1):
languages.append(input())
students[pup] = languages
allLang = allLang.union(set(languages))
eachKnow = set(students.get(1))
for i in range(2, nPup + 1):
eachKnow = eachKnow.intersection(students.get(i))

print(len(eachKnow))
for lang in range(0, len(eachKnow)):
print(list(eachKnow)[lang])
print(len(allLang))
for lang in range(0, len(allLang)):
print(list(allLang)[lang])

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version