Pythonist.ru - образование по питону
25.7K subscribers
208 photos
5 videos
5 files
1.05K links
Pythonist.ru - помощь в подготовке к собеседованию на позицию Python Developer.
Реклама: @anothertechrock

РКН: https://kurl.ru/WPjOT
Download Telegram
Задача на логику. Кругосветный перелет профессора Фукано

Профессор Фукано планирует облететь вокруг Земли на новом самолете (по экватору, безостановочно). По расчетам, весь перелет займет 6 часов.

Проблема в том, что топливный бак самолета вмещает только 180 килолитров топлива, а этого хватит ровно на половину пути. А на всей протяженности пути есть только одна точка, где самолет может сесть и заправиться (с этой точки и начнется перелет).

В распоряжении Фукано есть еще два таких же самолета (с пилотами), которые могут проводить дозаправку в воздухе. Как нужно скоординировать самолеты, чтобы Фукано совершил свой перелет, и при этом ни один из самолетов не разбился бы из-за недостатка топлива?

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Задача для новичков

Напишите функцию isPowerOfThree(), которая принимает на вход целое число. Она должна возвращать True, если число является степенью тройки и False в противном случае.

Примеры работы данной функции:

isPowerOfThree(27) --> True
isPowerOfThree(-1) --> False
isPowerOfThree(20) --> False

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def isPowerOfThree(n: int) -> bool:
if n <= 0:
return False
while n % 3 == 0:
n //= 3
return n == 1

#задача #coding
Задача с кодом. Прямоугольник в круге

Напишите функцию, которая будет принимать три числа: ширину и высоту прямоугольника и радиус круга и возвращать True, если прямоугольник может поместиться в круг. В противном случае функция должна возвращать False.

Примеры:

rectangle_in_circle(8, 6, 5) ➞ True
rectangle_in_circle(5, 9, 5) ➞ False
rectangle_in_circle(4, 7, 4) ➞ False

Решение на нашем сайте.

#задача #coding
Задача на логику. Кто есть кто?

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

Первый вошедший с порога бодро заявляет: "Я дизайнер". Следом второй, таинственно улыбаясь: "Я не дизайнер". Через минуту входит третий, усталый на вид, и, покачивая головой, отнекивается: "Я не программист".

Директор, откидываясь на спинку кресла и растягиваясь в хитрой улыбке, замечает: "Только один правду сказал! Как тут догадаться, кто из них кто?"

Пишите ваши варианты в комментариях!

#логическаязадача
Ответ к задаче "Кто есть кто?"

Первый вошедший - программист, второй - дизайнер, третй - админ.

#логическаязадача
Тест. Функции в Python

Хорошо ли вы разбираетесь в функциях? Давайте проверим!

#тест #функции
Задача с кодом. Число с плавающей точкой

Создайте регулярное выражение для проверки того, является ли строка валидным числом с плавающей точкой. Обратите внимание: написать нужно паттерн, а не функцию.

Примеры:

pattern = "ваш_паттерн"

bool(re.match(pattern, "12.12")) ➞ True
bool(re.match(pattern, "12.")) ➞ False
bool(re.match(pattern, ".1")) ➞ True
bool(re.match(pattern, "-.1")) ➞ True
bool(re.match(pattern, "+4.4")) ➞ True
bool(re.match(pattern, "+4")) ➞ False
bool(re.match(pattern, "+4.4av")) ➞ False

Решение на нашем сайте.

#задача #coding
Задача на логику. Суматоха в автобусе

Есть автобус с сотней подписанных мест (от 1 до 100). В очереди 100 студентов. Пассажиры также имеют номера от 1 до 100.

Пассажиры заходят в автобус в порядке от 1 до n. Соглашение таково: когда пассажир под номером «i» заходит, тогда смотрит, не занято ли сидение под номером «i». В случае когда оно оказывается не занятым, пассажир занимает его, иначе он садится на любое другое не занятое место и занимает уже его.

Если учесть, что 1-й человек выбирает место абсолютно случайно, назовите шанс того, что 100-й человек сядет ровно на своё место, то есть сидение под номером 100.

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Задача для новичков

Напишите функцию getSum(), которая принимает два целых неотрицательных числа a и b, а возвращает их сумму. При этом пользоваться операторами + и - запрещается.

Примеры работы данной функции:

getSum(42, 5) --> 47
getSum(3, 7) --> 10
getSum(4, 0) --> 4

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def getSum(a, b):
while b != 0:
carry = a & b
a = a ^ b
b = carry << 1
return a

Данное решение не работает с отрицательными числами (по условиям задачи этого и не требовалось). Подумайте, как это можно исправить.

#задача #coding
Задача с кодом. Сиракузская последовательность

Сиракузская последовательность генерируется следующим образом. Берем любое натуральное число n. Если оно четное, то делим его на 2, а если нечетное, то умножаем на 3 и прибавляем 1 (получаем 3n + 1). Над полученным числом выполняем те же самые действия, и так далее.

Немецкий математик Коллатц выдвинул гипотезу: какое бы начальное число n мы ни взяли, рано или поздно мы получим единицу.

Напишите функцию, которая будет принимать в качестве аргумента число и возвращать кортеж из двух элементов: количества шагов сиракузской последовательности для переданного числа и наибольшее число в этой последовательности.

Примеры:

collatz(2) ➞ (2, 2)
# seq = [2, 1]

collatz(3) ➞ (8, 16)
# seq = [3, 10, 5, 16, 8, 4, 2, 1]

collatz(7) ➞ (17, 52)
# seq = [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

collatz(8) ➞ (4, 8)
# seq = [8, 4, 2, 1]

Решение на нашем сайте.

#задача #coding
Задача на логику. Судебная головоломка

Двоих людей обвиняют в совместном преступлении. Если оба признают себя виновными, каждый получит легкое наказание. Если это сделает один, а второй нет, то первого освободят, а второго подвергнут суровому наказанию. Если оба не признают своей вины, их обоих освободят от наказания.

Почему с точки зрения отдельного обвиняемого лучше признаться, а с точки зрения обоих - не делать этого?

Излагайте свои рассуждения в комментариях!

#логическаязадача
Ответ к задаче "Судебная головоломка"

Когда обвиняемый думает о себе, он может рассуждать следующим образом: "Допустим, второй обвиняемый признается. Если я тоже признаюсь, то получу легкое наказание, а если нет - буду сурово наказан. Допустим также, что второй обвиняемый не признается, тогда меня освободят независимо от моих действий. Поэтому лучше признаться".

Решив таким образом, оба обвиняемых признают свою вину. В результате они оба получат наказание, хотя и легкое. А могли бы быть освобождены, если бы оба не признали своей вины.

Дилемма заключённого, лежащая в основе этой задачи, - фундаментальная проблема в теории игр. Согласно ей рациональные игроки не всегда будут сотрудничать друг с другом, даже если это в их интересах.

#логическаязадача
Машинное обучение. Нововведения PyTorch 2.0

В PyTorch 2.0 были внесены фундаментальные изменения в основные операции компилятора, сохраняя при этом тот же уровень знакомства и удобства для разработчиков. Это последнее обновление обещает ускоренную производительность и расширенную поддержку для динамических форм и распределенного обучения.

Книги по ML - @maschinelearning

#ml
Тест. Логический тип данных

Проверьте, насколько хорошо вы знакомы с булевыми значениями. Пройдите этот тест 10 вопросов!

#тест
Задача с кодом. Больше, чем сумма?

Напишите функцию, которая будет принимать список чисел и проверять, является ли каждое число больше суммы всех предыдущих чисел. Если все числа в списке успешно пройдут проверку, функция должна вернуть True, в противном случае — False.

Примечание: первое число в списке всегда проходит проверку.

Примеры:

greater_than_sum([2, 3, 7, 13, 28]) ➞ True
# 3 > 2 = True
# 7 > 2 + 3 = True
# 13 > 2 + 3 + 7 = True
# 28 > 2 + 3 + 7 + 13 = True

greater_than_sum([1, 2, 4, 6, 13]) ➞ False
# 2 > 1 = True
# 4 > 1 + 2 = True
# 6 > 1 + 2 + 4 = False
# 13 > 1 + 2 + 4 + 6 = False

Решение на нашем сайте.

#задача #coding
Задача на логику. Три подозрительных матроса и дележка бананов

Трое матросов и обезьянка выбрались на берег безлюдного тропического острова. Весь день они бродили по острову, собирая бананы, и в итоге собрали достойное количество: примерно от 50 до 100 бананов. Матросы договорились поделить бананы поровну утром (на троих, обезьянка не в счет).

Ночью один матрос, опасаясь обмана со стороны товарищей, встал, отделил свою треть бананов и перепрятал ее. Бананы ровно на 3 не делились, оставался 1 лишний: его матрос отдал мартышке.

Точно так же поступили по очереди все три матроса.

Утром куча бананов солидно уменьшилась, но никто ничего не сказал. Бананы поделили на троих, а один лишний опять же отдали мартышке.

Вопрос: сколько бананов было в общей куче изначально?

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Задача для новичков

Напишите функцию isPerfectSquare(), которая определяет, является ли число, поданное в качестве аргумента, полным квадратом другого числа. В этом случае функция должна возвращать True, в противном случае - False.

Пользоваться встроенными функциями типа sqrt(), pow(), **0.5 запрещается.

Примры работы данной функции:

isPerfectSquare(16) --> True
isPerfectSquare(20) --> False
isPerfectSquare(121) --> True

Присылайте ваше решения в комментарии к этому посту. Решение - сегодня вечером.

#pythonзадача #coбес
Ответ к предыдущей задаче для новичков

def isPerfectSquare(num):
if num < 1:
return False
left, right = 1, num
while left <= right:
mid = left + (right - left) // 2
square = mid * mid
if square == num:
return True
elif square < num:
left = mid + 1
else:
right = mid - 1
return False

#задача #coding