Репетитор IT mentor
9.9K subscribers
874 photos
13 videos
29 files
722 links
Блог с заметками репетитора по математике, физике, информатике. Рассказываю о задачах, о способах их решения.

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

Автор: @physicist_i
Download Telegram
В данном видео рассказывается о возможности плыть под парусом против ветра. С точки зрения физики показывается как в этом случае лучше всего расположить парус относительно килевой линии корабля, чтобы с наибольшей выгодой задействовать движущую силу ветра.

➡️ Смотреть на YouTube ⬅️

#физика #механика #задачи
В группе, состоящей из 23 или более человек, вероятность совпадения дней рождения (число и месяц) хотя бы у двух людей превышает 50 %. Например, если в классе 23 ученика или более, то более вероятно то, что у кого-то из одноклассников дни рождения придутся на один день, чем то, что у каждого будет свой неповторимый день рождения.

➡️ Смотреть на YouTube ⬅️

Для 60 и более человек вероятность такого совпадения превышает 99 %, хотя 100 % она достигает, согласно принципу Дирихле (здравому смыслу), только тогда, когда в группе не менее 367 человек (ровно на 1 больше, чем число дней в високосном году; с учётом високосных лет).

#математика #задачи #теория_вероятностей
7 самых сложных задач для 5-го класса

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

➡️ Смотреть на YouTube ⬅️

#математика #задачи #егэ #огэ #алгебра
Список задач из видеоурока выше:

1. Возраст нескольких друзей составляет в сумме 62 года. Через три года он будет составлять 80 лет. Сколько всего друзей?

2. На электронных часах высвечивается 13:00:07. Через какое минимальное время все цифры на табло часов окажутся разными?

3. В 2052 году в марте будет больше воскресений, чем понедельников. На какой день в том году выпадет 12 июня? (Чур, в электронные и «вечные» календари не заглядывать.)

4. Сколько чисел от 459 до 671 содержат в записи одновременно цифры 5 и 6?
Код моделирующий решение (ЯП Pascal): https://pastebin.com/LUdLMWpL

5. Чтобы покрасить поверхность (все грани) деревянного кубика высотой 2 сантиметра, требуется 370 миллиграммов краски. Сколько краски понадобится, чтобы покрасить деревянный параллелепипед размером 4×4×7 дециметров?

6. Сколько существует таких натуральных чисел N, для которых из двух чисел N и N+937 ровно одно будет трехзначным?
Код моделирующий решение (ЯП Pascal): https://pastebin.com/VjQhFJMX

7. По дороге в одном направлении шли два человека со скоростью 6 километров в час, причем второй вышел на два часа позже первого. Первый нанял встреченного всадника отвезти второму письмо и привезти ответ. Всадник доставил письмо через полчаса, затем 40 минут ждал ответа (второй в это время писал письмо, а не шел), а потом повез его обратно. Сколько времени потребуется всаднику на доставку ответа?

Посмотреть разбор решений: ➡️ Смотреть на YouTube ⬅️
Мои размышления о форме вращающейся жидкости:

https://habrahabr.ru/post/345994/

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

Попробуем очень ооочень упрощенно выразить форму вращающейся жидкости. Читайте в статье.

➡️ Читать размышления ⬅️
Пример переключения классов средствами javascript. Плюс простейшее замыкание для циклического счетчика нажатий:

https://jsfiddle.net/rgx74v8w/7/

#javascript #js #замыкания
Переключение CSS-классов средствами Javascript.
Подсветка выбранного элемента.
Пример логики выбора элементов.
Подсчет количества нажатий на каждый элемент посредством присваивания замыкания каждому элементу списка elementList.

https://jsfiddle.net/9md108g3/3/

#javascript #js #замыкания
Ручное + автоматическое рандомное переключение CSS-классов средствами Javascript. Подсветка выбранного элемента. Пример логики выбора элементов. Подсчет количества нажатий на каждый элемент посредством присваивания замыкания каждому элементу списка elementList. Мерцание с помощью метода setInterval(), использующий метод переключения CSS-классов в контексте текущего объекта, контекст которого получен через call()

https://jsfiddle.net/dpg3mybz/1/

#javascript #js #замыкания
Парочка интересных способов получения целой части вещественного числа в языке Javascript. Допустим, у нас есть вещественное double число
var n = 1234.567; Нужно получить только целую часть от него, т. е. 1234.

1 способ. Самый банальный. Использовать средства библиотеки Math.
Math.floor(n); Метод Math.floor() возвращает наибольшее целое число, которое меньше или равно данному числу. Поэтому при применении полностью отбрасывается дробная часть.

2 способ. Изящная работа со строкой, полученной из числа.
((n + "").split("."))[0]; Конкатенация числа и пустой строки возвращает из числа 1234.567 строку "1234.567". Затем для строки используется метод split(), принимающий в качестве параметра разделитель-точку, метод split() возвращает массив/список слов, полученных по разделителю. В нашем случае у нас всегда получится два слова. Далее мы получаем целую часть, обращаясь к первому слову по нулевому индексу. Правда оно остается строкой, но это легко изменить, обернув данное выражение в метод parseInt(). Функция parseInt(string, radix) принимает строку в качестве аргумента и возвращает целое число в соответствии с указанным основанием системы счисления radix. Удобство в том, что вместо точки может стоять запятая, которую легко применить в методы split(). Таким образом, число 1234 можно получить так:
parseInt(((n + "").split("."))[0], 10)

3 способ. Простое использование метода parseInt(n, 10);
Также возвращает целую часть. Однако, в некоторых версиях может выполнить нежелательно округление вверх.

4 способ. Использование побитовых операций. n ^ 0;
Так как побитовые операции в JS определены только для целых чисел, то на низком уровне отбрасывается дробная часть, а операция исключающего или (XOR, ^) некоторого числа n вместе с нулем дает именно это число n. Только без дробной части.

5 способ. Двойное побитовое отрицание (инверсия). ~ ~n;
Преимущества: самый быстрый способ отбрасывания дробной части вещественного числа. Побитовые операции в Javascript работают со знаковыми (signed) целыми (integer) длиной в 32 бита (оператор >> работает с unsigned). Иными словами, побитовые операторы интерпретируют операнды как последовательность из 32 битов.
Таким образом, 1234 в двоичном коде будет равно:
0000 0000 0000 0000 0000 0100 1101 0010
Его побитовая инверсия ~1234 в двоичном коде будет равна:
1111 1111 1111 1111 1111 1011 0010 1101 (2) —> -1235 (10)
А побитовая инверсия побитовой инверсии равна:
~ ~1234 = ~(~1234) = ~(-1235):
0000 0000 0000 0000 0000 0100 1101 0010 (2) —> 1234 (10)
т.е. получили исходное число, только с отброшенной частью после плавающей точки.

Благодаря свойству инвертирования и представления чисел в дополнительном коде, тождество -1235 + 1 = -1234 мы можем в общем случае записать как (~n + 1) == - n или ~n == - (n + 1)
Данное выражение можно использовать в логической ветке, когда нужно сделать некоторые действия, если n != -1 (или экранировать какой-то блок в случае если переменная-флаг равна -1 :
if( ~n ){ //зайдет в эту ветку только, если n != -1 }

➡️ https://jsfiddle.net/87fza9rs/19/ ⬅️

#js #javascript
Черновик для экспериментов. Задача: распознать байтовые слова в строке и сделать перевод байтовых слов в соответствующие числа и байтовые представления в 16-ричной системе исчисления. Метод charToInt не защищен от ввода некорректных данных. И для большого буфера нужно сделать отдельный метод пересчета с учетом старшинства байтов.

Реализация на С.
[ https://onlinegdb.com/Ske3hotH1N ]

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

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

#репетитор #mentor #программирование #физика #математика #it #информатика #pascal #задачи #профилирование
Завершил чтение книги "Совершенный код" Стива Макконнелла. Несмотря на то что первые 50 страниц книги наполнены информацией, которая может показаться очевидной любому мыслящему человеку, книгу стоит прочесть до конца. Наполненная множеством интересных примеров, книга действительно способна навести на путь мудрого программирования. Примеры в данной книге более приближены к реальному коммерческому коду, чем игрушечные примеры из книг и методичек преподавателей информатики в школах и вузах.

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

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

Самыми полезными с практической точки зрения мне показались главы о рефакторинге, стратегиях оптимизации кода и о методиках оптимизации кода. А последняя часть книги под названием "Мастерство программирования" помогает понять, как именно развиваться в этой области.

И, конечно, хочется привести парочку самых ярких мотивационных моментов данной книги.

В 1972 году, на лекции, посвященной получению премии Тьюринга, Эдсгер Дейкстра заявил, что большинство аспектов программирования являет собой попытки компенсации строго ограниченных способностей разума. Самые лучшие программисты — те, кто понимают, насколько ограничены их возможности. Они скромны. Худшие программисты отказываются признать, что их способности не соответствуют задаче. Характер не позволяет им стать отличными программистами. Чем усерднее вы работаете над компенсацией ограниченных возможностей своего разума, тем лучше будете программировать. Быстрота вашего развития напрямую зависит от вашей скромности.

По моему субъективному мнению, данная книга должна быть первой. В некоторых моментах книга может показаться сложной, если у вас нет достаточного опыта. Особенно это связано с примерами на C++ и Assembler. Но всё равно эта книга должна быть первой, потому что лучше вырабатывать хорошие привычки с самого начала своего самообразования.

#рецензия #программирование
Ошибки стоят приобретенных знаний. Цена мудрости — отчаяние. Цель — не потерять энтузиазм совершать ошибки, получая знания, и иметь мудрость, чтобы не обращать внимание на отчаяние.
В статье я подробно, вплоть до самых мелочей, рассмотриваю три способа взятия интеграла Эйлера-Пуассона. В одном из способов выводится вспомогательная формула редукции. Для нахождения некоторых сложных интегралов можно использовать формулы редукции, которые позволяют понизить степень подынтегрального выражения и вычислить соответствующие интегралы за конечное число шагов.

➡️ Читать статью ⬅️

Мне было интересно освежить область памяти, в которой хранились обрывки лекции по математическому анализу еще со 2 курса вуза. Кстати, преподаватель объяснял тогда взятие интеграла самым простым способом (через полярные координаты) и то умудрился объяснить настолько криво и сложно, что мало кто понимал. В этой статье я хочу сделать это максимально просто и подробно, чтобы начинающие математики легко разобрались в теме ;)
Пример того, как можно преобразовать некоторые части выражения, использую домножения на сопряженное (избавление от неопределенности с корнями) и бесконечно малые функции (имеем право, ибо n растёт).
Наткнулся на интересную задачку. Решил реализовать алгоритм вычисления корня n-ой степени из произвольного положительного числа. Уже приводил возможную реализацию для нахождения квадратного корня. Но в этом случае решение получается более обобщенным. Это первый рабочий алгоритм, написанный на коленке. Нужно еще поразмышлять о сложности и возможностях ускорения.

В данном решении я использую идею относительно неплохого начального приближения. Затем последовательным делением находится второе приближение корня n-ой степени. Далее считается новое приближение с помощью усреднение двух текущих. Последовательно алгоритм сходится к нужному корню с наперед заданной погрешностью. Это немного похоже на метод последовательной релаксации ( численные методы решения ).

https://pastebin.com/ztnz7g2E
https://ideone.com/OUEzGA
Лично мне всегда нравилось думать над алгоритмами, которые уже реализованы в стандартных библиотеках. Пытаться разработать их самостоятельно. Это очень хорошо тренирует мозг. Поэтому, на мой взгляд, "изобретать велосипед" очень даже полезно. И категорически вредно всегда пользоваться всем готовым, не имея никакого представления о внутреннем устройстве.

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

Нужно переходить от Python к С++, от С++ к Си, от Си к Assembler, от Assembler к устройству и архитектуре БИС (Больших Интегральных Схем), от микроконтроллеров к простейшим вентилям, от простейших вентилей до усилительных каскадов, от усилительных каскадов до транзисторов, затем в область электроники, затем в основу физических законов. Связывайте все знания математическими выкладками. Углубляйтесь. Так интереснее жить!
Для себя отметил, что телефон с 8МP модулем камеры и автофокусом вполне можно использовать в качестве электронного микроскопа для пайки мелких деталей на платах, если прикрепить к телефону сзади объектив от старого фотоаппарата - мыльницы. Вполне неплохая четкость при данном увеличении получается. Такой вот бюджетный лайфхак.