Zen of Python
20.1K subscribers
1.29K photos
179 videos
36 files
3.3K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Задача о частом числе

На входе — массив целых чисел, отсортированный в порядке возрастания, и в нем есть ровно одно целое число, которое встречается чаще в 25% случаев. Напишите функцию find_frequent_num(), которая найдёт это число.


>>> arr = [1,2,2,6,6,6,6,7,10]
>>> find_frequent_num(arr)
... 6


#задача

@zen_of_python
🌚1
Задача о счастливом числе

На входе матрица m x n различных чисел. Создайте функцию find_luckiest_number(), которая вернет счастливое число — такой элемент, который является минимальным в своей строке и максимальным в своём столбце.


>>> matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]
>>> find_luckiest_number(matrix)
... 12


Объяснение: 12 — минимальное число в своем ряду № 4 и максимальное в столбце № 4.


#задача

@zen_of_python
2
Поздравляем победителей

Задачу о счастливом числе верно решили:

@Metimol;
@longcompetition;
— Sergey;
@xpos587;
@vsugoyak;

Кратчайшее верное решение предложил @vsugoyak:


def find_luckiest_number(matrix):
  return ls[0] if len(ls:=[mn for arr in matrix if (mn:=min(arr)) == max(matrix[el][arr.index(mn)] for el in range(len(matrix)))])>0 else None


Отдельный респект @longcompetition за решения с учётом временной сложности алгоритма. Самое то для новичков в этой теме.

#задача

@zen_of_python
👍4🍾2
Задача о Р̶о̶с̶с̶т̶а̶т̶е̶ зарплатах

Вам дан массив уникальных целых чисел, где salary[i] — это зарплата i-го сотрудника.

Напишите функцию, которая вернёт среднюю зарплату сотрудников без учёта минимальной и максимальной зарплаты.

Для теста:


>>> salaries = [4000,3000,1000,2000]
>>> get_mean_salary(salaries)
... 2500


#задача

@zen_of_python
1
Поздравляем победителей

Задачу  о повороте матрицы верно решили:
@Python3k;
@erg_y;
@vsugoyak.

Кратчайшее верное решение предложил @vsugoyak:


def turn_matrix(grid, k):
  return [[grid[(place:=(_n+(n:=len(grid[0]))*_m-k))%(n*len(grid))//n][place%n] for _n in range(len(grid[0]))] for _m in range(len(grid))]


#задача

@zen_of_python
🍾1
Задача о расстоянии между массивами

На входе два массива arr1 и arr2 и целое число d. Напишите функцию find_arr_distance(), которая вернёт расстояние между двумя массивами.

Расстояния определяется как количество элементов arr1[i] таких, что не существует элемента arr2[j], где arr1[i] - arr2[j]| <= d.

Для проверки:


>>> arr1 = [4,5,8],
>>> arr2 = [10,9,1,8]
>>> d = 2
>>> find_arr_distance(arr1, arr2, d)
... 2


Объяснение:

Для arr1[0]=4 имеем:
|4-10|=6 > d=2
|4-9|=5 > d=2
|4-1|=3 > d=2
|4-8|=4 > d=2

Для arr1[1]=5 имеем:
|5-10|=5 > d=2
|5-9|=4 > d=2
|5-1|=4 > d=2
|5-8|=3 > d=2

Для arr1[2]=8 имеем:
|8-10|=2 <= d=2
|8-9|=1 <= d=2
|8-1|=7 > d=2
|8-8|=0 <= d=2

#задача

@zen_of_python
1
Задача о Рокфеллере

Вам дан тензор с суммами на счетах, где account[i][j] — это сумма денег, которую имеет i​​​​​​​​​​-й​​​ клиент в j​​​​​​​-м банке.


accounts = [[1,2,5],[3,6,1]]
У 1-го клиента два счета на сумму 4 (1 + 3)
У 2-го — 8 (2 + 6)
У 3-го — 6 (5 + 1)


Напишите функцию find_richest(), которая найдет Рокфеллера — самого богатого клиента.

Для проверки:


>>> accounts = [[1,2,5],[3,6,1]]
>>> find_richest(accounts)
... 2


#задача

@zen_of_python
🔥4👍1🍌1