Задание на стажировку.
Напишите на C# или Python библиотеку для поставки внешним клиентам, которая умеет вычислять площадь круга по радиусу и треугольника по трем сторонам. Дополнительно к работоспособности оценим:
- Юнит-тесты
- Легкость добавления других фигур
- Вычисление площади фигуры без знания типа фигуры в compile-time
- Проверку на то, является ли треугольник прямоугольным\
- Нахождение площади круга по радиусу:
circle = Circle(10) # Задание радиуса
circle.area() # Возвращает площадь круга - Нахождение площади треугольника по трём сторонам:
triangle = Triangle(3, 5, 4) # Задание сторон triangle.area() # Возвращает площадь треугольника
- Является ли треугольник прямоугольным:
triangle.is_rectangular()
В датафреймах (pyspark.sql.DataFrame) заданы продукты, категории и связь между ними. Одному продукту может соответствовать много категорий, в одной категории может быть много продуктов. Напишите метод с помощью PySpark, который вернет все продукты с их категориями (датафрейм с набором всех пар «Имя продукта – Имя категории»). В результирующем датафрейме должны также присутствовать продукты, у которых нет категорий.
Пусть даны таблицы:
Таблица продуктов (название, идентификатор)
name | id |
---|---|
'milk' | 0 |
'chocolate' | 1 |
'car' | 2 |
'cheese' | 3 |
Таблица категорий (категория, идентификатор)
category | id |
---|---|
dairy | 0 |
sweets | 1 |
confectionery | 2 |
cheeses | 3 |
Таблица связей (идентификатор продукта, идентификатор категории)
name_id | category_id |
---|---|
0 | 0 |
1 | 1 |
1 | 2 |
2 | null |
3 | 0 |
3 | 3 |
Построим таблицу, которая содержит в себе все назавния продуктов и их категории.
Запрос -
df_rez = product_and_category.join(categories_table, categories_table.id == product_and_category.category_id, how="inner").join(products_table, products_table.id == product_and_category.name_id, how="full_outer")
df_rez.select(df_rez.category,df_rez.name).show()
Полученная таблица:
category | name |
---|---|
cheeses | cheese |
dairy | cheese |
dairy | milk |
sweets | chocolate |
confectionery | chocolate |
null | car |