Хелпикс

Главная

Контакты

Случайная статья





ХОД УРОКА. 1. Теория



ХОД УРОКА

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. Каждый из них умеет готовить блюдо и напиток национальной кухни:
- JapaneseCook: Sushi и Tea
- RussianCook: Dumplings и Compote
- ItalianCook: Pizza и Juice
Ваша задача - реализовать 3 класса (каждый повар - отдельный класс), которые будут наследниками AbstractCook с соответствующими методами:
- add_food(food_amount, food_price), который добавляет в заказ клиента указанное количество еды по указанной цене
- add_drink(drink_amount, drink_price), который добавляет в заказ клиента указанное количество напитков по указанной цене
- total(), который возвращает строку вида: 'Food: 150, Drinks: 50, Total: 200', причем для каждого повара на месте Food и Drinks будут указаны именно те блюда и напитки, которые он готовит.
Обратите внимание, что каждый клиент может обращаться только к одному повару. В этой миссии вам может помочь такой шаблон проектирования, как Abstract Factory.

Пример:

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 поваров.

Выходные данные: строка, описывающая заказ и сумма для оплаты.

Предусловие: Все данные корректны.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.