Алгоритмы и структуры данных (С++), лекция №10
Вставка
- Опубліковано 13 кві 2020
- Практика: cs.mipt.ru/cpp_algo/
План курса, код с ноутбука: github.com/tkhirianov/lection...
Telegram-группа: t.me/tkhirianov_cpp_algo
Спонсировать: / tkhirianov или www.paypal.me/tkhirianov или 63900240 9020000598 (карта СБ).
Тимофей. Если хоть один человек лет через 20 вспомнит Вас и ваши лекции добрым словом за то, что они помогли ему по жизни стать тем, кем он станет - считайте, вы не зря прожили и живёте. Да. А вот два моих маленьких внука вас точно будут помнить добрым словом. Спасибо Вам за это!
Thanks for your work and good luck with the next video !!
Bolshoe spasibo Vam za prekrastnye lekcii! Oni mne ochen pomogaut.
Благодарю за лекцию!
Спасибо за урок
Спаисбо дорогой Тимофей Фёдерович.
Большое Вам спасибо!
Спасибо большое!
Озвучка экспоненциальной асимптотики божественна - "фшшшюх!!" ))) Сразу понятно стало, что многопоточность не канает :) Тимофей - препод от бога))
Тимофей, приветствую! Поправочка (часто встречается в коде) : при итерации в цикле по элементам массива (или вообще контейнера) следует использовать тип size_t, а не int:
for(size_t i=0; i
Из-за опасности переполнения? Или есть ещё причины?
крутой мужик!
Про английский: при массовой замене 'copying left elements' получилось 'copying right elements'. Надо было использовать синоним: copying the remaining elements'.
Два в степени N, бро!
Cпасибо
Хотелось увидеть вашу реализацию quick. Ну и на этом большое спасибо!
тут смотрел? ua-cam.com/video/1cKvMZOJeeE/v-deo.html
@@BrownAleksя уже сделал давно)
Про Карацубу: математики это страшные люди. :) Жаль, я не любил математику и изобретал логикой. Когда у меня была задача умножать очень длинные числа, не влезающие в разрядность, я решил использовать нечто вроде BCD. При умножении двух чисел любой длинны N, будет не более 9 умножений длинного числа на простое одноразрядное число, не более N сдвигов и N сложений. Т.е. при умножении поразрядно (в столбик), один раз умножив на любую цифру, а их всего не более 9 (ноль просто выбрасываем, оно ничего не даёт), запоминаем полученное число, и когда оно вновь встретится в множителе, уже не надо умножать, а сдвинуть на позицию текущего разряда сохранённое число. :)
и главное так решая на бумаге и делаю, но при программировании это не кажется очевидным
Скажите, пожалуйста, как я могу узнать о графике прямых трансляций?
Вроде каждая среда в 9:00
среда 9:00 осталось еще 5 лекций (вроде, насколько я понимаю план на гитхабе)
Не надо обижать глобальные переменные - они очень нужны: конфигурация, флаги синхронизации, управление аппаратурой, управление памятью, корень или список потоков и т.п. А, если уж делать процедуру для многопоточной системы, не оформляя её как поток или как объект, то должна быть процедура управления ей, в которой как раз локальные переменные создаются, а не в main лепить или заставлять пользователя ненужный ему буфер предоставлять и передавать какие-то ненужные ему начальные значения, или оставлять их по умолчанию, переживая правильно ли так. :) Нужна точка входа, само тело рекурсивной функции для этого не подходит, ибо вычислять - это хорошо, но часто необходимо управлять какой либо аппаратурой, не только выделять ресурсы, но и проверять их наличие и готовность при входе.
И ещё небольшое предостережение. Стек не резиновый, он не имеет виртуализации, его ОС в свап не сбросит, класть в него буфер не очень хорошо, лучше брать память из кучи, а в стеке держать лишь указатель на выделенную память.
К слову, в Паскале локальные переменные процедуры видны во вложенной процедуре. Размещённая в стеке локальная переменная в запускающей процедуре будет видна во всех вызываемых, в т.ч. и тех, которые сами себя будут рекурсивно вызывать. А передавать данные можно как по ссылке с возможностью или запретом их изменять внутри процедуры, так по значению. Стройность языка. :)
как не крути, но глобальные переменные реально зло, они нужны чтобы быстро збацать что-то не задумываясь об архитектуре вот и все. А если в продакшине у вас до сих пор лежат глобальные переменные, высока вероятность, что вы что-то делаете не так, и это не мое мнение, титаны кодинга об этом говорят уже не первое десятилетие. Я бы еще понял их применение для чего-то мега-специфического, но не для таких вещей как конфиги, для этого придуманы серьезные контракты, типа dependency injection и тд.
На счет аргументов функции permutations, согласен. На выходе как-то убого получилось, если мне дают функцию которая перебирает варианты чисел, зачем мне знать ее внутренности? Конечному пользователю (да и самому для будущего) знать сколько нужно перебрать, более чем достаточно, дальше как вы и сказали, permutations вызывает какую-то заглушку, аля шаблон фасада, который сам передаст buffer и current, тем самым скроет сложность первичной функции.
Все эти придирки только показывают, что мы программисты, а не физики )). Не забываем, что Тимофей учит физиков, а не программистов, там уже совсем другой подход. Сами если захотят, то прочитают пару толстых книг и закроют все эти вопросы.
чтото я за эту лекцию не припомню ни одного фирменного "короче"
Спасибо большое за модерацию!
Писал, писал, но всё куда-то исчезло, как вчера исчезла папка "Поток18 "Безпредельность Восприятия" с Рабочего стола. Благодарю, у такого Учителя помолодел с 75 лет паспортных, 60 лет биологических до 18 лет духовных. Оказывается дистанционное обучение у меня получилось "Воспоминание о Прошлом ради Будущего" как омолаживающая геронтологическая процеДУРА. СпасибоГ и ПервоТворец-Абсолют нашей Вселенной, это пока. Но если Питон -Змей соединить с практикой физика Глэшоу, то в 2025 году на нём заползём в гекса-ячейку соседней Вселенной, чтобы залезть на Древо Добра и Зла, ожидая Адама и Еву соседских! Благодарю Тимофея, похоже он из 6-ой Расы Боголюдей...
Int16_t это когда ты не приходишь на 3 лекцию
преподаватель запутался с методом карацубы много ошибок
Int16_t это когда ты не приходишь на 3 лекцию