Никогда не думал, что со мной это произойдет, но смотрю видео Александа, не для обучения, а в свободное время, как просто что-то интересное) PS: Контент с задачками по JS и вариантами их решения очень зашел.
Первое решение первой задачи на скале было таким (проверил, компилится) (0 to 100).filter(_ % 3 == 0).length На остальные вещи из жс лучше не тратить время имхо (А вообще решение такое: 100 / 3 + 1 :-) )
Огромное спасибо за видео. От Вас много хорошего и полезного узнал и продолжаю узнавать. к первой задаче можно добавить одно действие и улучшить баланс сохранив читаемость: let count = 0; for (let i = 0; i
Насколько эффективным является такое решение для обмена значений?) if (a < b) { a = a + b; b = a - b; a = a - b; } Или лучше пользоваться решением [a, b] = [b, a] ?
ваше решение более эффективно по памяти, но менее эффективно объему вычислений, а решение с массивами по идее наоборот, плюс более универсальное в плане того что при большем количестве переменных оно будет всё так же элегантно записываться.
Я за второй вариант, потому что сразу и без напряга серого вещества понял что он делает. ПыСы: я всегда рад нововведениям, но для меня главное чтобы код был понятен всем - джунам-мидлам-помидорам
На скале (проверил, все компилится) Если четко следовать условию первой))) def f1() = 34 Если x вместо 100 в первой def f1(x: Int) = x / 3 + 1 Либо же, если ракетой по мухе def f1(x: Int) = (0 to x).filter(_ % 3 == 0).length Вторая def f2(x: Int, y: Int) = (List(x, y).sorted match { case List(a, b) => a to b }).mkString(" ") Можно ли вторую также лаконично на жс написать?
Есть еще миддлы-извращенцы - они на каждый чих создают функции и методы, по названию которых можно понять, что в них происходит, но при этом само тело функции с элементами садомазо. Комменты для новичков, в принципе по названию переменных и функций всё ясно: // функция для создания массива нужной длины с нужным шагом function newArr(l = 100, count = 1) { return Array.from( {length: l+1}, (el, id)=>id*count) } // метод массива для краткой записи фильтра. конечно же не обойтись без строки через eval! Array.prototype.fltr = function (func) { return this.filter(i => eval(func)) } // можем быстро находить кол-во элементов, подходящих для различных условий console.log( newArr().fltr('i%3 === 0').length ) console.log( newArr(1000, 5).fltr('i%20 === 0').length ) console.log( newArr().fltr('i * i < arr.length').length ) ссылка на фиддл: jsfiddle. net/ 56o1j09s/
честно не js разработчик, больше php. Только все больше приходится погружаться в frontend. в первой задаче вопрос: по вашему решению 0 тоже делится на 3, или ответ все-таки 33? Решение один: let count = 0; for (let i = 0; i < 100; i+=3) { count++; } Второй вариант, ведь нам нужно количество чисел. а не сами числа, поэтому зачем обходить по массиву? count = Math.Floor(100/3); или сокращенно ~~(100/3); это если 0 не считать за решение, но +1 добавить не проблема.
Пайтон/скала розраби такі: [0: 100: 3] Ну ладно мені так подобається: Array(34).map((_, i) => i * 3) Але границя не очевидна зато очевидна кількість. А можливо компілятор навіть сам це переведе в цикл.
Я точно немогу сказать к какой категории я отношусь, может джун а может мидл, пишу только для себя, никогда не работал програмистом, знаю С++, С, ПХП, Джаву, Джаваскрипт, немного ХТМЛ и ЦСС, в основном сайты пишу на ПХП, много где использую ДЖеквери, могу сказать только одно, всегда решаю задачу как можно развернутей, а уж после довожу до идеала и максимально оптимизирую, и терпеть не могу обфусцировпнный код, люблю чтоб когда через год, два сиотришь на код было так как будто инструкцию читаешь, так же стараюсь по максимуму все коментировать, опять же когда через время возвращаешься к своему коду то все предельно понятно и знакомо.
А если без +1 то можно округлять в большую сторону и всё) Math.ceil(100/3); Я не программист, но просматриваю иногда видео, что то могу, но не представляю , что делают и как работают программисты. Одно дело задачки, тут всё ясно и понятно, а другое дело в реальной работе посмотреть. Эта неизвестность и пугает.
В первой задаче решение через цикл(понравилось).Вторая задача - прямой обмен(понравилось) честно говоря, не знал что так можно, делал бы через доп. переменную.
let count = 0; for (let i = 0; i < 100; i++) { if (i % 3 !== 0) { continue } count += 1 //считаем сколько чисел console.log(i); //все числа кратные 3 } console.log(count); норм?(не смотрел видос)
Здравствуйте. Существуют ли способы научиться программировать? Уточню вопрос. Я уже учу Js и React. Если с манипуляциями DOM более менее понятно что да как. То вот подобные математические задачи у меня вызывают дикие проблемы. И чет страшновато данное непонимание. Ибо грустновато будет если из за плохой математической базы не получится хотя б в вебдев влиться.
Так из условия нам нужно найти числа, а не найти количество этих чисел. И никакой счетчик не нужен. Выводить просто в самом цикле эти числа или пушить в пустой(изначально) массив нужные значения. К слову, я бы при решении такой задачи создал бы отдельную функцию, которая бы принимала в себя значения от, до и число, кратное которому нужно найти числа и возвращала бы эта функция массив с нужными значениями. Но опять-таки исходя из практической точки зрения, если такая универсальность вообще нужна. Если нет, то можно указать ещё параметры по умолчанию, которые будут работать при обычном вызове или вовсе убрать параметры и сделать уже по статическим цифрами и тогда назвать функцию соответствующим образом.
Вы описали почему a лучше b (хотя очень кратко, есть целые книги и не одна на эту тему), но вы не обьяснили для чего тогда b. П.С. a. читаемость кода b. новые конструкции языка И эта тема настолько ничтожно мало касаема в этом видео, что помимо этого видео (если уже так хотелось затронуть эту тему) в конце лучше список книг сказать (например для начала Чистый код подойдет).
найс, фп-шечка всегда сложно, потому что заставляет мыслить так как мы не привыкли, первый пример уже более академический, но все же показывает, понимание фп, писать лаконично на фп это как каждый день ходить в качалку)) задачки надо такие решать постоянно, но не согласен что полноценно дает понять как человек мыслит, в реале же решает, архитектура, умение мыслить абстракциями, но задачки тоже этот скилл качают
@@странствие Вот так можно const x = (()=>{for(let arr = {out:"",sort:[+document.querySelector(".t91").value, +document.querySelector(".t92").value].sort((( a, b ) => a - b))};arr.sort[0]
для мышления, програмирование это ебеший слой абстракциий и тот лучший кто умеет этот слой делать больше, а в реале может пригодится для работы с потоком данных
Объясняю, заказчик просит предположим не трогать логику бекенда на PHP, хотя задача чисто бекендовая. Не важно почему так, но приходится в таких случаях выруливать JS фронтендом с разработкой алгоритма. Ну или предположим чисто на бекенде, в WordPress нету поумолчанию нормальной реализации сессий и плюс нету MVC модели - это исторический момент, в некоторых случаях проще разработать костыль с. Плагинами, херовой тучей вложенности циклов и сложным математическим алгоритмом, где вложенность этих циклов и их область видимости, как раз решается массивами, потому что последнее значение массива не затирает предыдущее. Только так иногда быстрее решить не стандартную задачу для WP, с которой тот же Ларавел справится на раз два.
поставил видео на паузу на 01:43 и высрал такое: for(let i = 0; i < 101; i++) { if (i%3 == 0) { console.log(i); } } это я к какой категории отношусь? Александр, огромное спасибо за Ваши уроки!!
Никогда не думал, что со мной это произойдет, но смотрю видео Александа, не для обучения, а в свободное время, как просто что-то интересное)
PS: Контент с задачками по JS и вариантами их решения очень зашел.
Сам Java разработчик, но иногда посматриваю вот такие интересные и познавательные видосики по JS.
Не по звону колокольчика,
А по зову сердца😏
В первом решении на массивы понял только то, что делают filter и length
Первое решение первой задачи на скале было таким (проверил, компилится)
(0 to 100).filter(_ % 3 == 0).length
На остальные вещи из жс лучше не тратить время имхо
(А вообще решение такое: 100 / 3 + 1 :-) )
Огромное спасибо за видео. От Вас много хорошего и полезного узнал и продолжаю узнавать.
к первой задаче можно добавить одно действие и улучшить баланс сохранив читаемость:
let count = 0;
for (let i = 0; i
let count = 0;
for (let i = 0; i
for (let i = Math.min(a, b); i
прикольный трюс замены с помощью массивов. спасибо
Первую задачу легко решить через fill+reduce, если речь идёт именно о количестве чисел, кратных трем
Насколько эффективным является такое решение для обмена значений?)
if (a < b) {
a = a + b;
b = a - b;
a = a - b;
}
Или лучше пользоваться решением [a, b] = [b, a] ?
Вполне как вариант, особенно если требуется обойтись без посторонней переменной. Можно подобным образом еще сделать посредством оператора ^ (XOR).
ваше решение более эффективно по памяти, но менее эффективно объему вычислений, а решение с массивами по идее наоборот, плюс более универсальное в плане того что при большем количестве переменных оно будет всё так же элегантно записываться.
Блин так я МИДЛ!!! Спасибо за видео :)
спасибо что снимаете видио, лучший учитель !!!!
Хороший разбор, побольше таких видео...с помощью таких обсуждений узнаешь важные нюансы: обмен значений переменных, как по феншую, а как нет...спасибо
Я за второй вариант, потому что сразу и без напряга серого вещества понял что он делает.
ПыСы: я всегда рад нововведениям, но для меня главное чтобы код был понятен всем - джунам-мидлам-помидорам
Читабельность понятие субъективное. Если отбросить задачу сгенерировать масив, то вариант с filter будет выглядеть красиве чем с for - if.
Первая задача вообще решается вот таким элегантным способом в 1 команду: return Math.ceil(100 / 3). Так зачем изобретать велосипед?)
100/3 +1
Вот ещё варианты:
1+100/3|0
1+100/3>>0
1+~~(100/3)
На скале (проверил, все компилится)
Если четко следовать условию первой)))
def f1() = 34
Если x вместо 100 в первой
def f1(x: Int) = x / 3 + 1
Либо же, если ракетой по мухе
def f1(x: Int) = (0 to x).filter(_ % 3 == 0).length
Вторая
def f2(x: Int, y: Int) =
(List(x, y).sorted match {
case List(a, b) => a to b
}).mkString(" ")
Можно ли вторую также лаконично на жс написать?
в задаче найти числа кратные 3, а мы ищем количество чисел кратное 3. Отличная постановка задачи, или я чего-то не понял )
наверно. Нужно найти количество.
@@itgid у вас не указано, что количество. Я тоже думала, что надо найти все числа, а не их количество
интересно было бы рассмотреть задачку-написать инпут маску телефонного номера (на чистом джс без доп бибилиотек)
В первой задаче можно итератор по 3 прибавлять - самое простое и читабельное решение - мнение как любителя.
В первой задаче идея с последним делимым интересная. Интересное видео. Лайк.
В первой задаче точно требуется найти количество чисел кратных 3.
Может всё-таки найти все числа кратные 3? ))
Есть еще миддлы-извращенцы - они на каждый чих создают функции и методы, по названию которых можно понять, что в них происходит, но при этом само тело функции с элементами садомазо.
Комменты для новичков, в принципе по названию переменных и функций всё ясно:
// функция для создания массива нужной длины с нужным шагом
function newArr(l = 100, count = 1) {
return Array.from( {length: l+1}, (el, id)=>id*count)
}
// метод массива для краткой записи фильтра. конечно же не обойтись без строки через eval!
Array.prototype.fltr = function (func) {
return this.filter(i => eval(func))
}
// можем быстро находить кол-во элементов, подходящих для различных условий
console.log( newArr().fltr('i%3 === 0').length )
console.log( newArr(1000, 5).fltr('i%20 === 0').length )
console.log( newArr().fltr('i * i < arr.length').length )
ссылка на фиддл:
jsfiddle. net/ 56o1j09s/
Очень классное видео, спасибо
Судя по видео, курсы Александра готовят сразу мидл девелоперов. 😀
честно не js разработчик, больше php. Только все больше приходится погружаться в frontend.
в первой задаче вопрос: по вашему решению 0 тоже делится на 3, или ответ все-таки 33?
Решение один:
let count = 0;
for (let i = 0; i < 100; i+=3) {
count++;
}
Второй вариант, ведь нам нужно количество чисел. а не сами числа, поэтому зачем обходить по массиву?
count = Math.Floor(100/3);
или сокращенно ~~(100/3); это если 0 не считать за решение, но +1 добавить не проблема.
0 делится на любое число, на 0 ничего не делится
Пайтон/скала розраби такі:
[0: 100: 3]
Ну ладно мені так подобається:
Array(34).map((_, i) => i * 3)
Але границя не очевидна зато очевидна кількість.
А можливо компілятор навіть сам це переведе в цикл.
То чувство когда не знаешь JS а просто немного знаешь другие языки и придумал в голове ответ Милла...
new Array(100).fill().map((_, idx) => idx + 1)
В первой задаче во втором примере, еще экономится память, не создается массив.
Классный ролик.
Александр я джун и я так бы не написал
))))
природная лень не даст мне возможности так заумно писать )
Да, кстати, заметил в последнее время, что джуны пишут максимально обфусцированный код , слепляя в одну большую кучу непонятно чего
Я точно немогу сказать к какой категории я отношусь, может джун а может мидл, пишу только для себя, никогда не работал програмистом, знаю С++, С, ПХП, Джаву, Джаваскрипт, немного ХТМЛ и ЦСС, в основном сайты пишу на ПХП, много где использую ДЖеквери, могу сказать только одно, всегда решаю задачу как можно развернутей, а уж после довожу до идеала и максимально оптимизирую, и терпеть не могу обфусцировпнный код, люблю чтоб когда через год, два сиотришь на код было так как будто инструкцию читаешь, так же стараюсь по максимуму все коментировать, опять же когда через время возвращаешься к своему коду то все предельно понятно и знакомо.
console.log(Math.floor(100/3+1));
Смысл задачи не сделать математический пример, а найти красные числа!!!!
@@Idontknow-xo7ou автор делал вывод количество чисел которые делятся на 3, а не те цифры которые делятся на 3
А если без +1 то можно округлять в большую сторону и всё)
Math.ceil(100/3);
Я не программист, но просматриваю иногда видео, что то могу, но не представляю , что делают и как работают программисты. Одно дело задачки, тут всё ясно и понятно, а другое дело в реальной работе посмотреть. Эта неизвестность и пугает.
@@ПавелКонстантинов-в7я Math.ceil(99/3) = 33 , а нам нужно получить 34. Тут Math.floor + 1 надо применять
В первой задаче решение через цикл(понравилось).Вторая задача - прямой обмен(понравилось) честно говоря, не знал что так можно, делал бы через доп. переменную.
Есть решение без дополнительной переменной. Чисто математическая задачка.
let a = 3;
let b = 5;
a = a + b; // 8
b = a - b; // 3
a = a - b; // 5
А есть ли сборник с такими примерами джуна vs мидла. Или канал какой?
let count = 0;
for (let i = 0; i < 100; i++) {
if (i % 3 !== 0) {
continue
}
count += 1 //считаем сколько чисел
console.log(i); //все числа кратные 3
}
console.log(count);
норм?(не смотрел видос)
Здравствуйте. Существуют ли способы научиться программировать? Уточню вопрос. Я уже учу Js и React.
Если с манипуляциями DOM более менее понятно что да как. То вот подобные математические задачи у меня вызывают дикие проблемы. И чет страшновато данное непонимание. Ибо грустновато будет если из за плохой математической базы не получится хотя б в вебдев влиться.
А почему не сделать for (let i=3: i
i+=3
написал свой коммент, потом ваш прочитал )
Да, только начинаем не с 3, а с нуля, так как 0 тоже делится на 3
Так из условия нам нужно найти числа, а не найти количество этих чисел. И никакой счетчик не нужен. Выводить просто в самом цикле эти числа или пушить в пустой(изначально) массив нужные значения.
К слову, я бы при решении такой задачи создал бы отдельную функцию, которая бы принимала в себя значения от, до и число, кратное которому нужно найти числа и возвращала бы эта функция массив с нужными значениями. Но опять-таки исходя из практической точки зрения, если такая универсальность вообще нужна. Если нет, то можно указать ещё параметры по умолчанию, которые будут работать при обычном вызове или вовсе убрать параметры и сделать уже по статическим цифрами и тогда назвать функцию соответствующим образом.
JS 1love нужно количество найти
Алекс, спасибо Вам за ваши уроки. Все забываю спросить, а как в VS Code продублировать строку? Вижу вы это часто делаете, какое сочетание клавиш?
Alt+Shift+Стрелочка вниз
Ctrl + D
@@Данило-г4ч спасибо огроменное! ))
Можно ctrl+L выбрать целую строку,дальше по желанию ))
@@Bxz56Rvp8 ctrl+D выберет слово внутри которого курсор
Вы описали почему a лучше b (хотя очень кратко, есть целые книги и не одна на эту тему), но вы не обьяснили для чего тогда b.
П.С.
a. читаемость кода
b. новые конструкции языка
И эта тема настолько ничтожно мало касаема в этом видео, что помимо этого видео (если уже так хотелось затронуть эту тему) в конце лучше список книг сказать (например для начала Чистый код подойдет).
Современный программист в первую очередь должен писать код для других программистов (поддерживаемось/расширяемость), а уже потом для машины!
Кто нибудь объяснит, как эта запись работает [a,b] = [b,a] в таких скобках обычно массивы видел.
Это похоже на кортежи.
Почитай про деструкторизацию
Элементарно мы создаем масивы и переприсваиваем одному значения из второго, типа а=б только [а] = [б]
@@denisbielishev Спасибо!!! Полезно направил, долго искал какую тему изучать по этому вопросу!
ну что сказать, лайк
Math.ceil(100/3);
Вместо 100 любую переменную и будет искомое количество.
👍🏻
найс, фп-шечка всегда сложно, потому что заставляет мыслить так как мы не привыкли, первый пример уже более академический, но все же показывает, понимание фп, писать лаконично на фп это как каждый день ходить в качалку))
задачки надо такие решать постоянно, но не согласен что полноценно дает понять как человек мыслит, в реале же решает, архитектура, умение мыслить абстракциями, но задачки тоже этот скилл качают
Хороший программист который пишет let вместо const xD
Зачем ему использовать константу?
...
7:41 , в задании же вроде надо вывести все числа (то есть массив), не ?
Как по мне [a,b] = [b,a] очень затратная операция, да хорошо читаемая, но я наверно все таки использовал бы вариант с доп. переменной
Почему затратная? В память же не пишется ничего и не читается,изменяются ссылки на переменные в памяти,или я что то не правильно понимаю?
2
100%
Каким образом вторая задача решается в одну строку?
:)
@@itgid ну минификация не в счет
@@странствие
Вот так можно
const x = (()=>{for(let arr = {out:"",sort:[+document.querySelector(".t91").value, +document.querySelector(".t92").value].sort((( a, b ) => a - b))};arr.sort[0]
def f2(x: Int, y: Int) =
(List(x, y).sorted match {
case List(a, b) => a to b
}).mkString(" ")
Можно в одну строку написать. Но это скала
для первой задачи:
console.log([...Array(10).keys()].map(el => el + 1).filter(el => el % 3 === 0));
Мап можно убрать, если нужно считать от нуля.
Надо так 1...100.Он 0 / 3 = остаток будет 0.
о это я вовремя зашел, я первый, мой день удался
Второй ввриант лучше
гуд!
Вообще не понимаю прикола решения математических задач. Как это относится к реальным навыкам? Зачем это нужно?
я тоже, но факт - их очень любят в вузах и на дурацких собеседованиях.
для мышления, програмирование это ебеший слой абстракциий и тот лучший кто умеет этот слой делать больше, а в реале может пригодится для работы с потоком данных
Объясняю, заказчик просит предположим не трогать логику бекенда на PHP, хотя задача чисто бекендовая. Не важно почему так, но приходится в таких случаях выруливать JS фронтендом с разработкой алгоритма. Ну или предположим чисто на бекенде, в WordPress нету поумолчанию нормальной реализации сессий и плюс нету MVC модели - это исторический момент, в некоторых случаях проще разработать костыль с. Плагинами, херовой тучей вложенности циклов и сложным математическим алгоритмом, где вложенность этих циклов и их область видимости, как раз решается массивами, потому что последнее значение массива не затирает предыдущее. Только так иногда быстрее решить не стандартную задачу для WP, с которой тот же Ларавел справится на раз два.
а на холєру взагалі таке робить? це ж брєдятіна. де воно буде застосовуватись в роботі?( я взагалі не уявляю що робить фронтен)
поставил видео на паузу на 01:43 и высрал такое:
for(let i = 0; i < 101; i++) {
if (i%3 == 0) {
console.log(i);
}
}
это я к какой категории отношусь? Александр, огромное спасибо за Ваши уроки!!
Первое решение все равно круче