|
|||
ХОД УРОКА. 1. Теория ⇐ ПредыдущаяСтр 2 из 2 ХОД УРОКА 1. Теория 1) https: //www. youtube. com/watch? v=8jR3g2l5l0s& list=PLpqgDC-vbA2ch9pgwL9qxbUlZov1FUR3b& index=3 https: //www. youtube. com/watch? v=nH2bqIzYBg4& list=PLpqgDC-vbA2ch9pgwL9qxbUlZov1FUR3b& index=6 https: //www. youtube. com/watch? v=qfdBJlRIwpQ& list=PLpqgDC-vbA2ch9pgwL9qxbUlZov1FUR3b& index=5& t=0s 2) Начинаем повторение курса программирования Задача 2. Решение задачи Кубики: from typing import List, Tuple from collections import defaultdict
def _is_overwrapped(r1: Tuple[int, int], r2: Tuple[int, int]): " " " Check whether range is overwrapped. Here, `r1` and `r2` represents closed intervals. " " " r1, r2 = sorted((r1, r2), key=lambda r: r[0]) s1, e1 = r1 s2, e2 = r2 return s1 < = s2 < e1
def _can_stacked(c1, c2): x1, y1, l1 = c1 x2, y2, l2 = c2 return _is_overwrapped((x1, x1 + l1), (x2, x2 + l2)) and \ _is_overwrapped((y1, y1 + l1), (y2, y2 + l2))
def stacking_cubes(cubes: List[Tuple[int, int, int]]) -> int: connections = defaultdict(list) scores = [cube[-1] for cube in cubes] for i in range(len(cubes)): for j in range(len(cubes)): if i == j: continue if _can_stacked(cubes[i], cubes[j]): connections[i]. append(j)
def _inner(i, used, score): cands = set(connections[i]) - used if not cands: return score return max( (_inner(cand, used | {cand}, score + scores[cand]) for cand in cands) )
result = max(_inner(i, {i}, scores[i]) for i in range(len(cubes))) return result
if __name__ == '__main__': assert stacking_cubes([[4, 10, 2], [9, 3, 2], [6, 0, 2], [3, 0, 2], [-1, 4, 2], [-1, 9, 2], [-1, 7, 2], [-1, 3, 2], [4, 0, 2], [5, 0, 2], [9, 0, 2], [9, 8, 2], [0, 10, 2], [9, 10, 2], [-1, 5, 2], [9, 5, 2], [7, 10, 2], [-1, 10, 2], [1, 10, 2], [2, 0, 2], [9, 2, 2], [8, 10, 2], [9, 4, 2], [7, 0, 2], [9, 7, 2], [6, 10, 2], [9, 9, 2], [-1, 6, 2], [2, 10, 2], [3, 10, 2], [9, 6, 2], [-1, 2, 2], [5, 10, 2], [8, 0, 2], [1, 0, 2], [0, 0, 2], [9, 1, 2], [-1, 8, 2]]) == 76
Условие задачи Кубики: https: //py. checkio. org/mission/stacking-cubes/solve/ Вам будет предоставлен список деталей Куба (кортеж из 3 целых чисел: координаты X, координаты Y и длина ребра). Вы должны вернуть максимальную высоту укладки кубиков. Вот некоторые из этих условий: каждая координата-это минимальное значение; все ребра параллельны координатным осям; порядок укладки кубиков произвольный, но координаты X и Y кубиков изменить нельзя; если хотя бы 1x1 грани кубиков соприкасаются, они будут сложены в стопку. Примечание: Вам не обязательно нужно использовать все кубики.
Задача 2. https: //py. checkio. org/mission/3-chefs/solve/ Вы - владелец кафе, в котором работают 3 повара: JapaneseCook, RussianCook и ItalianCook. Каждый из них умеет готовить блюдо и напиток национальной кухни: Пример: client_1 = JapaneseCook()client_1. add_food(2, 20)client_1. add_drink(5, 4)client_1. total() == " Sushi: 40, Tea: 20, Total: 60" client_2 = RussianCook()client_2. add_food(1, 40)client_2. add_drink(5, 20)client_2. total() == " Dumplings: 40, Compote: 100, Total: 140" client_3 = ItalianCook()client_3. add_food(2, 20)client_3. add_drink(2, 10)client_3. total() == " Pizza: 40, Juice: 20, Total: 60"
В этом задании все входные данные корректны, и проверку значений можно не выполнять. Входные данные: операторы и выражения, использующие классы 3 поваров. Выходные данные: строка, описывающая заказ и сумма для оплаты. Предусловие: Все данные корректны.
|
|||
|