Репетитор IT men
12.9K subscribers
1K photos
21 videos
32 files
865 links
Блог с заметками преподавателя по математике, физике, информатике. Рассказываю о задачах, о способах их решения.

vk.com/itmentor
dzen.ru/itmentor
https://www.youtube.com/@it_men

Автор: @physicist_i

№ 5535340568
Download Telegram
💬 15.1 и 15.2 – что выбрать в ОГЭ по информатике и как их решать?

Максимум за задачи 15.1 и 15.2 можно получить 2 балла. И учащемуся требуется выполнить только одно задание. Но что же делать ученику на экзамена? На мой взгляд, нужно решать обе задачи. Ведь тогда повышается вероятность забрать 2 балла хотя бы от одной. И ещё вполне может такое быть, первое задание (которое обычно простое) окажется сложным и запутанным. И в таком случае ученику просто придется программировать...

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

#алгоритмы #разбор_задач #ОГЭ #ЕГЭ
#программирование #информатика
👍92🔥1😁1
👨🏻‍💻 Задание 8 из ЕГЭ по информатике: решать аналитически или кодить?

Вчера разбирали проблемные задачи по просьбе моей ученицы. Девушка способная, внимательная и умная. Просто есть страх перед некоторыми задачами. И я её прекрасно понимаю. Потому что во время учебы в школе нам ничего не объясняли, у меня тоже был бы страх перед такими задачами. Этой короткой заметкой я хочу немного успокоить тех ребят, которые боятся даже начинать решать 8 задание по информатике.

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

#информатика #программирование #ЕГЭ #разбор_задач #алгоритмы #строки
👍11🔥3🤔1
👨🏻‍💻 Задание 8 из ЕГЭ по информатике: решать аналитически или кодить?

Вчера разбирали проблемные задачи по просьбе моей ученицы. Девушка способная, внимательная и умная. Просто есть страх перед некоторыми задачами. И я её прекрасно понимаю. Потому что во время учебы в школе нам ничего не объясняли, у меня тоже был бы страх перед такими задачами. Этой короткой заметкой я хочу немного успокоить тех ребят, которые боятся даже начинать решать 8 задание по информатике.

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

#информатика #программирование #ЕГЭ #разбор_задач #алгоритмы #строки

💡 Репетитор IT mentor // @mentor_it
👍17💯21🔥1
👀 Новая вариация задания #6 из ОГЭ по информатике — разбор с параметром 🅰️

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

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

#информатика #программирование #ОГЭ #разбор_задач #алгоритмы #параметры

💡 Репетитор IT mentor // @mentor_it
👍12🔥3😱1
👨🏻‍💻 Как решать задачу 15.1 из ОГЭ по информатике

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

🔍 Читать полностью

#информатика #ОГЭ #ЕГЭ #алгоритмы

💡 Репетитор IT mentor // @mentor_it
👍13👏2❤‍🔥1👨‍💻1
🤯 Оптимизации до одного цикла — непонятная задача по информатике

Сегодня будет что-то очень странное. Короткая, но интересная заметка, непонятное условие, школьные интриги, репетиторское расследование, расчехление экстрасенсорных навыков при попытках угадать «Что хочет препод?». Я уже не так давно разбирал задачу 15.1 из ОГЭ по информатике. Там была лестница, с которой у многих ребят возникали трудности. Но сегодня будет еще больший треш-кринж-омагад...

🔍 Читать полностью

#информатика #программирование #ОГЭ #разбор_задач #алгоритмы

💡 Репетитор IT mentor // @mentor_it
👍121🔥1😍1
Задача 15.2 из ОГЭ: Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 4. Количество чисел не превышает 1000. Введенные числа не превышают 30 000. Программа должна вывести одно число  — минимальное число, оканчивающееся на 4.

👩‍💻 Задачу можно решить и в пару строк, но здесь уже сильно снизится понимание. Покажу пример:

N = int(input("Введите количество чисел: "))
print("Ответ: ", min([ x for x in [int(input("x = ")) for x in range(N)] if x % 10 == 4 ]))


👩‍💻 Цикл for дает лучшее понимание:
N = int(input("Введите количество чисел:"))
mi = 30000
for k in range(N):
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < mi):
mi = number
print("Минимальное число, оканч-ся на 4: ", mi)


👩‍💻 Но самый оптимальный и понятный код получается с помощью цикла while, которые дает возможности тонкой настройки цикла, что иногда нужно, если наперед не задано точное количество итераций:
N = int(input("Введите количество чисел: "))
min_4 = 30000
k = 1
while k <= N:
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < min_4):
min_4 = number
k = k + 1
print("Минимальное число, оканч-ся на 4: ", min_4)


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

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163😍2🔥1
📝 Тип 5. У исполнителя Альфа две команды. которым присвоены номера:
1. Вычти b;
2. Умножь на 5.
(b  — неизвестное натуральное число).
Выполняя первую из них, Альфа уменьшает число на экране на b, а выполняя вторую, умножает это число на 5. Программа для исполнителя Альфа  — это последовательность номеров команд. Известно, что программа 21121 переводит число 2  в число 17. Определите значение b.


🖥 Решение:

Всегда с учениками решали эту задачу аналитически (так вроде быстрее). Но на последнем занятии я подумал, а если алгоритм будет сложный, можно ли написать что-то универсальное? Например, программу, которую можно будет масштабировать до любого количества инструкций любой сложности... И вот пришла такая идея:

def f1(x, b): return x - b
def f2(x): return 5*x

def solution(N, program):
list_digits = list(program)
for b in range(1, 1000):
res = N
for char in list_digits:
if char == '1': res = f1(res, b)
if char == '2': res = f2(res)
if res == 17:
print("b = ", b)
break
N = 2
program = '21121'
solution(N, program)


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

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤‍🔥1😍1
🖥 Как применить Python для упрощения решений задач по информатике

Привет, ребятки! Сегодняшняя заметка будет состоять из разбор 6 задач уровня 9 класса (ОГЭ). Задачки можно решить аналитически, но мы попробуем их закодить, решить методом перебора. Все эти задачи будут полезны учащимся средней школы для тренировки навыков программирования. Реализация примеров выполнена с помощью Python.

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

#разборы_задач #Python #ОГЭ #информатика #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9👍5🔥41👨‍💻1
📝 Замечаю, что когда 9-ти-классники начинают готовиться с нуля к экзамену по информатике, то первая задача, которая их пугает — это задача типа 3. Здесь я всегда предлагаю построить ассоциации с обычной алгебраической системой, убрать все отрицания или двойные отрицания [для зрительного упрощения] и просто выписать несколько первых элементов множества значений X.

В крайнем случае — задачу можно забрутфорсить с помощью Python. #информатика #огэ #егэ #программирование #алгоритмы #разбор_задач

💡 Репетитор IT mentor // @mentor_it
👍192💯1
📝 Рубрика: разбираем подвохи из математических книг

В общем, недавно в VK-беседу физиков один участник задал вопрос. Читал он книгу по дискретной математике и запутался в преобразованиях, а именно в том, как получилась 2-ая строка из 1-ой строки (см. картинку). Было подозрение на манипуляцию индексами, но не сходилось. И ведь действительно, устно так сразу можно и не понять что произошло с суммами, почему вдруг изменились индексы, расширив диапазон суммирования?!

А дело в том, что суммы можно расписать так, что изменение индекса ни на что не повлияет из-за особенности степенных коэффициентов, зависящих от n.

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

А вы сталкивались с такими «очевидными» переходами в книгах? Если помните, то расскажите в комментариях.

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

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5❤‍🔥3😍1
🟧🔺Запутанная задача [тип №6] из ЕГЭ по информатике

Пару дней назад с моим учеником наткнулись на сложную вариацию задачи №6 из ЕГЭ по информатике. Предполагаю, что у многих учащихся школ эта задача вызовет трудности, поэтому в этой заметке мы с вами максимально подробно разберем все способы решения данной проблемы. И порисуему геометрию, и покодим алгоритмы... Готовы? Тогда приятного чтения.

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

#ЕГЭ #разбор_задач #информатика #программирование #алгоритмы #математика

💡 Репетитор IT mentor // @mentor_it
🔥7👍42👨‍💻2
🤔 Как ускорить выполнение цикла? Алгоритм оптимизации циклов

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

👨🏻‍💻 Читать статью полностью

#программирование #алгоритмы #структуры_данных #coding #разбор_задач #development

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥63🤯1
🖥 Помните предыдущие два поста про примитивные 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
🔥6👍53🤯2
В этой заметке рассмотрим задачу с реального собеседования на 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
👍13🔥64
🐍 Циклы и их прерывания в Python: алгоритм поиска в строке

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

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

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

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1😢1🤩1
👨‍💻 Накопители (SSD или HDD) являются удобными и надежными устройствами хранения больших объемов информациию. Но информацию нужно не только аккуратно складывать по «сундукам» но и уметь быстро ее находить и эффективно использовать.

Самую большую роль в этой цели играет организация хранения информации, её структура. Одна из книг известного теоретика и автора языка Pascal Никлауса Вирта (Niklaus Virth) называется «Алгоритмы + структуры данных = программы».

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

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

💡 Репетитор IT mentor // @mentor_it
🔥9👍82🤔1
🟧🔺Запутанная задача [тип №6] из ЕГЭ по информатике

Пару дней назад с моим учеником наткнулись на сложную вариацию задачи №6 из ЕГЭ по информатике. Предполагаю, что у многих учащихся школ эта задача вызовет трудности, поэтому в этой заметке мы с вами максимально подробно разберем все способы решения данной проблемы. И порисуему геометрию, и покодим алгоритмы... Готовы? Тогда приятного чтения.

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

#ЕГЭ #разбор_задач #информатика #программирование #алгоритмы #математика

💡 Репетитор IT mentor // @mentor_it
👍73🔥2
👀 Новая вариация задания #6 из ОГЭ по информатике — разбор с параметром 🅰️

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

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

#информатика #программирование #ОГЭ #разбор_задач #алгоритмы #параметры

💡 Репетитор IT mentor // @mentor_it
🔥6👍3😱21
🤔 Как ускорить выполнение цикла? Алгоритм оптимизации циклов

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

👨🏻‍💻 Читать статью полностью

#программирование #алгоритмы #структуры_данных #coding #разбор_задач #development

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74👨‍💻2🤩1