🐍 PythonGuru — работа и стажировки для программистов
4.32K subscribers
65 photos
1.11K links
Если учить Python, то только у нас🐍

Здесь можно найти интересную работу и стажировки для программистов, а также полезные статьи про Python.

Проект платформы https://promopoisk.com

По рекламе @adtgassetsbot
Владелец @Aleksei
加入频道
​​Задача: Оценить математическое выражение.

Инструкции
Учитывая математическое выражение в виде строки, вы должны вернуть результат в виде числа.

Числа
Числа может быть как целыми, так и десятичными. То же самое относится и к возвращаемому результату.

Операторы
Вам необходимо поддерживать следующие математические операторы:
- Умножение *
- Деление / (как истинное деление)
- Дополнение +
- Вычитание -
Операторы всегда вычисляются слева направо, и * и / должны быть вычислены перед + и -.

Скобки
Вам нужно поддерживать несколько уровней вложенных скобок, например (2 / (2 + 3.33) * 4) - -6

Пробел
Между числами и операторами могут быть пробелы, а могут и не быть.

Дополнение к этому правилу состоит в том, что знак минус ( - ), используемый для отрицания чисел и скобок, никогда не будет разделен пробелами. То есть все нижеследующие выражения являются допустимыми.
1-1 / / 0
1 -1 // 0
1- 1 // 0
1 - 1 // 0
1- -1 // 2
1 - -1 // 2
6 + -(4) / / 2
6 + -( -4) / / 10

А следующие выражения являются недопустимыми
1 - - 1 // Invalid
1- - 1 // Invalid
6 + - (4) // Invalid
6 + -(- 4) // Invalid


Проверка
Вам не нужно беспокоиться о проверке - вы получите только действительные математические выражения, следующие приведенным выше правилам.

Примечание: eval и exec запрещены в вашем решении.

Объясните своё решение, ответ пишите в чат | #pythonguru_задачи
​​Задача. Snail Sort

Учитывая массив n x n, верните элементы массива, расположенные от крайних элементов к среднему, перемещаясь по часовой стрелке.

array = [[1,2,3],
[4,5,6],
[7,8,9]]
snail(array) #=> [1,2,3,6,9,8,7,4,5]

Для лучшего понимания, пожалуйста, последовательно следуйте числам следующего массива:

array = [[1,2,3],
[8,9,4],
[7,6,5]]
snail(array) #=> [1,2,3,4,5,6,7,8,9]

Образ на фото проиллюстрирует все более четко.

Примечание: идея состоит не в сортировке элементов от самого низкого значения к самому высокому; идея состоит в том, чтобы пройти 2-ой массив в образце раковины улитки по часовой стрелке.

Примечание 2: 0x0 (пустая матрица) представляется как пустой массив внутри массива [[]].

Объясните своё решение, ответ пишите в чат | #pythonguru_задачи
​​Задача. Zombie Apocalypse: the Last Number Standing

История: В мире чисел наступил апокалипсис. Орды чисел зомби проникли и готовы превратить все в нежить. Свойства зомби действительно апокалиптические: они воспроизводят себя неограниченно и свободно взаимодействуют друг с другом. Любой, кто равняется им, обречен. Из бесконечного числа натуральных чисел осталось только несколько. Этому миру нужен герой, который ведет оставшиеся числа в надежде на выживание: наибольшее число, чтобы привести тех, кто еще остается.

Брифинг: есть список положительных натуральных чисел. Найдите наибольшее число, которое нельзя представить как сумму этих чисел, учитывая, что каждое число может быть добавлено неограниченное количество раз. Верните это число, либо 0, если таких чисел нет, либо -1, если их бесконечное количество.

Пример:

Допустим, [3,4] даны числа. Давайте проверим каждый номер один за другим:
1 - (нет решения) - хорошо
2 - (нет решения) - хорошо
3 = 3 не пойдет
4 = 4 не пойдет
5 - (нет решения) - хорошо
6 = 3 + 3 не пойдет
7 = 3 + 4 не пойдет
8 = 4 + 4 не пойдет
9 = 3 + 3 + 3 не пойдет
10 = 3 + 3 + 4 не пойдет
11 = 3 + 4 + 4 не пойдет
13 = 3 + 3 + 3 + 4 не пойдет

...и так далее. Итак, 5 - самое большое «хорошо». возврат 5

Спецификации теста: Случайные случаи будут вводить до 10 чисел со значением до 1000

Объясните своё решение, ответ пишите в чат | #pythonguru_задачи