Профиль пользователя заблокирован сроком с 20 сентября 2021 г. и навсегда по причине: систематические нарушения правил сервиса
  • Какой двигатель выбрать?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Зайдите на форум астрономов, там есть решения. Самое видимо дешевое это дс мотор и червячный редуктор.
    Ответ написан
    1 комментарий
  • Как можно настроить вероятность выпадения какого то из элементов последовательности?

    aRegius
    @aRegius
    Python Enthusiast
    random.choices
    Параметр weights
    >>> fruits = ['бананы', 'яблоки', 'груши']
    >>> for _ in range(10):
    	      print(random.choices(fruits, weights=[0.8, 0.1, 0.1])[0])
    	
    бананы
    бананы
    бананы
    груши
    бананы
    бананы
    бананы
    бананы
    яблоки
    бананы
    Ответ написан
    3 комментария
  • Какие есть материалы по Python 3 для не совсем новичка?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Python. К вершинам мастерства. Лучано Рамальо
    5e6ca43d9ed20986657810.jpeg

    Python Для сложных задач. Дж.Вандерс Плас
    5e6ca4c531098019323162.jpeg
    Ответ написан
    Комментировать
  • Поможете найти матрицы?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    код (спойлер)
    var matrixes =  [
      [
        [3, 2, 1],
        [1, 2, 3],
        [3, 1, 3]
      ], // Должен выводится 3
      [
        [3, 2, 1],
        [1, 2, 3],
        [3, 2, 1]
      ], // Должен выводится 0
      [
        [1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 0],
        [0, 0, 0, 1]
      ], // Должен выводится 4
      [
       [2, 4],
       [4, 2]
      ] // Должен выводится 0 
    ];
    
    matrixes.forEach( matrix => {
       console.log("------------------------");
       console.table(matrix);
       console.log(calc(matrix));
    });
    
    
    function calc(matrix){
      let template = matrix[0];
      let result = matrix.reduce( (acc1, items, index1) => {
        if(index1===0) return acc1;
        template = template.reverse();
        acc1 += items.reduce( (acc2, item, index2) => {
            acc2 += Math.abs(template[index2]-item);
            return acc2;
        },0);
        return acc1;
      },0);
      return result;
    }


    результат:
    5e5fed549ce9e339758941.png

    ну и песочница:
    Ответ написан
    1 комментарий
  • Как переписать короче?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    !(!$hasMoney && !$hasTime)
    upd
    = $hasMoney || $hasTime
    Ответ написан
    4 комментария
  • Как исключить из ленты вхождения второй ленты?

    @Drill
    string1 = 'abcdefghij'
    string2 = '123cdie456'
    
    print(string1.translate({ord(c): '' for c in string2}))
    Ответ написан
    3 комментария
  • Как уменьшить время выполнения программы?

    adugin
    @adugin Куратор тега Python
    Модифицированное решето Эратосфена:
    import numpy as np
    from numba import njit
    
    # С использованием numpy
    def max_divisors_v1(n):
        divs = np.ones(n + 1, np.uint8)
        for step in range(2, n + 1):
            divs[step::step] += 1
        divs[0] = 0
        num = divs.argmax()
        return num, divs[num]
    
    # Без numpy, чистый Python
    def max_divisors_v2(n):
        divs = [1] * (n + 1)
        for step in range(2, n + 1):
            for index in range(step, n + 1, step):
                divs[index] += 1
        divs[0] = 0
        cnt = max(divs)
        num = divs.index(cnt)
        return num, cnt
    
    # JIT-компиляция с декоратором @njit
    max_divisors_v3 = njit(max_divisors_v2)

    Вывод результата и тайминги выполнения:
    5de3a58791b15017261449.png
    Ответ написан
  • Зачем нужно ООП?

    @UnformedVoid
    Разработчик ПО
    ООП задумывалось как подход для декомпозиции кода на модули — классы. Каждый класс выполняет свою функцию и код остаётся чистым. Это в идеале. Но в реале, ООП устраняя сложности процедурного программирования, добавляет свои. Всё как вы и описали. Идеи, описанные в книжках, в реальных примерах не имеют применений. Для написания хорошего ООП кода нужно много знать и хорошо понимать абстрактную сторону. Плюс, ООП реализовано множеством способов. Популярные реализации ООП (Java, C#) по-сути являются Класс-Ориентированным Программированием. Помимо этого ООП увеличивает объём кода. Также, постулаты на котором, основано текущее (популярное) ООП создают предпосылки для хрупкого кода. Например, наследование. Изначально наследование подразумевалось как метод для переиспользования кода. Но со временем стало понятно, что большие иерархии классов ведут к непредсказуемым ошибкам. Если обнаруживается ошибка в базовом классе при наличии уже большой иерархии, её исправление чревато появлением сложных ситуаций с падением модулей завязанных на него. Можно привести другие примеры, но это тема для целой статьи, а возможно и для нескольких. Сейчас в языки ООП внедряются фичи из функционального программирования. Функциональное программирование базируется на идее композиции функций. ООП сейчас переходит (или уже перешло) от наследования к композиции объектов. То есть рекомендуется использовать композицию вместо больших иерархий наследования. Функциональное программирование лишено проблем ООП. Многие вещи, которые в ООП надо специально изучать (например шаблоны проектирования, внедрение зависимостей), в ФП являются либо основополагающим принципом, либо естественно выплывающим следствием (в ООП тоже много хороших практик выплывают естественным образом, однако, чтоб понять их естественность приходится хорошенько вглядываться). ФП очень многое даёт из коробки. ООП — неплохая штука, однако оно отживает свой век. ФП позволяет с гораздо меньшими затратами писать надёжный, расширяемый, краткий, элегантный и эффективный код.

    Прошу не воспринимать моё отношение к ООП как негативное — у него есть свои плюсы, своя ниша. Плюс, в контексте ООП люди смогли изучить очень многое, ведь ООП навело их на многие мысли, создало необходимость в изучении структуризации и модуляризации кода. В контексте ФП это не было бы так очевидно (например, внедрение зависимостей в рамках ФП вообще не интересно изучать, так как в ФП — это просто передача параметров функции, то что мы итак понимаем). Так что всему своё место и время.
    Ответ написан
    7 комментариев
  • Как работает данная рекурсия?

    @UnformedVoid
    Разработчик ПО
    paw(2, 5) = 2 * paw(2, 4)
    2 * paw(2, 4)                   --> paw(2, 4) = 2 * paw(2, 3)
    2 * (2 * paw(2, 3))             --> paw(2, 3) = 2 * paw(2, 2)
    2 * (2 * (2 * paw(2, 2)))       --> paw(2, 2) = 2 * paw(2, 1)
    2 * (2 * (2 * (2 * paw(2, 1)))) --> paw(2 ,1) = 2
    2 * (2 * (2 * (2 * 2)))


    На 3 строчке не готовый результат, а просто значение res и оно просто подставляется вместо рекурсивного вызова функции на пятой.
    Ответ написан
    8 комментариев
  • Как найти одинаковые значения в двух массивах?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Оптимизировать – непереоптимизировать!

    Сортируем только короткий из двух. По длинному один раз и бинарным поиском в коротком.
    let one = ['one', 'two', 'three', 'four', 'five'];
    let two = ['a', 'b', 'five', 'c', 'one'];
    const [long, short] = one.length > two.length ? [one,two] : [two,one];
    short.sort();
    const shortLength = short.length;
    
    const binSearch = needle => {
      let start = 0, finish = shortLength - 1;
      while (start <= finish) {
        const center = Math.floor((start + finish) / 2);
        if (short[center] < needle) start = center + 1;
        else if (short[center] > needle) finish = center - 1;
        else return true;
      }
      return false;
    }
    
    const result = [];
    for (let i = 0, length = long.length; i < length; i++)
      if (binSearch(long[i])) result.push(long[i]);
    
    result // ["five","one"]


    </Г-code>
    Ответ написан
    2 комментария
  • Как вычислить 9**(9**9) не потратив на это огромное количество времени?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Алгоритм:
    1. ручкой пишем на бумаге первые несколько степеней 9
    2. в голове появляется догадка
    Ответ написан
    3 комментария
  • Как сделать так чтобы нумерация начиналась с единицы а не с нуля?

    planc
    @planc
    https://docs.python.org/3/library/functions.html#e...

    my_list = ['apple', 'banana', 'grapes', 'pear']
    for c, value in enumerate(my_list, 1):
        print(c, value)
    
    # Output:
    # 1 apple
    # 2 banana
    # 3 grapes
    # 4 pear
    Ответ написан
    Комментировать
  • Есть ли в русском языке точный аналог слова Lurker в контексте интернет-сообщества?

    NeiroNx
    @NeiroNx
    Программист
    наиболее точное: зевака
    менее точное: зритель
    Ответ написан
    Комментировать
  • Как каждый следующий элемент массива повторять на один раз больше предыдущего?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const newArr = arr.map((n, i) => n.repeat(i + 1));

    или

    const newArr = arr.map((n, i) => Array(i + 1).fill(n).join(''));

    или

    const newArr = arr.map((n, i) => Array(i + 2).join(n));

    или

    const newArr = [];
    
    for (let i = 0; i < arr.length; i++) {
      let str = '';
    
      for (let j = 0; j <= i; j++) {
        str += arr[i];
      }
    
      newArr.push(str);
    }

    или

    const newArr = [];
    
    for (const n of arr) {
      let str = '';
    
      while ((str = str.concat(n)).length <= newArr.length) ;
    
      newArr[newArr.length] = str;
    }
    Ответ написан
    1 комментарий
  • Переход из web-разработки в SAP?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Насколько выгодным будет трансфер в SAP

    3639946.jpg

    будет очень тяжело выйти с него в случае какого нибудь форсмажора.

    Никто из моих знакомых SAP'истов не сидит без работы и дня. Правда, никто из них свою работу не любит.
    Ответ написан
    23 комментария
  • Как составлять формулы в мат.логике?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала научитесь выражать всё словами.
    Что такое "эквивалентность"? Это значит, что оба операнда (A и B) равны, то есть либо оба они равны единице, либо оба равны нулю.
    Оба операнда равны единице: A∧B
    Оба операнда равны нулю: ¬A∧¬B
    Общее выражение: A∧B ∨ ¬A∧¬B
    Избавляемся от дизъюнкции: ¬(¬(A∧B) ∧ ¬(¬A∧¬B))
    Остаётся составить таблицу истинности и проверить
    A | B | ¬(¬(A∧B) ∧ ¬(¬A∧¬B))
    0 | 0 |           1
    0 | 1 |           0
    1 | 0 |           0
    1 | 1 |           1

    Во втором случае утверждение будет "из A следует B и из B следует A".
    (A→B) ∧ (B→A)
    Остаётся избавиться от конъюнкции
    ¬((A→B) → ¬(B→A))
    Ответ написан
    Комментировать
  • Тратит ли функция cb = ( e ) => e ресурсы на вычисления?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В общем случае да - как минимум на создания контекста вызова, но после оптимизации может и не тратить, identity функция (функция просто возвращающая свой аргумент, как Ваш cb) хорошо инлайнится, тут вопрос в том - инлайнится ли функция, в которую Вы ее передаете.

    Для понимания, нужно понимать, что v8 делает с кодом под капотом:
    Когда платформа (браузер, node.js) только загрузила исходный код в v8, то выполняет его с помощью интерпретатора Ignition, а заодно анализирует это выполнение. На этом этапе весь код выполняется как есть.
    Функции которые вызвались 2-3 раза отправляются в оптимизирующий JIT компилятор TurboFan, который скомпилирует из JS машинный код и сделает множество оптимизаций. В частности он может инлайнить некоторые функции (но не все).
    Например, если при анализе кода выяснится, что некая функция f0 постоянно вызывает f1 передавая ей Ваш cb, и при этом f1 чистая функция - то f1 скорее всего заинлайнится в f0, а вызов cb просто заменится на свой аргумент. Но опять же, все зависит от Вашего кода и на сколько он оптимизируемый.

    В любом случае identity функция очень легкая
    Ответ написан
    4 комментария
  • Как сделать визуальное отображение ЭП в pdf и word?

    Jump
    @Jump
    Системный администратор со стажем.
    Ну сделайте такую картинку в любом графическом редакторе, и вставляйте ее в нужное место документа.
    Проблема то в чем?
    Ну и смысл такого творчества не совсем понятен - не проще ли посмотреть подпись в свойствах файла.
    Мало ли что в документе указано - а вдруг он не подписан?
    Ответ написан
    Комментировать
  • Есть ли жизнь в госкорпорациях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Всегда считал, что как раз в корпорациях хорошо, а работать не надо в стартапчиках, так как там панибратство, бардак, нестабильность и прочий детский сад.
    Ответ написан
    15 комментариев