я мечтаю найти в сети большой практикум по функциональному программированию. Пока не нашёл. Нужны СОТНИ задач и примеров - тема специфическая и востребованная, но пока никем не покрыта
Тимур, будь добр, расскажи доступно про Symbol, пожалуйста, с примерами. Часто спрашивают на собесах, но в реальных задачах юзкейсов у меня, например, нет за много времени и трудно въехать, что это, как и для чего оно действительно надо, в каких кейсах. Спасибо!
function fibonachi(n) { let resultArr = [0, 1]; let first = 0, second = 1; for (let i = 0; i < n; i++) { let next = first + second; first = second; second = next; resultArr.push(next) } console.log(resultArr); // [0, 1, 1, 2, 3, 5, 8, 13] } fibonachi(6)
Тимур, я не знаю помнишь ты или нет, но я с тобой с 200-300 подписчиков, и хочу сказать, что качество контента заметно выросло, даже не в плане звука или видео, а в целом, раскрываемые темы, подача, обложки роликов, твой контент приятно смотреть, даже если тема, которую ты просвещаешь уже знакома, открывая каждый ролик я всегда знаю, что будет полезно. Думаю со мной многие согласятся, соотношение лайков/дизлайков на видео об этом говорит
07:25 *Задача на понимание замыканий\колбеков* Это классическая задача на понимание функциональной парадигмы программирования. А именно композиции функций. *Решение автора видео является примером того как делать нельзя* Тем более нельзя такой код приводить как пример для других. *Пример решения близкий к оптимальному* { // _Создаем абстракцию нечто, которая знает только о себе_ const thing = ( t ) => t; // _Создаем абстракцию Тип Нечто, которая определяет логику поведения если она задана, или возврашает абстракцию thing_ const typeThing = ( ( t ) => ( a = thing ) => a( t ) ); // _Определяем абстракции для примитивных значений от 0 до 9_ const [ zero, one, two, three, four, five, six, seven, eight, nine ] = ( [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] .map( typeThing ) ); // _Определяем абстракцию для операции сложения_ const plus = ( ( p1 ) => ( p2 ) => p1 + p2 ); // _Определяем абстракцию для операции вычитания_ const minus = ( ( p1 ) => ( p2 ) => p1 - p2 ); // _Пример композиции абстракций_ 4 + ( 5 - ( 2 + ( 3 ) ) ) console.log( four( plus( five( minus( two( plus( three( ) ) ) ) ) ) ) ); } *Автору видео домашнее задание* Во первых, научиться постоянно себе задавать вопрос - а правильно ли я делаю. Во вторых модифицировать код что выше так, чтобы абстракции для plus minus, которые сейчас имеют свое уникальное определение, стали частью цепочки создания для абстракций работающих с примитивными значениями.
@@leopold3146 Я абсолютно согласен с Вами в той части, где Вы ставите акцент на доступности материала для целевой группы. При этом, я хочу сделать важный акцент - я настаиваю на том, что в случае осваивания такой специальности как программирование, минимальный уровень (порог), который бы считался достаточным для программиста, был хотя-бы на том примитивном уровне, о котором заявляю я. Иначе говоря, я настаиваю на том, что преподавание материала уровнем ниже - это не только не достаточно для специальности, но и унижение человеческого достоинства. Такого мнения я придерживаюсь.
@@demimurych1 Не утрируйте! Большая часть кодинга вовсе не требует таких сложных логических механизмов, и изучающим любой язык надо с чего-то начинать. По-хорошему, этот пример из-за своей сложности вообще не должен был присутствовать в первом видео из серии, но автора канала, претендующего на звание образовательного для начинающих, постоянно заносит в излишне густые дебри функционального программирования.
Держите итеративный метод для Фибоначи без хардкода на первые значения: function fibonachi (n) { let prev = 1 let res = 0 for (let i = 0; i < n; i++) { let r = prev + res prev = res res = r } return res }
Задача с деревом через reduce и рекурсию) function treeSum(tree) { return tree.reduce((acc, node) => acc += node.c ? node.v + treeSum(node.c) : node.v, 0); }
Ааа! Как вовремя! Я ещё не начала смотреть, но уже лайк и благодарность. Как раз готовлюсь к собеседованию. Пересмотрела раза 4 ролик по алгоритмам и структурам данных.. расстраивалась, что нет ещё на тему побольше практических. А тут такой подкат. Класс
@@UlbiTV Спасибо тебе. (Надеюсь, это не слишком фамильярно)) Ну что ж, не без твоей помощи в том числе, я прошла все собесы и получила работу. Обсуждается дата выхода. Тем временем, открываю папочку node js на твоём канале. Я давно не Джун, но есть темы, в которых плаваю. Ты делаешь классное дело. Особенно для тех, кто знает зачем и что ему нужно, и ищет способ быстро начать ориентироваться в теме, чтобы понимать куда и как копать дальше.
Мое решение задачи на уникальные элементы массива. Причем оно ещё учитывает типы, то есть "5" и 5 - разные элементы const uniqArr = arr =>{ const hash = arr.reduce((acc, cur) => { acc.set(cur, (acc.get(cur) || 0) + 1) return acc }, new Map()) return Array.from(hash.keys()).filter(el => hash.get(el) == 1) }
Очень круто! Давай еще роликов по алгоритмам и задачкам с кодеворс не перестаю восхищаться твоими роликами! Подача просто Идеальная! для меня как минимум!
С периметром задача интересная, пришлось даже минут 40 потратить, часть из которых думал, как вообще посчитать этот периметр, даже на листке нарисовал разные варианты :) В решении сделал нормальную матрицу, заменив буквы O на нули для того, чтобы Boolean(0) возвращал false. function perimeter(matrix) { const grid = []; for (let i = 0; i < matrix.length; i++) { let current = []; for (let symbol of matrix[i]) { current.push( symbol === 'O' ? 0 : symbol ); } grid.push(current); }
const rows = grid.length; const cols = grid[0].length; let result = 0; function getPartialPerimeter(r, c, result) { if (grid[r][c] === 1) return 0; grid[r][c] = 1; result += grid[r - 1]?.[c] ? getPartialPerimeter(r - 1, c, 0) : 1; result += grid[r + 1]?.[c] ? getPartialPerimeter(r + 1, c, 0) : 1; result += grid[r][c - 1] ? getPartialPerimeter(r, c - 1, 0) : 1; result += grid[r][c + 1] ? getPartialPerimeter(r, c + 1, 0) : 1; return result; } for (let r = 0; r < rows; r++) { for (let c = 0; c < cols; c++) { if (grid[r][c] === 'X') { result += getPartialPerimeter(r, c, 0); } } } return result; } P.S. Нашел эту задачу на codewars (Land perimeter), но для нее решение пришлось чуть переделать, так как codewars не воспринимает опциональную цепочку ?. Поменял эти 3 строчки и название функции. result += grid[r - 1] && grid[r - 1][c] ? getPartialPerimeter(r - 1, c, 0) : 1; result += grid[r + 1] && grid[r + 1][c] ? getPartialPerimeter(r + 1, c, 0) : 1; return "Total land perimeter: " + result; // по условию надо возвращать строку
Задачу Фибоначчи, в зависимости от ограничений, необходимо было решать с использованием мемоизации. Иначе, ваше рекурсивное решение сказало бы "пока" при N == 30+.
вот такую задачку мне дали как тестовое задание, зачем то на реакте , сможешь решить => На входе: Взвешенный граф в виде JSON-файла (точки/ноды и соединения между ними с указанием веса) Интерфейс: Два селектора с указанием начальной и конечной точек маршрута На выходе: Список точек маршрута между начальной и конечной точками и общий вес маршрута.
Интересно, жду ещё! На замыкания/колбэки 7:25 была самая занимательная, подумал над ней минут 20, решил таким же способом, но у тебя намного лаконичнее вышло без TS и моего длинного нейминга переменных)
11:02 третья задача Когда мы вызываем one(plus(three())), происходит следующее: 1. three() возвращает 3. 2. Затем plus вызывается с аргументом 3, что приводит к возврату стрелочной функции (b) => 3 + b. 3. Теперь функция one вызывается с этой стрелочной функцией в качестве аргумента callback. 4. Внутри функции one, callback(1) вызывает созданную внутри plus стрелочную функцию с аргументом 1. 5. Таким образом, a в этой стрелочной функции равно 3, а значение 1 передается как b. 6. В результате выполнения 3 + 1 получаем 4.
Огонь, то, что нужно, спасибо большое. Ещё было бы здорово, если бы было побольше практических задач. Например мне нужно было написать сегодня слайдер-свайпер для мобильных устройств. И там оказалось всё не так тривиально, как сразу можно подумать. Вот такие вот задачи и подобные ей на работу с нативным js и DOM были бы тоже очень интересны )
Вот вроде говоришь о сложности алгоритмов и забываешь упомянуть, что у такого рекуррентного нахождения числа фибоначчи оно экспоненциальное и так писать опасно для здоровья
Про число Фибоначчи, можно конечно обычным способом(через рекурсию допустим), но если надо быстро, есть матричный способ, он быстрее но на порядок сложнее
Отличный контент! Ребята, может подкинете какие то плюс минус не тривиальные идеи для пет проекта на стронг джуна? задумываюсь о смене работы, а гитхаб покаместь пустой
Сделай приложение для финансов. Только не стандартное, а с планированием расходов/доходов: есть разные типы расходов (месячные/недельные/ежедневные/разовые/периодические), есть разные типы доходов (ЗП/разовый/фиксированный за период). Есть текущее состояние счета. И все это вместе считается за период для каждого дня. Если где-то ниже 0 остаётся по деньгам, приложение должно об этом говорить. У меня просто давно возникла такая идея, просто у меня другой основной пет-проект и я не готов писать ещё один. Если будет интересно, скинь ссылку на gh - может, буду пользоваться, если реализуешь)
Отличное видео. Еженедельную рубрику давай, с задачками с CodeWars. Уверен, что плейлист будет популярен для джунов(вроде меня) да и просто любителей задачек. И вопрос по задачке, почему в 6-й не пройтись по ключам обьекта, ведь значений там будет меньше чем в проверяемом массиве?
3я оч красивая, только для минуса Вы забыли поменять аналогично делению местами a и b (мне кажется ещё правильнее переименовать a в b и наоборот, чтобы a традиционно обозначало левый, а b правый операнды)
Тимур, пора тебе понять, что твоим подписчикам любой формат заходит! ))) Лайк - это просто дефолтное поведение после выхода ролика)) Лично для себя жду следующие темы: - Подготовка к бэкэнд-собеседованию, по аналогии с уже имеющимся видео про фронт; - Двухфакторная авторизация с подтверждением по почте/телефону; - Аутентификация с помощью сторонних апи, типа гугла или фейсбука; - Оплата на сайте. И отдельная просьба как от жителя Украины: если что-то из этого будешь делать, то не используй, пожалуйста, Яндекс и Мэйл, у нас они под санкциями.
Задачку на поиск непарного числа можно решить через xor, без доп памяти const findNum = (arr) => arr.reduce((acc, next) => { if(!acc) return next return next ^ acc })
Спасибо за видео и проделанную работу! Побольше таких видео с задачками делай, они полезны каждому программисту, как новичку так и нет для практики я считаю.
function norepeat(data) { const arr = data.sort() const result = [] for (let i = 0; i < arr.length; i++) { if (arr[i] != arr[i+1]) { result.push(arr[i]) } while (arr[i] == arr[i+1]) { arr.splice(i,1) } } return result }
Если будет хорошая активность, то сделаю видос с задачами посложнее :)
я мечтаю найти в сети большой практикум по функциональному программированию. Пока не нашёл. Нужны СОТНИ задач и примеров - тема специфическая и востребованная, но пока никем не покрыта
Лев
Тимур, будь добр, расскажи доступно про Symbol, пожалуйста, с примерами.
Часто спрашивают на собесах, но в реальных задачах юзкейсов у меня, например, нет за много времени и трудно въехать, что это, как и для чего оно действительно надо, в каких кейсах. Спасибо!
батя как всегда радует, спасибо за видос, можешь готовить уже посложнее ))
Хотелось бы увидеть сложные алгоритмы по типу шашек или авто выстраивания пазла по алгоритму дэйкстры)
О, долгожданный видос, лайк перед просмотром
Благодарочка ;)
Улыбка на лице возникает моментально , когда вы выкладываете новый видос!
А у меня улыбка от ваших комментариев ;)
Задачки с codewars - это куруто ! )
Согласен))
function fibonachi(n) {
let resultArr = [0, 1];
let first = 0, second = 1;
for (let i = 0; i < n; i++) {
let next = first + second;
first = second;
second = next;
resultArr.push(next)
}
console.log(resultArr); // [0, 1, 1, 2, 3, 5, 8, 13]
}
fibonachi(6)
Тимур, я не знаю помнишь ты или нет, но я с тобой с 200-300 подписчиков, и хочу сказать, что качество контента заметно выросло, даже не в плане звука или видео, а в целом, раскрываемые темы, подача, обложки роликов, твой контент приятно смотреть, даже если тема, которую ты просвещаешь уже знакома, открывая каждый ролик я всегда знаю, что будет полезно. Думаю со мной многие согласятся, соотношение лайков/дизлайков на видео об этом говорит
Я всех «старичков» помню) тех, кто оставляет комментарии не так уж и много осталось :) спасибо! Стараюсь улучшать контент, рад, что замечаете)
07:25 *Задача на понимание замыканий\колбеков*
Это классическая задача на понимание функциональной парадигмы программирования. А именно композиции функций.
*Решение автора видео является примером того как делать нельзя*
Тем более нельзя такой код приводить как пример для других.
*Пример решения близкий к оптимальному*
{
// _Создаем абстракцию нечто, которая знает только о себе_
const thing = ( t ) => t;
// _Создаем абстракцию Тип Нечто, которая определяет логику поведения если она задана, или возврашает абстракцию thing_
const typeThing = (
( t ) =>
( a = thing ) =>
a( t )
);
// _Определяем абстракции для примитивных значений от 0 до 9_
const [ zero, one, two, three, four, five, six, seven, eight, nine ] = (
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
.map(
typeThing
)
);
// _Определяем абстракцию для операции сложения_
const plus = (
( p1 ) =>
( p2 ) =>
p1 + p2
);
// _Определяем абстракцию для операции вычитания_
const minus = (
( p1 ) =>
( p2 ) =>
p1 - p2
);
// _Пример композиции абстракций_ 4 + ( 5 - ( 2 + ( 3 ) ) )
console.log(
four(
plus(
five(
minus(
two(
plus(
three( )
)
)
)
)
)
)
);
}
*Автору видео домашнее задание*
Во первых, научиться постоянно себе задавать вопрос - а правильно ли я делаю.
Во вторых модифицировать код что выше так, чтобы абстракции для plus minus, которые сейчас имеют свое уникальное определение, стали частью цепочки создания для абстракций работающих с примитивными значениями.
Аудитория этого канала в подавляющем большинстве - только начинающие изучать программирование, им до таких высоких материй пока далеко
@@leopold3146 Я абсолютно согласен с Вами в той части, где Вы ставите акцент на доступности материала для целевой группы. При этом, я хочу сделать важный акцент - я настаиваю на том, что в случае осваивания такой специальности как программирование, минимальный уровень (порог), который бы считался достаточным для программиста, был хотя-бы на том примитивном уровне, о котором заявляю я.
Иначе говоря, я настаиваю на том, что преподавание материала уровнем ниже - это не только не достаточно для специальности, но и унижение человеческого достоинства.
Такого мнения я придерживаюсь.
@@demimurych1 Не утрируйте! Большая часть кодинга вовсе не требует таких сложных логических механизмов, и изучающим любой язык надо с чего-то начинать. По-хорошему, этот пример из-за своей сложности вообще не должен был присутствовать в первом видео из серии, но автора канала, претендующего на звание образовательного для начинающих, постоянно заносит в излишне густые дебри функционального программирования.
Только сегодня задумался о CW, как там что и чего. Годный контент. Не глядя - жирный лайк !!!
Спасибо друг:)
Держите итеративный метод для Фибоначи без хардкода на первые значения:
function fibonachi (n) {
let prev = 1
let res = 0
for (let i = 0; i < n; i++) {
let r = prev + res
prev = res
res = r
}
return res
}
Ай как нужно такое! Плиз еще подобные видео! Автор - молодец!
Спасибо :)
Очень интересный формат ! Спасибо ! JavaScript,CodeWars.
Благодарю
Красавец!
Like! Больше инфы о алгоритмах и расчета их сложности пожалуйста)
Спасибо!
Очень интересно, продолжай!
Задача с деревом через reduce и рекурсию)
function treeSum(tree) {
return tree.reduce((acc, node) => acc += node.c ? node.v + treeSum(node.c) : node.v, 0);
}
Решил почти аналогично)✌️
function treeSum(tree) {
return tree.reduce((sum, { v, c }) => sum + v + (c ? treeSum(c) : 0), 0);
}
Благодарю!
Огонь! Спасибо за видео!
Супер!
Ааа! Как вовремя! Я ещё не начала смотреть, но уже лайк и благодарность. Как раз готовлюсь к собеседованию. Пересмотрела раза 4 ролик по алгоритмам и структурам данных.. расстраивалась, что нет ещё на тему побольше практических. А тут такой подкат. Класс
Спасибо! Успехов!)
@@UlbiTV Спасибо тебе. (Надеюсь, это не слишком фамильярно)) Ну что ж, не без твоей помощи в том числе, я прошла все собесы и получила работу. Обсуждается дата выхода. Тем временем, открываю папочку node js на твоём канале.
Я давно не Джун, но есть темы, в которых плаваю.
Ты делаешь классное дело. Особенно для тех, кто знает зачем и что ему нужно, и ищет способ быстро начать ориентироваться в теме, чтобы понимать куда и как копать дальше.
@@djailinvasu не представляешь, насколько я радуюсь, когда получаю подобные комментарии :) очень рад, успехов на новом месте работы!
Мое решение задачи на уникальные элементы массива. Причем оно ещё учитывает типы, то есть "5" и 5 - разные элементы
const uniqArr = arr =>{
const hash = arr.reduce((acc, cur) => {
acc.set(cur, (acc.get(cur) || 0) + 1)
return acc
}, new Map())
return Array.from(hash.keys()).filter(el => hash.get(el) == 1)
}
как всегда на высоте
Спасибо огромное! Жду продолжение!
Очень круто! Давай еще роликов по алгоритмам и задачкам с кодеворс
не перестаю восхищаться твоими роликами! Подача просто Идеальная! для меня как минимум!
Стараюсь друг! Спасибо! Рад слышать!
Завтра у меня собес в Яндексе на джуна, этап алгоритмы. Очень вовремя ты снял это видео!
Серьезное дело) успехов!
прошел?
Всегда интересно посмотреть на решение задачи со стороны
Круто
Супер. Давай больше подобных!
это лайк!
Спасибо за все , что вы делаете для своих преданных зрителей !
Спасибо!)
отличный формат
Офигеть, такого материала почти не встретишь в ютубе :)
++активность для задач посложнее)
Это самое крутое ) спасибо
✊🏻✊🏻
Спасибо тебе за такой видос брат, нужно выводить в топ твои видосы✊🏽✊🏽
✊🏻✊🏻✊🏻
Это верно!
Как всегда топовые видосы!!! Респект
Благодарю;)
Огонь 🔥. Так держать.
Спасибо за такие видосы! Очень полезно в обучении и закреплении!
Стараюсь )
Спасибо за видос! пили ещё видео, очень полезно!
Круто,лайк и комент!!
Как всегда качественно и без воды, спасибо
Спасибо!)
Отличный формат! Сам дальше 7kui пока не могу пробить
Отличный формат) я только за ✊✊✊
Учту!)
С периметром задача интересная, пришлось даже минут 40 потратить, часть из которых думал, как вообще посчитать этот периметр, даже на листке нарисовал разные варианты :)
В решении сделал нормальную матрицу, заменив буквы O на нули для того, чтобы Boolean(0) возвращал false.
function perimeter(matrix) {
const grid = [];
for (let i = 0; i < matrix.length; i++) {
let current = [];
for (let symbol of matrix[i]) {
current.push( symbol === 'O' ? 0 : symbol );
}
grid.push(current);
}
const rows = grid.length;
const cols = grid[0].length;
let result = 0;
function getPartialPerimeter(r, c, result) {
if (grid[r][c] === 1) return 0;
grid[r][c] = 1;
result += grid[r - 1]?.[c] ? getPartialPerimeter(r - 1, c, 0) : 1;
result += grid[r + 1]?.[c] ? getPartialPerimeter(r + 1, c, 0) : 1;
result += grid[r][c - 1] ? getPartialPerimeter(r, c - 1, 0) : 1;
result += grid[r][c + 1] ? getPartialPerimeter(r, c + 1, 0) : 1;
return result;
}
for (let r = 0; r < rows; r++) {
for (let c = 0; c < cols; c++) {
if (grid[r][c] === 'X') {
result += getPartialPerimeter(r, c, 0);
}
}
}
return result;
}
P.S. Нашел эту задачу на codewars (Land perimeter), но для нее решение пришлось чуть переделать, так как codewars не воспринимает опциональную цепочку ?.
Поменял эти 3 строчки и название функции.
result += grid[r - 1] && grid[r - 1][c] ? getPartialPerimeter(r - 1, c, 0) : 1;
result += grid[r + 1] && grid[r + 1][c] ? getPartialPerimeter(r + 1, c, 0) : 1;
return "Total land perimeter: " + result; // по условию надо возвращать строку
Ничего не понял НО очень интересно!
Супер)))))))))) еще давай))))))
Задачу Фибоначчи, в зависимости от ограничений, необходимо было решать с использованием мемоизации. Иначе, ваше рекурсивное решение сказало бы "пока" при N == 30+.
Хороший канал, очень помог мне! Лайк!
Спасибо!
function fib(n) {
if (n < 1) {
return 0
}
if (n
Очень круто!
Спасибо!
вот такую задачку мне дали как тестовое задание, зачем то на реакте , сможешь решить =>
На входе:
Взвешенный граф в виде JSON-файла (точки/ноды и соединения между ними с указанием веса)
Интерфейс:
Два селектора с указанием начальной и конечной точек маршрута
На выходе:
Список точек маршрута между начальной и конечной точками и общий вес маршрута.
это на позицию junior такая задача?
@@ДмитрийНормов-ю6ц да
Проявляю активность)
Очень понравился, спасибо мужик!
Благодарю;)
Спасибо, очень круто объясняешь, понял все сказанное. Ещё раз огромное спасибо, был бы рад подобным видео у тебя на канале
Спасибо друг:)
Отличный видос, ждем еще
Тема интересная!!
Развернутое объяснение каждой задачи, интересно слушать , вникать. Будет здорово увидеть продолжение 🔥
Интересно, жду ещё! На замыкания/колбэки 7:25 была самая занимательная, подумал над ней минут 20, решил таким же способом, но у тебя намного лаконичнее вышло без TS и моего длинного нейминга переменных)
Спасибо!) да, прикольная задачка)
Спасибо за такие полезные видео. Хочется увидеть, что же там в задачах посложнее.
Формат отличный!
Интересно было бы помотреть на 1-3 kata
Супер, больше таких разборов. На отметке 11 мин там где минус необходимо тоже поменять местами( b - a) как и в делении.
Тимур, продолжай!! Любая практика поможет мне в трудоустройстве, я стараюсь каждый день по задаче решать
как успехи?)
шикарный формат, можно ещё?)))
люблю задачки )
Спасибо, очень полезно
офигеть совпадение, как раз на codewars решаю задачку 4kyu
успехов!
Спасибо тебе, дальнейших успехов!
11:02 третья задача
Когда мы вызываем one(plus(three())), происходит следующее:
1. three() возвращает 3.
2. Затем plus вызывается с аргументом 3, что приводит к возврату стрелочной функции (b) => 3 + b.
3. Теперь функция one вызывается с этой стрелочной функцией в качестве аргумента callback.
4. Внутри функции one, callback(1) вызывает созданную внутри plus стрелочную функцию с аргументом 1.
5. Таким образом, a в этой стрелочной функции равно 3, а значение 1 передается как b.
6. В результате выполнения 3 + 1 получаем 4.
Спасибо большое! Очень интересно 😌
Интересные задачки, правда не представляю где их встретить можно.
Задачи не встретятся в реальных проектах, но благодаря им (задачам), ты научишься решать быстрее реальные проблемы.
Топово
Огонь, то, что нужно, спасибо большое.
Ещё было бы здорово, если бы было побольше практических задач. Например мне нужно было написать сегодня слайдер-свайпер для мобильных устройств. И там оказалось всё не так тривиально, как сразу можно подумать. Вот такие вот задачи и подобные ей на работу с нативным js и DOM были бы тоже очень интересны )
Тоже постоянно вожусь с этим свайпером, но с каждым разом всё лучше получается)
Спасибо! Учту!
Спасибо огромное за контент👍
Сделай видео про jwt token и когда вызывать функцию refresh в React , а то в интернете ничего годного нет) Нравиться что делаешь, красавчик)
Ролик хороший, жду продолжения! задачи это всегда круто, интересно смотреть как их решает кто то еще
Интересно
было бы не плохо если бы ты говорил перед началом задачи какого ранга(kyu) данная задача
6-8 если не ошибаюсь, легкие задачки
@@UlbiTV Го сложнее. Слишком простые задачки.
@@ПавелЮлианов согласен
Сейчас бы Фибоначчи решать рекурсивно за 2^n, когда итеративный подход требует O(n)
Спасибо! Подача - кайф! Продолжай!
Вот вроде говоришь о сложности алгоритмов и забываешь упомянуть, что у такого рекуррентного нахождения числа фибоначчи оно экспоненциальное и так писать опасно для здоровья
Согласен, стоило бы сказать
Поскорее бы залететь попробовать) Постоянно смотрю твои видосы и наверное вот скоро влечу разок)
Спасибо дружище! Хороший ролик, что бы понимать как решать задачи на codewаrs!!! Успехов!!!
Про число Фибоначчи, можно конечно обычным способом(через рекурсию допустим), но если надо быстро, есть матричный способ, он быстрее но на порядок сложнее
Отличный контент! Ребята, может подкинете какие то плюс минус не тривиальные идеи для пет проекта на стронг джуна? задумываюсь о смене работы, а гитхаб покаместь пустой
Сделай приложение для финансов. Только не стандартное, а с планированием расходов/доходов: есть разные типы расходов (месячные/недельные/ежедневные/разовые/периодические), есть разные типы доходов (ЗП/разовый/фиксированный за период). Есть текущее состояние счета. И все это вместе считается за период для каждого дня. Если где-то ниже 0 остаётся по деньгам, приложение должно об этом говорить. У меня просто давно возникла такая идея, просто у меня другой основной пет-проект и я не готов писать ещё один. Если будет интересно, скинь ссылку на gh - может, буду пользоваться, если реализуешь)
@@sovaz1997 Спасибо за идею! буду приступать. Под лежачий камень вода не идет)
@@killbeat4488 :) Главное, чтобы нравилось ;)
Спасибо огромное за видео. Ты очень помогаешь.
Здравствуй Тимур, отличный контент, ГОДЕН, давай по сложнее)
*Л. а. й. к.*
Спасибо дружище!) жду твои комменты))
Предельно полезное видео, из одной только задачи про замыкания узнал уйму полезной инфы, спасибо!!!
Отличное видео. Еженедельную рубрику давай, с задачками с CodeWars. Уверен, что плейлист будет популярен для джунов(вроде меня) да и просто любителей задачек.
И вопрос по задачке, почему в 6-й не пройтись по ключам обьекта, ведь значений там будет меньше чем в проверяемом массиве?
3я оч красивая, только для минуса Вы забыли поменять аналогично делению местами a и b (мне кажется ещё правильнее переименовать a в b и наоборот, чтобы a традиционно обозначало левый, а b правый операнды)
Спасибо!!
Топ! Ждём новые видосы с задачами!
function Palindrome(str) {
return str === str.split('').reverse().join('');
}
Хоть 1 задача про Фибоначчи типо простая, но если заранее не знать алгоритм действий фиг допрешь до такой рекурсии
Если зависит только от Алмаса , Алмас разрешает продолжать)
👍👍😂😂
Хочу продолжение
Тимур, пора тебе понять, что твоим подписчикам любой формат заходит! ))) Лайк - это просто дефолтное поведение после выхода ролика)) Лично для себя жду следующие темы:
- Подготовка к бэкэнд-собеседованию, по аналогии с уже имеющимся видео про фронт;
- Двухфакторная авторизация с подтверждением по почте/телефону;
- Аутентификация с помощью сторонних апи, типа гугла или фейсбука;
- Оплата на сайте.
И отдельная просьба как от жителя Украины: если что-то из этого будешь делать, то не используй, пожалуйста, Яндекс и Мэйл, у нас они под санкциями.
Ой спасибо дружище) рад слышать) про авторизацию готовлю видео) с платежкой тоже будет, но попозже)
вот это реально очень надо ))
Задачку на поиск непарного числа можно решить через xor, без доп памяти const findNum = (arr) => arr.reduce((acc, next) => {
if(!acc) return next
return next ^ acc
})
Спасибо за видео и проделанную работу!
Побольше таких видео с задачками делай, они полезны каждому программисту, как новичку так и нет для практики я считаю.
Контент топ!
function norepeat(data) {
const arr = data.sort()
const result = []
for (let i = 0; i < arr.length; i++) {
if (arr[i] != arr[i+1]) {
result.push(arr[i])
}
while (arr[i] == arr[i+1]) {
arr.splice(i,1)
}
}
return result
}