Решение задач Codewars JS | Junior, Middle, Senior | ЧАСТЬ 3

Поделиться
HTML-код
  • Опубликовано: 26 фев 2024
  • 🎁 Бесплатные мастер-классы 👉🏻 go.elbrusboot.camp/MkS-s
    🤓 День открытых дверей в буткемпе 👉🏻 go.elbrusboot.camp/js_-dod
    Как джун, миддл и синьор разработчик решают задачи на CodeWars? Узнайте вместе с Александром Князевым, mentor lead направления JavaScript Москва, на примере 6 Kyu!
    Кто мы такие❓
    Эльбрус Буткемп - это первая и самая крупная в России школа программирования в формате интенсивного обучения. Студенты 12 недель оффлайн или 15 недель онлайн практикуются на реальных проектах и кодят с утра до вечера. Обучение проходит по направлениям JavaScript и Data Science.
    В буткемпе студенты решают задачи от реальных работодателей, что особенно важно в постоянно развивающейся сфере IT. 3 месяца оффлайн / 4 месяца онлайн обучения с 9:00 до 19:00 5 дней в неделю, ежедневная работа с кодом, плюс два проекта, командный и персональный, которые студенты защищают на второй и третьей, заключительной, фазе обучения - и вот на выходе уже есть полноценное портфолио, которое можно показать при устройстве на работу.
    По окончании обучения всех ждет карьерная неделя, где карьерный коуч помогает подготовиться к собеседованию, подтянуть софт-скиллы и собрать резюме, с которыми 93% студентов находят работу в течение трех месяцев после окончания буткемпа. Также после завершения Эльбрус Буткемп есть возможность получить диплом ДПО.
    Приходите на день открытых дверей в онлайне и познакомьтесь с форматом буткемп. Это лучший способ научиться программировать, сменить работу и увеличить свой доход.
    VK - elbrusbootcamp
    FB - / elbrusbootcamp
    Insta - / elbrus.bootcamp
    TikTok - www.tiktok.com/@elbrusbootcam...
    Сайт школы - elbrusboot.camp
    Напишите или позвоните нам, чтобы узнать, как поступить в ближайшую группу:
    ☎️ +7 (499) 938-68-24
    💬 Чат в WhatsApp api.whatsapp.com/send?phone=7...
    💬 Чат в Телеграм t.me/elbrusbootcamp1
    ✉️ info@elbrusboot.camp
    Использовалось в видео (музыка/видео):
    Fast Forward, Pause - Rebecca Mardal

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

  • @user-iq8ns9jv9q
    @user-iq8ns9jv9q 3 месяца назад +18

    senior не будет проходить весь массив абсолютно каждый раз. Он будет использовать для этой задачи обычные циклы и напишет brake, если на текущей итерации стало понятно, что массив unordered

    • @ElbrusBootcamp
      @ElbrusBootcamp  3 месяца назад +2

      Это хорошая оптимизация, респект! В худшем случае мы можем понять неупорядоченность массива только в самом конце, поэтому на сложность алгоритма это условие не влияет 🤓

  • @dmitryts9093
    @dmitryts9093 3 месяца назад +33

    Не хотел бы я в проекте увидеть такой сеньёрский код, и сидеть думать что происходит

    • @suspenseorigin5542
      @suspenseorigin5542 3 месяца назад +2

      да никто так не пишет, это задрота бест практис тиснули с кодварс, разобрали и выкатили) с реальными задачами не имеет ничего общего

    • @ekozincew
      @ekozincew 3 месяца назад

      @@suspenseorigin5542 в реализации некоторых криптографических алгоритмов так и пишут)

  • @YellowPanamka
    @YellowPanamka 27 дней назад

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

  • @placid3495
    @placid3495 3 месяца назад +4

    Моя любимая рубрика) Жду еще!

    • @ElbrusBootcamp
      @ElbrusBootcamp  3 месяца назад +2

      Нам очень приятно, новый выпуск уже снят, ожидайте в ближайшее время на канале :)

  • @-Pechorin-
    @-Pechorin- 3 месяца назад +1

    Большое спасибо за материал! Открыли новый взгляд на решения.

  • @gladalex3824
    @gladalex3824 3 месяца назад

    Спасибо за рубрику)

  • @petrblinkov508
    @petrblinkov508 3 месяца назад +2

    алгоритм также будет оптимизирован по памяти если использовать arr.reduce и Set как аккумулятор. Использование битовых операторов не показатель сеньора, битовые операторы тяжело читать и его используют только в местах которые редко читают - кор компоненты или команды из одного сеньора

  • @antononoprienko9027
    @antononoprienko9027 3 месяца назад +3

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

    • @zmmr013
      @zmmr013 3 месяца назад

      Забей вообще. Даже не думай. Это приколы просто с математических кружков. Типа у кого писька длиннее, кто круче напишет. В 99% реальности такое не встречается. Последний пример реально для сениоров, сениоров извращенцев 😂

  • @MrBurikella
    @MrBurikella 3 месяца назад +2

    А копию массива сделать (который как говорилось в видео может миллион элементов содержать) чисто ради того, чтобы нормальный цикл не писать - это точно норм для синьора? Точно ли оптимально по памяти выйдет?

  • @KK-cf2me
    @KK-cf2me 3 месяца назад +3

    Спасибо за видео! Подскажите, пожалуйста, варианты где подобная задача может использоваться на практике?

    • @DS-iz4xw
      @DS-iz4xw 3 месяца назад

      Есть вариант с рейтингом чего либо.
      Например 1го числа у штерна было 100 слушателей, 2-110, 3-120.
      Берешь массив [100,110,120] - рейтинг растущий.
      Это условно, в твоем проекте если это надо посчитать на миллион моргенштернов плохая затея, а если на пару сотков строк в таблице - то норм

  • @flashz1
    @flashz1 3 месяца назад

    если усложнение это то чему способствует опыт, тогда совет новичкам, не гонитесь за опытом)))

  • @bloodborn9632
    @bloodborn9632 3 месяца назад +2

    Я прям повысил свою самооценку :)) у меня опыта в программировании 3 года , но 15 лет в математике , алгоритмы оптимальные придумать не проблема, а вот перенести на код занимает больше времени. Хотя эта задача простая, попадались и такие где алогитм придумать уходила неделя, потому что бизнеспроцесс приходилось изучать подробно, а код написать уже день два. Так что все относительно.

  • @rbars96
    @rbars96 3 месяца назад

    Middle: много вычислний size + математические операции над массивом (тем более, если он будет большим) - тоже не сильно оптимальнее первого варианта джуна

  • @EgorMoscowNeverSleep
    @EgorMoscowNeverSleep 3 месяца назад +2

    Если ваше последнее решение для сеньёров, то: 1. совместимость с `Intl.Collator().compare` (в случае массива строк) и 2. предварительный выход из цикла, если обнаружено unsorted; это видимо для надмозгов, не меньше.
    ```javascript
    function sequenceClassifier(arr) {
    let flags = 0, prev = arr[0];
    for (let i = 1, len = arr.length ; i < len ; i++) {
    const item = arr[i];
    // the [-1, 0, 1] is compatible with `new Intl.Collator().compare`
    if ((flags |= ((0b011 & (
    item === prev ? 0// ((0b11 & 0) + 1) === 0b001
    : item > prev ? 1// ((0b11 & 1) + 1) === 0b010
    : -1// ((0b11 & -1) + 1) === 0b100
    )) + 1)) === 0b111) {
    break;
    }
    prev = item;
    }
    if (flags >= 0b110)return 0;
    if (flags === 0b001)return 5;
    return flags - 1;
    }
    ```

    • @EgorMoscowNeverSleep
      @EgorMoscowNeverSleep 3 месяца назад

      Сразу же поправлюсь, что в решении из видео для сеньёров есть совместимость с `Intl.Collator().compare`: с помощью функции Math.sign, так что остаётся только предварительный выход из цикла, если с массивом и так понятно, что он unsorted.

    • @moscowtv5767
      @moscowtv5767 3 месяца назад

      Классный, очевидный код!

  • @coderlweer7060
    @coderlweer7060 3 месяца назад +1

    Почему так мало комментариев и лайков ? Хорошая рубрика, хороший материал, хорошая подача, спасибо!.

    • @-Pechorin-
      @-Pechorin- 3 месяца назад

      Предполагаю, потому что действительно увлекающихся мало.

  • @goodman.965
    @goodman.965 3 месяца назад

    Срасибо за видео, интересно. Но пожалуйста озвучивайте задачу полностью, пришлось пересматривать что бы понять почему входные данные не проверяются))

  • @user-ty1gy4sy9z
    @user-ty1gy4sy9z 3 месяца назад +2

    const classifier = (numbers) => {
    let first = numbers.shift();
    return numbers.reduce((acc, item, index) => {
    console.log(first, item);
    if (item < first) {
    return VALUES.decrease
    }
    if (item > first) {
    return VALUES.increase
    }
    if (item === first) {
    return VALUES.same
    }
    first = item;
    }, 0);
    };
    вроде работает без СИНЬЕРСКОГО КОДА

    • @andrii9755
      @andrii9755 3 месяца назад

      это если было бы три условия было, а там пять условий в задаче, еще not increase и not decrease

  • @mk3mk3mk
    @mk3mk3mk 3 месяца назад

    Мне кажется что синьер не стал бы решать такую джунскую задачу, а поручил бы первому попавшемуся джуну 🎉😮😅

  • @pandalove6795
    @pandalove6795 3 месяца назад

    А если я просто 3 переменные создал куда просто посчитал, количество числе которые > предыдущих, < предыдущих или равны предыдущему. И по ним определил? Кто я?
    P.s. риторический вопрос. Как по мне это самый лучший способ (можно конечно вообще весь массив не проходить, но для понятности решил написать так, но битовые операции это уже оверхед как по мне, не знаю, мне кажется сеньор не стал бы запариваться так).

  • @romanbrandt7986
    @romanbrandt7986 3 месяца назад

    Могу только сказать, что решение Джуна быстрее выполняется )) если возьмем допустим массив из 100.000 то Jun 0.800, а Mid 1.6! А если от 1 млн то 7.00 и 16.00 ))

  • @andreikhotko5206
    @andreikhotko5206 3 месяца назад

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

  • @sawertsand
    @sawertsand 3 месяца назад

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

  • @zeOnni
    @zeOnni 3 месяца назад

    У вас там копия массива и замыкание. Откуда константность по памяти?

  • @user-zj5jj4uf9y
    @user-zj5jj4uf9y 3 месяца назад

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

  • @Bring_You_Up
    @Bring_You_Up 3 месяца назад

    первое решение (джуновское) - выполнение за 3242ms.
    второе решение (миддловское) - выполнение за 6080ms (должно быть оптималеньнее, по идее).
    по третьему вопросов нет.

  • @daniyarbaizhaksynov9230
    @daniyarbaizhaksynov9230 3 месяца назад +1

    я думал наоборот код сеньора всегда элегантен и прост для чтения

    • @profesor08
      @profesor08 3 месяца назад

      код из видео ревью не пройдет и даже не оптимален

  • @user-wf8kp2or6i
    @user-wf8kp2or6i 3 месяца назад +1

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

  • @vitek0585
    @vitek0585 3 месяца назад

    очень не хорошее решение, куча масок, главное ничего не забыть захендлить, я бы сказал это код джуна ‘когда понял как работать с битами’. Проще в цикле и используя паттерн rules

  • @Shiro-bz2ws
    @Shiro-bz2ws 3 месяца назад

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

  • @valpalchenko3982
    @valpalchenko3982 3 месяца назад

    Это не код джуна, а код идиота. Или джаваскиптизеров не учат все делать за один проход цикла? Да и мидл мог бы заполнять сет на том же проходе и использовать брейк. Про читабельность всех вариантов вообще молчу, такое у меня ревью бы не прошло. Руки поотрывал бы за километровые строки

  • @sergey53689
    @sergey53689 3 месяца назад

    да уж такую херню такими дурацкими способами решают

  • @bloodborn9632
    @bloodborn9632 3 месяца назад

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