Кто написал? Джун или мидл?

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024

Комментарии • 109

  • @OnlyLuck1000
    @OnlyLuck1000 4 года назад +33

    Никогда не думал, что со мной это произойдет, но смотрю видео Александа, не для обучения, а в свободное время, как просто что-то интересное)
    PS: Контент с задачками по JS и вариантами их решения очень зашел.

    • @romankopylov5013
      @romankopylov5013 4 года назад

      Сам Java разработчик, но иногда посматриваю вот такие интересные и познавательные видосики по JS.

  • @AOne1999
    @AOne1999 4 года назад +19

    Не по звону колокольчика,
    А по зову сердца😏

  • @Idontknow-xo7ou
    @Idontknow-xo7ou 4 года назад +23

    В первом решении на массивы понял только то, что делают filter и length

    • @robert33232
      @robert33232 3 года назад

      Первое решение первой задачи на скале было таким (проверил, компилится)
      (0 to 100).filter(_ % 3 == 0).length
      На остальные вещи из жс лучше не тратить время имхо
      (А вообще решение такое: 100 / 3 + 1 :-) )

  • @НиколайПрибитков-я2у
    @НиколайПрибитков-я2у 4 года назад +3

    Огромное спасибо за видео. От Вас много хорошего и полезного узнал и продолжаю узнавать.
    к первой задаче можно добавить одно действие и улучшить баланс сохранив читаемость:
    let count = 0;
    for (let i = 0; i

    • @Ams-sv5bf
      @Ams-sv5bf 4 года назад

      let count = 0;
      for (let i = 0; i

  • @Alexey-N
    @Alexey-N 3 года назад +1

    for (let i = Math.min(a, b); i

  • @dj_yamato
    @dj_yamato 2 года назад

    прикольный трюс замены с помощью массивов. спасибо

  • @AlexanderOsnovnoi
    @AlexanderOsnovnoi 2 года назад

    Первую задачу легко решить через fill+reduce, если речь идёт именно о количестве чисел, кратных трем

  • @YuriiK-i7k
    @YuriiK-i7k 4 года назад +3

    Насколько эффективным является такое решение для обмена значений?)
    if (a < b) {
    a = a + b;
    b = a - b;
    a = a - b;
    }
    Или лучше пользоваться решением [a, b] = [b, a] ?

    • @dimeliora
      @dimeliora 4 года назад

      Вполне как вариант, особенно если требуется обойтись без посторонней переменной. Можно подобным образом еще сделать посредством оператора ^ (XOR).

    • @---vy1zd
      @---vy1zd 4 года назад

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

  • @kabukijoe99
    @kabukijoe99 4 года назад +6

    Блин так я МИДЛ!!! Спасибо за видео :)

  • @МаксГринько-л4ь
    @МаксГринько-л4ь 4 года назад +1

    спасибо что снимаете видио, лучший учитель !!!!

  • @7241984ify
    @7241984ify 4 года назад

    Хороший разбор, побольше таких видео...с помощью таких обсуждений узнаешь важные нюансы: обмен значений переменных, как по феншую, а как нет...спасибо

  • @videoCxema
    @videoCxema 4 года назад +7

    Я за второй вариант, потому что сразу и без напряга серого вещества понял что он делает.
    ПыСы: я всегда рад нововведениям, но для меня главное чтобы код был понятен всем - джунам-мидлам-помидорам

  • @xmaksym6391
    @xmaksym6391 4 года назад +1

    Читабельность понятие субъективное. Если отбросить задачу сгенерировать масив, то вариант с filter будет выглядеть красиве чем с for - if.

  • @DennisPriadka
    @DennisPriadka 4 года назад +13

    Первая задача вообще решается вот таким элегантным способом в 1 команду: return Math.ceil(100 / 3). Так зачем изобретать велосипед?)

    • @Oleg87arh
      @Oleg87arh 4 года назад

      100/3 +1

    • @---vy1zd
      @---vy1zd 4 года назад

      Вот ещё варианты:
      1+100/3|0
      1+100/3>>0
      1+~~(100/3)

  • @robert33232
    @robert33232 3 года назад +1

    На скале (проверил, все компилится)
    Если четко следовать условию первой)))
    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(" ")
    Можно ли вторую также лаконично на жс написать?

  • @MrFreeedman
    @MrFreeedman 4 года назад +19

    в задаче найти числа кратные 3, а мы ищем количество чисел кратное 3. Отличная постановка задачи, или я чего-то не понял )

    • @itgid
      @itgid  4 года назад

      наверно. Нужно найти количество.

    • @evilevil1619
      @evilevil1619 3 года назад +1

      @@itgid у вас не указано, что количество. Я тоже думала, что надо найти все числа, а не их количество

  • @DagestanShop
    @DagestanShop 4 года назад +2

    интересно было бы рассмотреть задачку-написать инпут маску телефонного номера (на чистом джс без доп бибилиотек)

  • @FLCL-fan
    @FLCL-fan 2 года назад

    В первой задаче можно итератор по 3 прибавлять - самое простое и читабельное решение - мнение как любителя.

  • @ЕвгенийВасильев-ф3з
    @ЕвгенийВасильев-ф3з 4 года назад +1

    В первой задаче идея с последним делимым интересная. Интересное видео. Лайк.

  • @admenmod
    @admenmod 4 года назад +6

    В первой задаче точно требуется найти количество чисел кратных 3.
    Может всё-таки найти все числа кратные 3? ))

  • @GreenHappyHelix
    @GreenHappyHelix 4 года назад +1

    Есть еще миддлы-извращенцы - они на каждый чих создают функции и методы, по названию которых можно понять, что в них происходит, но при этом само тело функции с элементами садомазо.
    Комменты для новичков, в принципе по названию переменных и функций всё ясно:
    // функция для создания массива нужной длины с нужным шагом
    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/

  • @mishan9199
    @mishan9199 4 года назад

    Очень классное видео, спасибо

  • @ПавелКовчин
    @ПавелКовчин 4 года назад +2

    Судя по видео, курсы Александра готовят сразу мидл девелоперов. 😀

  • @Запискисамоучки
    @Запискисамоучки 4 года назад +2

    честно не 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 добавить не проблема.

    • @evilevil1619
      @evilevil1619 3 года назад

      0 делится на любое число, на 0 ничего не делится

  • @ДанилоПідгайний-э2в
    @ДанилоПідгайний-э2в 2 года назад +1

    Пайтон/скала розраби такі:
    [0: 100: 3]
    Ну ладно мені так подобається:
    Array(34).map((_, i) => i * 3)
    Але границя не очевидна зато очевидна кількість.
    А можливо компілятор навіть сам це переведе в цикл.

  • @ДенисС-н5р
    @ДенисС-н5р 3 года назад +1

    То чувство когда не знаешь JS а просто немного знаешь другие языки и придумал в голове ответ Милла...

  • @q1dsdsdsq2dssdsd95
    @q1dsdsdsq2dssdsd95 4 года назад +1

    new Array(100).fill().map((_, idx) => idx + 1)

  • @AndreyKoval-i9y
    @AndreyKoval-i9y 3 года назад

    В первой задаче во втором примере, еще экономится память, не создается массив.

  • @mainsport7851
    @mainsport7851 4 года назад

    Классный ролик.

  • @VasulKa22
    @VasulKa22 4 года назад +1

    Александр я джун и я так бы не написал
    ))))
    природная лень не даст мне возможности так заумно писать )

  • @Адранонка
    @Адранонка 4 года назад +2

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

  • @brainiak
    @brainiak 4 года назад

    Я точно немогу сказать к какой категории я отношусь, может джун а может мидл, пишу только для себя, никогда не работал програмистом, знаю С++, С, ПХП, Джаву, Джаваскрипт, немного ХТМЛ и ЦСС, в основном сайты пишу на ПХП, много где использую ДЖеквери, могу сказать только одно, всегда решаю задачу как можно развернутей, а уж после довожу до идеала и максимально оптимизирую, и терпеть не могу обфусцировпнный код, люблю чтоб когда через год, два сиотришь на код было так как будто инструкцию читаешь, так же стараюсь по максимуму все коментировать, опять же когда через время возвращаешься к своему коду то все предельно понятно и знакомо.

  • @MrErl
    @MrErl 4 года назад +3

    console.log(Math.floor(100/3+1));

    • @Idontknow-xo7ou
      @Idontknow-xo7ou 4 года назад

      Смысл задачи не сделать математический пример, а найти красные числа!!!!

    • @MrErl
      @MrErl 4 года назад +1

      @@Idontknow-xo7ou автор делал вывод количество чисел которые делятся на 3, а не те цифры которые делятся на 3

    • @ПавелКонстантинов-в7я
      @ПавелКонстантинов-в7я 4 года назад +1

      А если без +1 то можно округлять в большую сторону и всё)
      Math.ceil(100/3);
      Я не программист, но просматриваю иногда видео, что то могу, но не представляю , что делают и как работают программисты. Одно дело задачки, тут всё ясно и понятно, а другое дело в реальной работе посмотреть. Эта неизвестность и пугает.

    • @antiga1000
      @antiga1000 3 года назад

      @@ПавелКонстантинов-в7я Math.ceil(99/3) = 33 , а нам нужно получить 34. Тут Math.floor + 1 надо применять

  • @ЕвгенийВасильев-ф3з

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

    • @vitaliytrots8985
      @vitaliytrots8985 3 года назад +2

      Есть решение без дополнительной переменной. Чисто математическая задачка.
      let a = 3;
      let b = 5;
      a = a + b; // 8
      b = a - b; // 3
      a = a - b; // 5

  • @olnimus
    @olnimus 4 года назад +3

    А есть ли сборник с такими примерами джуна vs мидла. Или канал какой?

  • @povertyinside4733
    @povertyinside4733 2 года назад

    let count = 0;
    for (let i = 0; i < 100; i++) {
    if (i % 3 !== 0) {
    continue
    }
    count += 1 //считаем сколько чисел
    console.log(i); //все числа кратные 3
    }
    console.log(count);
    норм?(не смотрел видос)

  • @curemoonlight4509
    @curemoonlight4509 3 года назад +1

    Здравствуйте. Существуют ли способы научиться программировать? Уточню вопрос. Я уже учу Js и React.
    Если с манипуляциями DOM более менее понятно что да как. То вот подобные математические задачи у меня вызывают дикие проблемы. И чет страшновато данное непонимание. Ибо грустновато будет если из за плохой математической базы не получится хотя б в вебдев влиться.

  • @dimitriy1861
    @dimitriy1861 4 года назад +6

    А почему не сделать for (let i=3: i

    • @ФедяМинов
      @ФедяМинов 4 года назад +3

      i+=3

    • @Запискисамоучки
      @Запискисамоучки 4 года назад

      написал свой коммент, потом ваш прочитал )

    • @ivanovserg8795
      @ivanovserg8795 3 года назад

      Да, только начинаем не с 3, а с нуля, так как 0 тоже делится на 3

  • @Nikita-hr6ss
    @Nikita-hr6ss 4 года назад +1

    Так из условия нам нужно найти числа, а не найти количество этих чисел. И никакой счетчик не нужен. Выводить просто в самом цикле эти числа или пушить в пустой(изначально) массив нужные значения.
    К слову, я бы при решении такой задачи создал бы отдельную функцию, которая бы принимала в себя значения от, до и число, кратное которому нужно найти числа и возвращала бы эта функция массив с нужными значениями. Но опять-таки исходя из практической точки зрения, если такая универсальность вообще нужна. Если нет, то можно указать ещё параметры по умолчанию, которые будут работать при обычном вызове или вовсе убрать параметры и сделать уже по статическим цифрами и тогда назвать функцию соответствующим образом.

    • @itgid
      @itgid  4 года назад

      JS 1love нужно количество найти

  • @АртурАстежев
    @АртурАстежев 4 года назад +2

    Алекс, спасибо Вам за ваши уроки. Все забываю спросить, а как в VS Code продублировать строку? Вижу вы это часто делаете, какое сочетание клавиш?

    • @Данило-г4ч
      @Данило-г4ч 4 года назад +3

      Alt+Shift+Стрелочка вниз

    • @Bxz56Rvp8
      @Bxz56Rvp8 4 года назад +1

      Ctrl + D

    • @АртурАстежев
      @АртурАстежев 4 года назад

      @@Данило-г4ч спасибо огроменное! ))

    • @Den4eg37
      @Den4eg37 4 года назад

      Можно ctrl+L выбрать целую строку,дальше по желанию ))

    • @Den4eg37
      @Den4eg37 4 года назад

      @@Bxz56Rvp8 ctrl+D выберет слово внутри которого курсор

  • @stanislav1125
    @stanislav1125 4 года назад

    Вы описали почему a лучше b (хотя очень кратко, есть целые книги и не одна на эту тему), но вы не обьяснили для чего тогда b.
    П.С.
    a. читаемость кода
    b. новые конструкции языка
    И эта тема настолько ничтожно мало касаема в этом видео, что помимо этого видео (если уже так хотелось затронуть эту тему) в конце лучше список книг сказать (например для начала Чистый код подойдет).

  • @romankopylov5013
    @romankopylov5013 4 года назад

    Современный программист в первую очередь должен писать код для других программистов (поддерживаемось/расширяемость), а уже потом для машины!

  • @DK-fg8sl
    @DK-fg8sl 4 года назад +2

    Кто нибудь объяснит, как эта запись работает [a,b] = [b,a] в таких скобках обычно массивы видел.

    • @TDmitry412
      @TDmitry412 4 года назад

      Это похоже на кортежи.

    • @denisbielishev
      @denisbielishev 4 года назад +3

      Почитай про деструкторизацию

    • @brainiak
      @brainiak 4 года назад +1

      Элементарно мы создаем масивы и переприсваиваем одному значения из второго, типа а=б только [а] = [б]

    • @DK-fg8sl
      @DK-fg8sl 4 года назад

      @@denisbielishev Спасибо!!! Полезно направил, долго искал какую тему изучать по этому вопросу!

  • @Vipochk27
    @Vipochk27 4 года назад

    ну что сказать, лайк

  • @ПавелКонстантинов-в7я

    Math.ceil(100/3);
    Вместо 100 любую переменную и будет искомое количество.

  • @sergeyshramko4200
    @sergeyshramko4200 4 года назад

    👍🏻

  • @alexpipin3693
    @alexpipin3693 4 года назад

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

  • @RisenCodeOld
    @RisenCodeOld 4 года назад

    Хороший программист который пишет let вместо const xD

  • @DagestanShop
    @DagestanShop 4 года назад

    7:41 , в задании же вроде надо вывести все числа (то есть массив), не ?

  • @сергейсорокин-б1е
    @сергейсорокин-б1е 4 года назад

    Как по мне [a,b] = [b,a] очень затратная операция, да хорошо читаемая, но я наверно все таки использовал бы вариант с доп. переменной

    • @Den4eg37
      @Den4eg37 4 года назад +1

      Почему затратная? В память же не пишется ничего и не читается,изменяются ссылки на переменные в памяти,или я что то не правильно понимаю?

  • @UuuNikita
    @UuuNikita 4 года назад +3

    2

    • @itgid
      @itgid  4 года назад

      100%

  • @странствие
    @странствие 4 года назад +2

    Каким образом вторая задача решается в одну строку?

    • @itgid
      @itgid  4 года назад +1

      :)

    • @странствие
      @странствие 4 года назад

      @@itgid ну минификация не в счет

    • @Адранонка
      @Адранонка 4 года назад +3

      @@странствие
      Вот так можно
      const x = (()=>{for(let arr = {out:"",sort:[+document.querySelector(".t91").value, +document.querySelector(".t92").value].sort((( a, b ) => a - b))};arr.sort[0]

    • @robert33232
      @robert33232 3 года назад

      def f2(x: Int, y: Int) =
      (List(x, y).sorted match {
      case List(a, b) => a to b
      }).mkString(" ")
      Можно в одну строку написать. Но это скала

  • @МаксимБондаренко-н1ь

    для первой задачи:
    console.log([...Array(10).keys()].map(el => el + 1).filter(el => el % 3 === 0));
    Мап можно убрать, если нужно считать от нуля.

  • @YMinaBolshoiPisun
    @YMinaBolshoiPisun 4 года назад

    Надо так 1...100.Он 0 / 3 = остаток будет 0.

  • @vasya8441
    @vasya8441 4 года назад

    о это я вовремя зашел, я первый, мой день удался

  • @digitalturkistan1857
    @digitalturkistan1857 4 года назад

    Второй ввриант лучше

    • @itgid
      @itgid  4 года назад

      гуд!

  • @sampeckjowerfell2515
    @sampeckjowerfell2515 4 года назад +4

    Вообще не понимаю прикола решения математических задач. Как это относится к реальным навыкам? Зачем это нужно?

    • @itgid
      @itgid  4 года назад +2

      я тоже, но факт - их очень любят в вузах и на дурацких собеседованиях.

    • @alexpipin3693
      @alexpipin3693 4 года назад +2

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

    • @k0dzer0
      @k0dzer0 4 года назад +2

      Объясняю, заказчик просит предположим не трогать логику бекенда на PHP, хотя задача чисто бекендовая. Не важно почему так, но приходится в таких случаях выруливать JS фронтендом с разработкой алгоритма. Ну или предположим чисто на бекенде, в WordPress нету поумолчанию нормальной реализации сессий и плюс нету MVC модели - это исторический момент, в некоторых случаях проще разработать костыль с. Плагинами, херовой тучей вложенности циклов и сложным математическим алгоритмом, где вложенность этих циклов и их область видимости, как раз решается массивами, потому что последнее значение массива не затирает предыдущее. Только так иногда быстрее решить не стандартную задачу для WP, с которой тот же Ларавел справится на раз два.

  • @MarkusRepository
    @MarkusRepository Год назад

    а на холєру взагалі таке робить? це ж брєдятіна. де воно буде застосовуватись в роботі?( я взагалі не уявляю що робить фронтен)

  • @FA1F.W
    @FA1F.W Год назад

    поставил видео на паузу на 01:43 и высрал такое:
    for(let i = 0; i < 101; i++) {
    if (i%3 == 0) {
    console.log(i);
    }
    }
    это я к какой категории отношусь? Александр, огромное спасибо за Ваши уроки!!

    • @FA1F.W
      @FA1F.W Год назад

      Первое решение все равно круче