Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

napa3um

  • 101
    вклад
  • 0
    вопросов
  • 136
    ответов
  • 40%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Где найти задачи по упрощению логических выражений?

    longclaps
    longclaps @longclaps
    Скилы по упрощению логических выражений пусть лучше лошадь развивает, у неё голова большая )))
    Но раз уж тебе так приспичило - вот тренажер:

    from random import choice
    
    def scheme(n, m):
        """
        :param n: число входных аргументов, не более 26 (a..z)
        :param m: число логических операций, фигачь сколько влезет
        :return: строка с логическим выражением для упрощения
        """
        l, s = list('abcdefghijklmnopqrstuvwxyz'[:n]), ''
        while s.count('(') < m:
            op = choice(('not', 'and', 'or', '^'))
            s = f'(not {choice(l)})' if op == 'not' else f'({choice(l)} {op} {choice(l)})'
            l.append(s)
        return s
    
    print(scheme(5, 10))

    Вот проверялка, никакой обработки ошибок, всё по хардкору - извини:

    import re
    from itertools import product
    
    def check(task, solution):
        """
        :param task: строка задачи
        :param solution: строка решения
        :return: эквивалентны ли они (bool)
        """
        args = sorted(set(re.findall(r'\b[a-z]\b', task)))
        chk = compile(f'({task})==({solution})', '<string>', 'eval')
        return all(eval(chk, {}, dict(zip(args, bulls)))
                   for bulls in product((False, True), repeat=len(args)))
    
    print(check('a and (b or not b)', 'a'))
    print(check('a and (b or not b)', 'a ^ b'))

    Не забудь рассказать об успехах.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Правда ли, что в области высокопроизводительных приложений за Rust'ом будущее?

    inv2004 @inv2004
    1) Правильнее сказать, что у Rust есть потенциал в далёком будущем заменить высокопроизводительный C++.

    2) Rust находится на приличном уровне производительности относительно плюсов, местами даже обгоняет, как пример "наколенных" тестов, можно посмотреть сюда: https://benchmarksgame-team.pages.debian.net/bench...

    3) Сможет ли он заменить - это сложный вопрос, может быть да, а может и нет, тут, ИМХО, несколько факторов.
    3.1) если говорить о максимальной оптимизации (что уже требует unsafe) - то именно в unsafe-коде преимуществ относительно C++ не видно.
    3.2) если сравнивать с популярными языками типа Java/C#/Go, то часто они не так сильно отстают от раста и даже плюсов чтобы переходить на более сложный язык.
    3.3) Язык частично определяет его популярность из-за многих факторов помимо производительности. У раста высокий порог вхождения и большая сложность написания, зато большая надёжность. Если он будет непопулярным, пусть даже быстрым, то возможно ниша останется за плюсами, если вдруг начнёт набирать популярность по каким-то причинам - то возможно и заменит.

    Как верно написали - лет через 10 посмотрим. Немного другой вопрос что надо делать сейчас чтобы шансы заменить выросли.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Форматирование чисел на js. Как сделать пробелы в цене?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    $('.price').text((i, text) => {
      const [ price, currency ] = text.split(' ');
      return `${(+price).toLocaleString()} ${currency}`;
    });

    Ну или (что желательно), перед выводом пропускайте цену через toLocaleString.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Хватит ли знаний математики для написания алгоритма?

    longclaps
    longclaps @longclaps
    Хватит.
    Отбрось сомненья, пиши.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • На одном сайте nodejs с php?

    VoidVolker
    VoidVolker @VoidVolker
    Да, можно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как распарсить 09:00 в дату на js?

    djQuery
    Владимир @djQuery
    "Кодируем помаленьку" ("Сказка о Тройке")))
    Рекомендую библиотеку moment.js, многие проблемы легко решаются с её помощью.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как заставить Node.Js дождаться выполнения MySQL?

    gadfi
    Олег Гамега @gadfi
    https://gamega.org
    используйте async await
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как заставить всех членов комнаты покинуть ее, если вышел создатель?

    Денис Букреев @denisbookreev
    В таком случае надо попробовать "работает такое или нет", а потом задаваться вопросом
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Есть ли преимущества использования mongodb native driver вместо Mongoose?

    index0h
    index0h @index0h
    PHP, Golang. https://github.com/index0h
    Перефразирую ваш вопрос:
    Есть ли преимущества использования двигатель вместо мопеда? В каких условиях или двигатель объективно лучше?

    По аналогии: двигатель нужен, когда вам ни как не помогает оставшаяся часть мопеда и наоборот. Мопед нужен, когда двигателя мало.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как правильно работать с асинхронным кодом?

    bingo347
    Дмитрий Беляев @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Promise
    const dns = require('dns');
    
    function resolve(hostname, rrtype) {
        return Promise.all(rrtype.map(rrt => resolveInternal(hostname, rrt)));
    }
    
    function resolveInternal(hostname, rrtype) {
        return new Promise((resolve, reject) => {
            dns.resolve(hostname, rrtype, (err, data) => { 
                if (err) {
                    reject(err);
                    return;
                }
                resolve(data);
            });
        });
    }
    
    resolve('google.com', ['A', 'MX', 'NS', 'TXT']).then(arr => console.log(arr));
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как составить регулярное выражение на вынос тегов с data-* в div-обертку?

    Rsa97
    Rsa97 @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак. Регулярные выражения не предназначены для разбора вложенных конструкций.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • NodeJS Как получить содержимое post запроса?

    miraage
    Mikhail Osher @miraage
    Старый прогер
    https://www.npmjs.com/package/body-parser
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как правильно очистить память?

    OVK2015 @OVK2015
    Остается, потому что connect задействовано в setTimeout.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как добавить строку в массив?

    yociyavi @yociyavi
    JSON.parse('[[40.712216, -74.22655], [46.773941, -79.12544]]');
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как снизить скорость прокрутки страницы?

    inferusvv
    Владислав Безенсон @inferusvv
    Front-End Developer
    Мой вам совет - никогда не менять нативный скроллинг. Вы говорите "снизить скорость", а у меня на маке через тачпад скорость прокрутки бешеная. Вы никогда не сможете учесть все устройства и сделать так, как ожидаете это вы. У кого то компьютер с обычной мышкой, у кого-то ноутбук. У ноутбуков тоже куча разных тачпадов, работающих по-разному. Мышки есть сенсорные, типа Apple, есть обычный.

    Это была первая причина. Вторая - UX. Когда пользователь хочет проскроллить сайт, он ожидает это сделать с какой то привычной ему скоростью и куда то "попасть". А тут у вас страница улетает, либо наоборот не скроллится (по причинам в первом пункте). Так что лучше оставить эту затею.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Существует ли библиотка для генерации анимированного low poly background?

    GreatRash @GreatRash
    https://qrohlf.com/trianglify-generator/
    alssndro.github.io/trianglify-background-generator
    btmills.github.io/geopattern
    dragdropsite.github.io/waterpipe.js

    dmesh.thedofl.com
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • SCP-579 - [ДАННЫЕ УДАЛЕНЫ]?

    riot26
    riot26 @riot26
    <:З )~~
    Любой школьник, умеющий на пхп связать 2 строчки знает, что промо-коды надо генерировать не по какому-то алгоритму, а рандомно и держать их в БД. А в Яндексе далеко не школьники сидят.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как вывести дату на три дня меньшую/большую чем текущая?

    tgnwest @tgnwest
    var d = new Date(2011, 1, 28);
    d.setDate(d.getDate() + 2);

    alert( d ); // 2 марта, 2011

    Date само определит и высчитает нужную дату.
    Подробнее https://learn.javascript.ru/datetime
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как в js кликнуть по a-->href?

    thewind
    Дмитрий @thewind
    php программист, front / backend developer
    На jquery можно так $('a[href^="/work/"]').trigger('click');
    Ответ написан более трёх лет назад
    7 комментариев
    7 комментариев
  • Как правильно использовать регулярные выражения для replace?

    Lynn
    Lynn «Кофеман» @Lynn
    nginx, js, css
    Примерно так:
    var str = 'my name is {name} and I live in {place}';
    var dict = {
      name: 'lola',
      place: 'city'
    };
    var result = str.replace(/{(\w+)}/g, function(s, tag) {
      return dict[tag];
    });


    mdn.io/replace
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 17 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 8 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 7 ответов
    • 1 вопрос
  • sergey-kuznetsov
    Сергей Кузнецов
    • 6 ответов
    • 0 вопросов
  • низкомолекулярный макрос
    • 4 ответа
    • 1 вопрос
  • mordo445
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации