Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна помощь по Python "Антиматерия"

Nursultan Moidinov Ученик (29), на голосовании 2 недели назад
Антиматерия образована почти из таких же структурных элементов, что и обычная материя – такая же масса, такой же по величине заряд. Только знак у этого заряда противоположный. То есть у электронов минус, а у антиэлектронов – плюс, у протонов – плюс, у антипротонов – минус. И если такие атом и антиатом встретятся, то сразу аннигилируют, то есть превратятся в чистую энергию и пропадут.

Во Вселенной нашей задачи правила немного другие: видов антиматерии столько, сколько сосудов, в которых они содержатся. Если встречаются частицы с одинаковой величиной из разных сосудов, то пропадают все с таким значением, независимо от того, сколько их было. В одном сосуде могут находиться частицы с одинаковым значением, поскольку они одного сорта.

Итак, у нас есть несколько сосудов, в каждом из них находятся частицы одного сорта.

Будем считать, что для того, чтобы остаться, частица ни разу не должна встретить своего повторения из другого сосуда. Любое количество повторений – и все повторяющиеся частицы пропадают.

Напишите программу, которая определит, что останется, если соединить частицы, находящиеся в разных сосудах.

Формат ввода
Вводятся числа, пока не будет введена пустая строка. Разделитель сосудов – число -1. Количество сосудов заранее неизвестно.

Формат вывода
Вывести в одной строке через пробел все числа, для которых не было повторений в других сосудах. Порядок вывода неважен, каждую частицу выводить один раз, даже, если в одном и том же сосуде она встречалась не однажды.

Пример №1
Ввод
45
26
22
22
-1
26
-1
45
10
26
-1

Вывод
22 10

Пример №2

Ввод
41
8
36
9
37
-1
41
50
41
-1

Вывод
37 8 36 9 50
Голосование за лучший ответ
Татьяна Просветленный (32838) 1 месяц назад
 def read_input(): 
data = []
current_container = []
while True:
try:
line = input().strip()
if line == '':
if current_container:
data.append(current_container)
break
num = int(line)
if num == -1:
if current_container:
data.append(current_container)
current_container = []
else:
current_container.append(num)
except ValueError:
continue
return data

def find_unique_numbers(containers):
all_numbers = set()
repeated_numbers = set()
for container in containers:
container_set = set(container)
for num in container_set:
if num in all_numbers:
repeated_numbers.add(num)
all_numbers.add(num)

unique_numbers = all_numbers - repeated_numbers
return unique_numbers

def main():
containers = read_input()
unique_numbers = find_unique_numbers(containers)
print(' '.join(map(str, unique_numbers)))

if __name__ == "__main__":
main()

Nursultan MoidinovУченик (29) 1 месяц назад
Спасибо Вам. Добрый человек!
Похожие вопросы