Telegram Web Link
Ребя, привет.
Пара слов о решениях к задачам по алгоритмам. Все эти решения являются сугубо моим "творчеством", поэтому они не претендуют на истину в последней инстанции. Если вы нашли ошибку или знаете более оптимальное решение для задачи, то буду рад обратной связи.
По всем вопросам: @albert_davletov
Ребя, привет. Начал получать от вас фидбек и очень рад этому. Спасибо :)
Например, @badamshin прислал нам свою реализацию алгоритма проверки уникальных символов в строке. За что ему огромное спасибо и +100 в карму. Не стесняйтесь и присылайте мне ваши варианты решений или новые интересные задачи. Обязательно опубликуем их и разберем.
Новые вариации решений задачи на сжатие строки. Эти решения нам снова прислал @badamshin (респект бро).
Первое решение основано на использовании крутой функции reduce в JS, второе решение использует регулярные выражения. Итак, поехали !
http://telegra.ph/Task-13-1-Szhatie-stroki-10-01
Ребя, еще пара слов о решениях алгоритмических задач.
Я стараюсь меньше использовать каких то конкретных фишек языка программирования, а показать решение именно алгоритмической задачи. Разумеется многие задачи можно решать буквально в пару строк кода, используя что то из возможностей языка или фреймворка. Многие решения я публикую на JS, просто потому что их можно делать на коленке в любом браузере и там же тестировать. Надеюсь вы меня поняли :)
Ребя, еще пара слов о задачках по алгоритмам.

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

Напоследок, кидаю требования к позиции разработчика в яндексе.
Хочу заметить алгоритмы идут почти на первом месте в списке требований. Отдельное спасибо за ссылку: @badamshin
https://www.yandex.ru/jobs/frontend-interview
Анонс задачи: Как работает банкомат ?

Требуется выдать запрошенную сумму купюрами в рублях начиная от более крупных к более мелким.
Купюры существуют 50 руб, 100 руб, 500 руб, 1000 руб, 5000 руб.
Если выдать данную сумму нельзя — вывести «Введена неверная сумма»

Усложнение: выдать сумму если число купюр ограничено (вводится дополнительные входные данные — количество доступных купюр каждого номинала).
[ { value: 5000, count: 10 },
{ value: 1000, count: 10 },
{ value: 500, count: 10 },
{ value: 100, count: 10 },
{ value: 50, count: 10 }]

Ещё довольно мощное усложнение: как разрулить ситуацию, когда стандартная стратегия выдачи купюр (сначала крупные, потом мельче) не работает?
Например, введем банкноту номиналом 30 рублей, надо выдать 120 рублей.
Если идти от крупных, то не получится (100р. + 20р., а "20р." банкноты нет), но если выдать 4 * 30 рублей, то всё получится.

Входные данные - число для выдачи
Выходные данные - сумма в купюрах или фраза "Введена неверная сумма"
12 руб -> Введена неверная сумма
1250 руб -> 1x1000 2x100 1x50

P.S Попробуйте решить самостоятельно, чуть позже я опубликую свое решение :)
@badamshin, Спасибо за предоставленную задачу !
Всем привет 😜
Мне пока никто не прислал решения для задачи про банкомат, поэтому публикую свое :)
Если кто то знает более оптимальную реализацию этой задачи, то присылайте и мы ее обязательно разберем и опубликуем !
Внимание, много букв про алгоритмы и объяснение метода динамического программирования, реализация как обычно на JS.
Поехали !
http://telegra.ph/Task-16-Kak-rabotaet-bankomat-10-05
Кстати, я дублирую код в gist, поэтому вы можете писать свой фидбек там.
Ссылочки вы сможете найти внизу статьи!
Вспомнил простенькую задачку со своего старого интервью :)

Task 17. Поменять значения двух переменных без использования третьей.

1 способ:
a = a + b;
b = a - b;
a = a - b;

2 спобоб, операция XOR:
a = a ^ b;
b = b ^ a;
a = a ^ b;
Дополнение к задаче 18: Вывести непарный элемент в числовом массиве.
Что если непарных элементов больше 1го ?!
Присылайте свои реализациии этой задачи.
Всем хороших выходных !
2025/07/12 19:39:04
Back to Top
HTML Embed Code: