Telegram Web Link
Media is too big
VIEW IN TELEGRAM
Как просчитать все ходы? Могут ли три «дамки» загнать одну «дамку» соперника за ограниченное число ходов?

Я не умею играть в шахматы и шашки. Но мне нравятся эти игры, поэтому иногда тренируюсь в приложении на телефоне или в VK. Каждый раз я понимаю, что «Дьявол в деталях», и очередной проигрыш связан с тем, что думаешь на 1-2 хода вперед. Либо просто не хватает времени (на ход выделено 60 сек) чтобы учесть все возможные ходы соперника.

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

⚠️ Правила:
Ничья признается, если участник, имея в окончании партии три дамки против одной дамки соперника и владея при этом "большой дорогой", своим 15-м ходом (считая с момента установления соотношения сил) не совершит взятие дамки соперника.

Вопрос: Можно было бы конкретно в этом случае быстро загнать дамку соперника в тупик?

Скорость видео в режиме реального времени (игра шла с такой же скоростью). #задачи #логические_игры #шашки #статистика #логика #математика #теория_вероятностей

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 О проблемах, связанных с оцениванием

Мы с детства привыкаем, что нас оценивают. В школе оценивают учителя. В вузе оценивают преподаватели. Преподавателей оценивает ВАК. Самое страшное — человек привыкает, что его оценивают. Ждать внешней оценки — это нездоровое качество. Нельзя себя ставить в такое положение, чтобы тебя оценивали.

В жизни все гораздо сложнее. Твою деятельность оценивают не люди, а объективные обстоятельства. Заработало - не заработало, получилось - не получилось, удалось - не удалось. И необходимо добиться результата, так сложить обстоятельства, чтобы заработало, получилось, удалось. Это очень сложно.

Приведу пример. Вы хотите создать робота. Это сложнейшее техническое устройство, hi-end электроники, робототехники, программирования. Допустим, робот должен пройти от одного края белой доски до другого, обходя при этом черные области (это случайно наложенная черная бумага). Роботом управляет компьютер, робот ориентируется по видеокамере, расположенной на нем. Робот должен обходить препятствие самостоятельно, без участия человека.

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

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

Не обращайте внимание на критику обывателей, конкурентов, преподавателей со стороны. Важен только ваш конечный результат. Ваши ошибки и неудачи в ходе работы не имеют никакого смысла в конце, если работа успешно завершена. Ориентируйтесь на результат!

💡 Репетитор IT mentor // @mentor_it
⚡️ Почему скачок силы тока не бывает резким в RL-цепи ?

Соскучились по электричеству и магнетизму, друзья? :) В этой статье мы максимально подробно разберем типичную задачу на RL-цепи. Такие задачи начинают проходить в 11-м классе в физико-математических лицеях, а затем возвращаются к ним в университете примерно на 2-м курсе физ-мата. Но в чем же особенность этих задач? Во-первых, большинство не понимает как их решать. Во-вторых...

📝 Читать заметку полностью

#электродинамика #физика #электричество #магнетизм #разбор_задач

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🔤 Олимпиадное неравенство и интересное решение

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

Доказать неравенство:
|a³ + b³ + c³ - 3•a•b•c| ⩽ (a² + b²+ c²)^(3/2) где a, b, c ∈ ℝ

📝 Читать разбор задачи

#математика #алгебра #олимпиады #разбор_задач #аналитическая_геометрия #линейная_алгебра

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 in 🖥 О лямбда-функциях в Python

▪️ Когда нужно быстро сделать анонимную функцию, которую удобно передавать в другие функции высшего порядка, используются лямбда-функии, которые имеют синтаксис: Lambda аргументы : выражение
Лямбда-функции могут иметь любое количество аргументов, но у каждой может быть только одно выражение. Выражение вычисляется и возвращается. Эти функции могут быть использованы везде, где требуется объект-функция. Лямбда-функцию можно пустить в качестве аргумента другие функции, которые обрабатывают крупные структуры данных: списки, словари, объекты. Синтаксически лямбда-функция ограничена, позволяет представить всего одно выражение.

▪️ Функция filter() в Python принимает в качестве аргументов функцию и список . Функция вызывается со всеми элементами в списке, и в результате возвращается новый список, содержащий элементы, для которых функция возвращает результат True. Мы напишем пример использования функции filter() для отбора четных чисел из списка.

▪️ Функция map() принимает в качестве аргументов функцию и список. Функция вызывается со всеми элементами в списке, и в результате возвращается новый список, содержащий элементы, возвращенные данной функцией для каждого исходного элемента.
Ниже пример использования функции map() для возведения в квадрат всех элементов списка.

▪️ Функция reduce() принимает на вход три параметра — функцию-обработчик, коллекцию и начальное значение аккумулятора. Этот же аккумулятор возвращается наружу в качестве результата всей операции. Функция вызывается с помощью лямбда-функции и итерируемого объекта и возвращается новый уменьшенный результат (свертка). Так выполняется повторяющаяся операцию над парами итерируемых объектов. Функция reduce() входит в состав модуля functools. Да, эта функция самая сложная для понимания. По своей сути функция reduce() нужная для агрегации (лат. aggregatio «присоединение») элементов в результат-ответ. Функция, передаваемая в reduce()— самая важная часть и ключ к пониманию работы всего механизма агрегации. Она принимает на вход два значения. Первое — текущее значение аккумулятора, второе — текущий обрабатываемый элемент. Задача функции — вернуть новое значение аккумулятора. reduce() никак не анализирует содержимое аккумулятора. Всё, что она делает, передаёт его в каждый новый вызов до тех пор, пока не будет обработана вся коллекция, и в конце концов вернёт его наружу.

📱 А теперь примеры кода:

# Различие между обычной функцией и лямбда-функцией
def defined_square(x):
return x*x

lambda_square = lambda x : x**2

print(defined_square(16)) # 256
print(lambda_square(16)) # 256

# Применение лямбда-функции к функциям высш.порядка
numbers = [1, 11, 12, 13, 18, 9, 8, 6]

# Лямбда-функции и filter()
new_list = list(filter(lambda x: x % 2, numbers))
print(new_list) # [1, 11, 13, 9]

# Лямбда-функции и map()
new_list = list(map(lambda x: x**2, numbers))
print(new_list) # [1, 121, 144, 169, 324, 81, 64, 36]

# Лямбда-функции и reduce()
from functools import reduce
total = reduce(lambda acc, cur : acc + cur, numbers)
print(total) #1 + 11 + 12 + 13 + 18 + 9 + 8 + 6 = 78

users = [
{ 'name': 'Igor', 'amount': 19 },
{ 'name': 'Danil', 'amount': 1 },
{ 'name': 'Ivan', 'amount': 4 },
{ 'name': 'Matvey', 'amount': 16 },
]

total = reduce(lambda acc, user: acc + user['amount'], users, 0)
# user: Igor, acc = 0, return value 0 + 19
# user: Danil, acc = 19, return value 19 + 1
# user: Ivan, acc = 20, return value 20 + 4
# user: Matvey, acc = 24, return value 24 + 16
print(total) # 40


🔹 Функция reduce в Python
🔹 Агрегация reduce() - свертка
🔹
Лямбда-функция в Python простыми словами

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Callback в Python — это функция, которая передаётся на вход другой функции (или другому участку кода), чтобы её запустили в ответ на какое-то событие.

Callback-функции делают код Python более гибким и модульным. Они позволяют создавать функции, которые могут выполнять разные действия в зависимости от переданной им callback-функции.

Пример использования callback в Python:
def calculate(func, x, y):
result = func(x, y)
print(result)

def add(x, y):
return x + y

def multiply(x, y):
return x * y

calculate(add, 2, 3) # выведет 5
calculate(multiply, 2, 3) # выведет 6


В этом примере функция calculate принимает функцию в качестве первого аргумента, а также два параметра x и y. Затем функция calculate вызывает переданную функцию и передаёт ей x и y в качестве аргументов. Результат затем выводится на консоль. Функции add и multiply определены отдельно и переданы как callback-функции функции calculate, которая затем вызывает их соответствующим образом.

Callback-функции широко используются в различных областях программирования, например: веб-разработка (обработка событий на веб-страницах), разработка игр (обработка событий от игровых контроллеров), мобильная разработка (обработка событий пользовательского интерфейса), машинное обучение (определение функций потерь и метрик для оценки моделей).

🚀 Некоторые преимущества callback-функций:
▫️Гибкость и расширяемость. Код становится более модульным и гибким. Можно легко изменять поведение функции, передавая ей разные callback-функции.
▫️Асинхронность. Callback-функции часто используются в асинхронном программировании, где выполнение кода не обязательно происходит последовательно. Например, при обработке событий, сетевых запросов или операций ввода/вывода.
▫️Обработка событий. Callback-функции позволяют реагировать на определённые события, такие как нажатие кнопки, получение данных из сети или завершение длительной операции.

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Помните предыдущие два поста про примитивные callback-функции и фильтрующие функции? Может возникнуть вопрос, а можно ли, реализовать свой аналог reduce() ?

Давайте сразу напишем такой пример:
numbers = [1, 11, 12, 13, 18, 9, 8, 6]

from functools import reduce

func = lambda acc, cur : acc + cur

total = reduce(func, numbers, 0)
print('Встроенная reduce: ',total)

def _reduce(callback, collection, init = 0):
acc = init
for k in collection:
acc = callback(acc, k)
return acc

_total = _reduce(func, numbers)
print('Моя reduce: ',_total)


Теперь объясним параметры и работу конструкции:
result = reduce( function, iterable[, initializer] ) :
▫️function — функция, применяемая к элементам итерации. Она должна принимать два аргумента.
▫️iterable — итерируемый объект, элементы которого вы хотите уменьшить. Это может быть список, кортеж или любой другой итерируемый объект.
▫️initializer — (необязательно): начальное значение аккумулятора (накопителя). Оно используется в качестве первого аргумента при первом вызове функции, если оно предусмотрено.

⚠️ Обработка пустых итераций: Одной из распространенных ошибок при использовании функции reduce() является обработка пустых итераций. Передача пустой итерации в reduce() без инициализатора вызывает Ошибку типа поскольку нет начального значения для запуска процесса сокращения. Чтобы избежать этого, всегда указывайте инициализатор, когда итерируемый объект может быть пустым.

⚙️ Производительность:
▫️ Эффективность reduce() по сравнению с циклами: Функция reduce() может быть более эффективной, чем явные циклы, потому что она реализована на C, что может обеспечить преимущества в производительности. Однако это преимущество часто незначительно и зависит от сложности применяемой функции.
▫️Преимущества использования встроенных функций в производительности: Встроенные функции, такие как sum(), min(), и max() высоко оптимизированы с точки зрения производительности. Они реализованы на C и могут выполнять операции быстрее, чем эквивалентный код Python с использованием reduce().

🖥 Зачем разработчикам нужна функция reduce() ? Функция reduce() полезна при итеративной обработке данных, избегая явных циклов и делая код более читаемым и кратким. Некоторые распространенные варианты использования включают:
▫️ Суммирование чисел в списке: Быстрое суммирование всех элементов.
▫️ Умножение элементов итеративного элемента: Вычисление произведения элементов.
▫️ Объединение строк: Объединение нескольких строк в одну.
▫️ Нахождение максимального или минимального значения: Определение самого большого или самого маленького элемента в последовательности.

#python #разработка #программирование #IT #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой заметке рассмотрим задачу с реального собеседования на Python-разработчика

Мы уже ознакомились с lambda-функциями и где они используются. Сейчас же исследуем вырванный из контекста реальный код и задания к нему.

🖥 Исходный код:
def get_first_matching_object(predicate,objects=[]):
matching_objects = (obj for obj in objects if predicate(obj))
if matching_objects:
object = matching_objects[0]
return object
return None

print(get_first_matching_object(lambda x: x == 1, [2, 3, 4]))


▪️ Что не так с кодом ? Если мы запустим в таком виде, то получим TypeError: 'generator' object is not subscriptable. Это означает, что объект-генератор matching_objects представляет собой итератор: он генерирует значения в том порядке, в котором они запрашиваются циклом for или вызовом next(matching_objects). Однако, дальше по коду пытаются получить доступ по индексу так, как будто это список или любой другой Sequence-тип, который позволяет получать доступ к произвольным k-м элементам через matching_objects[k]. Если мы хотим, чтобы всё работало, нам нужно преобразовать в список list() или закрыть генератор в квадратные скобки: matching_objects = [obj for obj in objects if predicate(obj)]

▪️ Что код делает ? Есть некоторая функция, которая принимает в себя callback-функцию predicate и набор объектов (пустой по дефолту). Далее у нас как-то формируется список помеченных объектов, которые попадают в новый список только в том случае, если callback-функция возвращает для них True. Следующая конструкция говорит нам о том, что если полученный список matching_objects не пустой, то мы выделяем первый входящий в него объект и возвращаем его. В противном случае возвращается None. Но последняя строчка не является обязательной. Потому что, в случае НЕсрабатывания условного оператора, у нас итак вернется None.

▪️ Что выведет на экран, если его исправить? Судя по тестовым параметрам, переданная lambda-функция ни на одном из элементов объекта [2, 3, 4] не вернет True. Поэтому список matching_objects окажется пустым, в итоге нам вернется None.

▪️ Функция оптимизирована? Нет. Дело в том, что она перебирает все остальные элементы (тратит память и время выполнения), когда мы можем ограничиться рассмотрением первого подходящего. Тогда код можно исправить так:
def get_first_matching_object(predicate,objects=[]):
for obj in objects:
if predicate(obj):
return obj
return None

print(get_first_matching_object(lambda x: x == 1, [1, 2, 3, 4])) # 1

▪️ Какая сложность выполнения данной функции? В худшем случае: O(n) ; в лучшем случае : O(1).

#python #разработка #программирование #IT #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Почему поднять предмет быстро тяжелее, чем поднять медленно?

Друзья, привет! Разбираемся с подвохами физики из раздела механики. Подготавливая своих учеников к ЕГЭ и ОГЭ, я заметил, что многие школьники путаются в задаче нахождения работы, когда движение равноускорено (a = const, v ≠ const). Рассмотрим типичную задачу, решение которой поможет пролить немного света на эту тёмную сторону физики :)

📝 Читать заметку полностью

#разбор_задач #механика #физика #огэ #егэ #факты #задачи #physics

💡 Репетитор IT mentor // @mentor_it
♾️ О полярных координатах и нахождении площади в полярной системе координат 💡

Задача 1. Найти площадь, ограниченную кривыми, заданными в полярной системе координат: r = 1 - cos(φ) ; r = 1; r ⩾ 1

Задача 2. Найти площадь фигуры, ограниченной "трехлепестковой розой" r = a ⋅ cos(3φ).

Задача 3. Если плоская фигура имеет "сложную" форму, то как её разбивать в полярной системе?

Задача 4. Вычислить площадь фигуры, ограниченной линией r = 2 cos²(φ)

Задача 5. Вычислить площадь фигуры, ограниченной линиями r = -2⋅sin(3φ) и r = 2⋅sin(φ) в полярной системе координат.

Задача 6. Вычислить площадь фигуры, ограниченной r = √3⋅cos(φ) и r = sin(φ) в полярной системе координат.

〰️ Разбор и решение всех задач в статье

#математика #разбор_задач #задачи #математически_анализ #интегрирование
📉 Экономика: разбор типовых задач

Ребят, сегодня будет немного экономических задач. Вдруг кому-то будет нужно из подписчиков. Некоторые задачи не особо информативны. Но экономика далека от тематики канала, поэтому что имеем... 😊 А вот если вам нужна помощь с физикой, математикой и программированием, то обращайтесь в лс..

📝 Читать заметку

#разбор_задач #экономика #математика

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Приглашаю к обсуждению интересной задачи, скрывающей под собой не только красивые мотивационные речи блогеров, но и математику, не менее интригующую...

➡️ Задача и её обсуждение: https://www.tg-me.com/maths_lib/2173

#разбор_задач #статистика #математическая_статистика #теория_вероятностей #математика

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🔣 Задача по программированию для подписчиков 👨🏻‍💻

Дано игровое поле, которое задано матрицей m x n, где каждая ячейка представляет собой клетку корабля «X» или пустую клетку «.».

Необходимо найти количество всех кораблей на игровом поле.

Примечания:
▪️ Корабли можно размещать на игровом поле только горизонтально или вертикально
▪️ Два корабля разделяет по крайней мере 1 горизонтальная или вертикальная клетка.

📝 Обсуждение задачи здесь 📝

#разбор_задач #задачи #программирование #информатика #математика #computer_science

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Как перенести названия всех файлов текущей директории в текстовый файл .txt в Python?

Решил написать небольшой скрипт на Python. Повседневная задача редактора технического канала: Перенести названия всех файлов из нужной директории (задается путем), и записать их в текстовый файл example.txt с добавлением номеров каждого файла. Записать имена в файл с предварительной сортировкой по дате создания (или скачивания). Рассказываю как это реализовать на Python в несколько строк...

👨🏻‍💻 Читать заметку полностью

#python #файлы #информатика #программирование #OS

💡 Репетитор IT mentor // @mentor_it
🔥 Эта задача по геометрии ломает мозг 🤯

Сегодня один из участников нашего физ-мат telegram-канала Physics.Math.Code предложил интересную задачу. В итоге подвис наш Техночат в размышлениях над ней. Но в итоге решение было найдено. Кто-то пробовал решать задачу через нейросеть или интуицию. Получали ответы в 30°, 75° и 120°. Чуть позже, когда в чате сделали подробные рисунки, мы поняли, что там точно получается прямой угол, но как это доказать... Первое, что мне пришло на ум, так это попробовать результаты теоремы косинусов для треугольников ADP и PEC, чтобы потом их объединить в проверке теоремы Пифагора для треугольника DPE, но это не увенчалось успехом... А сейчас рассмотрим как надо было.

📝 Читать разбор и решение 📝

📐 Дан произвольный треугольник △ABC. Угол ∠ABC равен 120° градусам. D принадлежит стороне AB. Е принадлежит стороне BC. AD = DE = EC. Точка P - середина основания AC. AP = PC. Найти угол ∠DPE.

#разборы_задач #олимпиады #математика #геометрия #math #geometry

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Циклы и их прерывания в Python: алгоритм поиска в строке

Это заметка будет для начинающих, которые только знакомятся с программированием, информатикой и с языком Python, в частности. Вчера мы с учеником изучали циклы и некоторые операторы, которые дают возможность управлять циклами. В этой небольшой статье я покажу несколько примеров. При этом от совсем простых абстракций постараемся углубиться в более полезные вещи с практической точки зрения. [ Уровень сложности: ~7..8 класс ]

👨🏻‍💻 Читать заметку полностью

#python #алгоритмы #информатика #программирование #циклы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Задача по физике: попались школьники, учителя, репетиторы

Вчера я общался в чате репетиторов и увидел, что коллеги попросили помощи в решении одной задачи. Когда я прочитал условие, то вспомнил, что сталкивался с похожей задачей на разборе олимпиады со своим учеником и еще видел похожую задачу в ЕГЭ по физике.

✏️ Читать полностью

Задача связана с натяжением нити математического маятника. И так как она вызвала серьезные затруднения у всех моих учеников, а также трудности возникли у коллег, то я решил подробно разобрать эту задачу. #разборы_задач #физика #ЕГЭ #олимпиады

💡 Репетитор IT mentor // @mentor_it
👨🏻‍💻 Задача по программированию

Тривиальная задача сравнения метода вычисления факториал с помощью цикла и метода вычисления факториала с помощью рекурсии. Берется некоторое число n, для которого вычисляем факториал разными способами. Вычисления засовываем в цикл с 1000 итераций, чтобы снизить погрешность. Засекаем время с помощью метода Milliseconds() (библиотека Utils). Выводим результаты. В большинстве случаев рекурсия выполняется быстрее. Предлагаю обсудить, почему так происходит?
[ Язык реализации: Pascal ]

Обсуждение задачи:
vk.com/wall-51126445_30047
📝 Полный код: https://pastebin.com/UzPkbXDa

Были еще на канале интересные статьи по этой теме:

▪️ Что работает быстрее: цикл или рекурсия? Измеряем производительность

▪️ 🐍 Разбираем циклы в Python на простых примерах. Какой цикл быстрее?

▪️ Как ускорить выполнение цикла? Алгоритм оптимизации циклов

#программирование #информатика #pascal #задачи #профилирование

💡 Репетитор IT mentor // @mentor_it
Сможете решить эту задачу по геометрии?

В этой заметке у нас будет немного геометрии. Листал я интернет и на глаза попалась такая задача, где был дан рисунок, на котором всё отмечено, и нужно было найти угол. В абсолютно произвольном треугольнике.. Ещё из интересного в интернете был такой факт, что эта задача из Турции (откуда точно - не знаю).

Посмотрите сначала на рисунок, на нём всё есть. На этом моменте предлагаю вам остановиться, взять в руки черновик и подумать самостоятельно, прежде чем листать дальше...

📝 Читать разбор задачи

Дан произвольный треугольник △ABC. Сторона AB = 6. Из вершины B к стороне AC опущена высота BH. Прямая CK (K ∈ AB) пересекает высоту BH в точке O таким образом, что CO = 6, BO = 3, а ∠KOB в два раза больше угла ∠ABH. Найти угол ∠A - ?

#разборы_задач #олимпиады #математика #геометрия #math #geometry

💡 Репетитор IT mentor // @mentor_it
2025/07/05 20:57:52
Back to Top
HTML Embed Code: