Прикреплённый файл «gravec.py»
Загрузка 1 #!/usr/bin/python
2 '''
3 Гравицаппу можно изготовить из нескольких деталей по прилагающейся инструкции.
4 Если соответствующей детали нет, её, в свою очередь, можно изготовить из других
5 деталей по другому разделу той же инструкции. Если деталей Написать программу,
6 которая проверяет, можно ли из имеющегося набора деталей изготовить гравицаппу.
7
8 Ввод: Первая строка "--- набор имеющихся деталей (разделённые
9 пробелом натуральные числа, необязательно различные, в диапазоне от 1 до
10 999 числом не более 10000). Вторая и последующие строки содержат правила из
11 инструкции вида <<ЦелеваяДеталь Деталь1 Деталь2 ...>>, задающие
12 способ сборки ЦелевойДетали. Последняя строка определяет правило
13 сборки самой гравицаппы в виде <<0 Деталь1 Деталь2 ...>> (ноль
14 вместо номера детали). Каждая составная деталь собирается единственным
15 способом.
16 '''
17
18 List=raw_input().split() # Набор имеющихся деталей
19 Rules={} # Словарь вида R[ЦелеваяДеталь]=[Деталь1 Деталь2 ...]
20 while True: # Строим словарь
21 Rule=raw_input().split() # Список слов
22 Rules[Rule[0]]=Rule[1:] # Первое слово - ЦелеваяДеталь
23 if Rule[0] == "0": break # Последняя строка: сборка гравицаппы
24 print Rules
25
26 Work=Rules["0"] # Каких деталей не хватает для гравицаппы?
27 while Work: # Гравицаппа всё ещё не собрана
28 Detail=Work.pop() # Забираем нужную деталь из списка
29 if Detail in List: # ...есть в наборе?
30 List.remove(Detail) # используем её
31 continue # перейдём к другой детали
32 if Detail not in Rules: # ...нет в наборе и нельзя сделать из других?
33 print "No" # cобрать гравицаппу нельзя
34 break # дальше можно не пробовать
35 Work.extend(Rules[Detail]) # Добавим составляющие снятой детали в список
36 else: # (выход из whilе не с помощью break)
37 print "Yes" # Все детали или их составляющие оказались в наборе
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2012-12-29 16:52:50, 1.8 KB) [[attachment:2012-12-21.measure.py]]
- [получить | показать] (2012-12-28 14:37:33, 0.7 KB) [[attachment:2012-12-21.sortball.gen.py]]
- [получить | показать] (2012-12-28 14:37:00, 0.8 KB) [[attachment:2012-12-21.sortball.py]]
- [получить | показать] (2012-12-28 14:37:22, 1.0 KB) [[attachment:2012-12-21.spiral.py]]
- [получить | показать] (2012-12-28 14:37:56, 3.0 KB) [[attachment:gravec.py]]
Вам нельзя прикреплять файлы к этой странице.