• Определить победителя КНБ?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    (-1) % 3 = 2

    Это математическое определение вычетов по модулю. Все числа, которые отличаются на n, имеют одинаковый остаток по модулю n. Конфуз происходит из-за того, что операция взятия по модулю во многих языках программирования работает не так. Для отрицательных чисел она выдаст отрицательное значение, правда к которому можно прибавить n, что бы получить правильный модуль - число от 0 до n-1.

    Поэтому при реализации можно делать (a-b+3)%3 Или преобразовать, чтобы не было вычитания: b == (a+1)%3
    Ответ написан
    Комментировать
  • Как назначить одни и те же горячие клавиши для добавления/удаления комментария в Visual Studio 2019?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Выделяете фрагмент кода.
    Ctrl + K, C это закомментировать
    Ctrl + K, U это раскомментировать.
    Клавиши нажимаются последовательно при зажатом Ctrl.
    Ответ написан
    2 комментария
  • Как ускорить код?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Там от "цикла в цикле" - одно название. Средняя длина вложенного цикла равна l/(l-1), а вовсе не k. То есть каждое новое размещение делается из предыдущего за амортизированное O(1)
    Ответ написан
    Комментировать
  • Как ускорить код?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Никак не ускорить. Во-первых, если вы со сгенерированными размещениями что-то делаете (хотя бы выводите), то сам код генерации уже не медленнее этого. Быстрее может быть только считать что вам там надо умно без генерации вообще.

    Во-вторых, как вам уже сказали - амортизационно это все будет O(s). Потому что внутренний цикл делает "лишних" операций суммарно столько, сколько l-1 на конце всех размещений. Их 0 в l^(n-1)*(l-1) размещениях, 1 в l^(n-2)*(l-1), и т.д. если все это просуммировать, то результат будет меньше l^n - количества итераций внешнего цикла.
    Ответ написан
    Комментировать
  • Какую информацию посмотреть про создание NFT токенов?

    @uyrij
    Соображения про NFT изложены ниже, если читать много букв долго вот пример создания NFT в тестовой сети Ethereum (не на своей ноде) с помощью смартконтракта. Стэк - nodejs
    tldr; https://github.com/onedebos/the-osun-river-nft
    Начну соображения
    Большо цитатой из. https://vc.ru/crypto/28314-sozdaem-svoy-erc20-toke...
    зачем крупные бренды снимают ролики для TikTok
    Артём Лисовский
    1.11.2017
    Создаем свой ERC20 токен на базе Ethereum за 2 минуты
    В задаче создания своего токена и проведения ICO нет никакой магии с технической стороны. [Skip]
    создадим наш ERC20 токен на базе Ethereum максимально быстро.

    Solidity/pyEthereum(токен на базе Ethereum). Используя знания и/или стандарт написания смарт-монет ERC20(по факту исходник монеты с многими вариантами блекджеков) задеплоить контракт.
    Скажу честно - я лукавил. Вам не нужно разбираться в Solidity. Для запуска своего токена вам необходимо взять исходник токена ERC20, поменять пару строк (с тех пор 2017 все сильно усложнилось и хранить токен в блокчейне оч дорого)и залить контракт в сеть одним из клиентов(оф.клиент Ethereum/Metamask/etc). Адрес NFT будет известен только тем кому скажете (прошу поправить знатоков)
    Конец цитаты т.е. надо быть нодой в сети.
    Если ноды не а есть кошелек есть но не на своей ноде то
    Далее вам если бесплатно - потребуется джедайское владение API криптобиржи
    Небесплатно - галочками и мышкой в гуи. Небесплатно это создание NFT в курируемых платформах (это все биржи opensea, binance и сколько их там ещё 100500+)
    Далее приведу некоторые детали по бесплатному пути создания NFT c использованием некурирумых платформ без использования кода и создания смартконтракта самостоятельно за вас это делает биржа (бесплатно это делает часть бирж)
    Например OPENSEA.IO SDK
    https://github.com/ProjectOpenSea/opensea-js похоже и тож бесплатно rarible.com
    Цитата:
    В настоящее время в криптопространстве существует множество торговых площадок NFT. Не курируемые платформы превратились в жизнеспособную альтернативу курируемым платформам, поскольку они предоставляют бесплатный доступ для всех. Чтобы загрузить на них NFT, пользователям нужно только зарегистрироваться и заплатить комиссию за транзакцию для создания токена.
    Ещё цитата:
    Одна из не курируемых платформ - OpenSea, которая позволяет пользователям чеканить и торговать NFT, просматривать данные о них и проверять статистику. OpenSea, созданный в 2017 году, хранит почти все коллекции крипто-арта, а также огромное количество предметов из многих популярных игр с блокчейном. Платформа имеет довольно удобный интерфейс создания, который позволяет пользователям быстро и эффективно создавать невзаимозаменяемые токены бесплатно.
    Учтите,
    Если будете продавать NFT opensea возьмёт комиссию.
    Для того что все было вообще ещё бесплатней - либо контракт со своей ноды, либо создать и зарегать свою крипту, и создавать NFT в ней.
    Ответ написан
    Комментировать
  • Координаты ПВЗ транспортных компаний, без API?

    tomclancys
    @tomclancys
    Пишите в тех. поддержку этих транспортных компаний и просите эти данные в нужном формате и выгружаете.
    Обычно делают всегда через API и при необходимости данные эти кешируют или хранят в базе чтобы постоянно не дёргать.
    Ответ написан
    Комментировать
  • Почему иногда возникает ошибка Temporary failure in name resolution?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Рекомендую установить какой-нибудь простецкий локальный DNS-сервер, умеющий в кэширование, хотя бы тот же systemd-resolve. Тогда вероятность того, что резолв отвалится с ошибкой, существенно уменьшится.
    Ответ написан
    Комментировать
  • Как узнать за какое время скомпилировалась программа на Golang?

    axifive
    @axifive
    Software Engineer
    Вам нужно засечь время исполнения.
    В Unix системах есть команда: timego ....
    В Windows PowerShell есть Measure-Command{start-process go ... }

    А дополнительную отладочную информацию можно получить с помощью флагов
    https://pkg.go.dev/cmd/compile#hdr-Command_Line
    Ответ написан
    Комментировать
  • Как рассчитать мощность солнечной панели?

    @pfg21
    ex-турист
    потребление, (только лучше не примерное), домножаешь на полтора (~70% суммарный кпд зарядник - аккум - выходной проебразователь) * 24 час. это суточное потребление.
    умножаешь раз в пять-семь (запас на не- или малосолнечные дни) - считаешь необходимую емкость аккума.
    берешь потребление за три дня (опять же про запас) смотришь в табличке инсоляцию для своего региона - считаешь необходимую мощность солнечной панели.
    еще стоит подобрать железяки, могущие напрямую питаться от выбранного аккума.
    да и взять зарядник для аккума с mppt.
    если аккум будет использоваться зимой без утепления, то еще домножаешь на "зимний" кпд. да и смотришь в сторону свинца, ибо кпд замерзшего лития около плинтуса.
    это так... для прикидки :)
    Ответ написан
    Комментировать
  • Вычисление значения синуса в машине с бесконечными регистрами (параллельной)?

    hint000
    @hint000
    у админа три руки
    как вычислить само значение синуса я не могу понять
    https://www.google.com/search?q=sin+степенной+ряд
    https://ru.wikipedia.org/wiki/Ряд_Тейлора
    https://scask.ru/p_book_mat3.php?id=13
    http://www.math24.ru/разложение-функций-в-степенны...

    регистры могут содержать только целые положительные числа, а синус определен на интервале [-1, 1]
    (sinx +1) *100 = 100*sinx + 100; можно вычислять не sinx, а сразу 100*sinx, будет на интервале [-100, 100];
    Хинт: при вычислении суммы ряда можно каждый член ряда сразу умножать на 100.
    Ответ написан
    Комментировать
  • Как заполнить массив числами двоичной СС по порядку?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Ну например вот так
    var ot [64][6]int
    for i := 0; i < 64; i++ {
    	for j := 0; j < 6; j++ {
    		ot[i][5-j] = (i >> j) % 2
    	}
    }

    можно https://play.golang.org/p/Dg6NZOh-uUo
    Ответ написан
    Комментировать
  • Как правильно вынести map/массив в отдельный пакет?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Можете назвать переменную с большой буквы, тогда она будет экспортироваться и можно будет получить доступ напрямую.

    Рабочий пример вашего кода может выглядеть вот так:
    ./localization/localization.go
    package localization
    
    var L = map[string]string{
      "start_message": "Привет. Я - Бот",
    }


    main.go
    package main
    
    import (
      "fmt"
      local "./localization"
    )
    
    func main() {
        fmt.Printf(local.L["start_message"])
    }
    Ответ написан
    Комментировать
  • Что за самодеятельность провайдера?

    vaut
    @vaut
    https и ни один говнюк не вмешается в ваш трафик.

    Если сайт его не поддерживает, можете разного рода тунели использовать.
    Ответ написан
    3 комментария
  • Можно ли узнать какое значение возвращает random в запросе?

    freeExec
    @freeExec
    Участник OpenStreetMap
    SELECT *, rnd FROM items, (SELECT random() AS rnd) AS r WHERE id >= 1000*rnd
    Ответ написан
    Комментировать
  • Как сделать генератор кодов?

    Seasle
    @Seasle Куратор тега JavaScript
    Как-то так. UPD: провел тесты, и переделал логику «сборки» итогового значения.
    const createKeyGenerator = (groupSize, groupCount) => {
        const dictionary = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
        const length = groupSize * groupCount;
    
        return () => {
            const values = new Uint32Array(length);
            crypto.getRandomValues(values);
    
            const chars = [...values].map(value => dictionary[value % dictionary.length]);
            const key = new Array(groupCount)
                .fill(null)
                .map((_, index) => {
                    const offset = index * groupSize;
    
                    return chars
                        .slice(offset, offset + groupSize)
                        .join('');
                })
                .join('-');
    
            return key;
        };
    };
    
    const createKey = createKeyGenerator(4, 3);
    
    console.log(createKey()); // FO4V-P2ZV-JYH4
    console.log(createKey()); // TTMR-EBVC-8TUW

    Также, по-хорошему если данные коды будут хранится в БД, неплохо бы на существование проверять.
    Предыдущая версия

    const createKeyGenerator = (groupSize, groupCount) => {
        const dictionary = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
        const length = groupSize * groupCount;
        const group = new RegExp(`.{${groupSize}}`, 'g');
    
        return () => {
            const values = new Uint32Array(length);
            crypto.getRandomValues(values);
    
            const chars = [...values].map(value => dictionary[value % dictionary.length]);
            const key = '_'
                .repeat(length)
                .replace(/\w/g, (match, index) => chars[index])
                .match(group)
                .join('-');
    
            return key;
        };
    };



    Хочу заметить: не могу гарантировать 100%, что алгоритм будет устойчивым (без повторов). Проверял на Set коллекции, по итогу размер коллекции превысил (16^6 значений) и получил исключение. При этом не было ни одного повтора.
    Ответ написан
    2 комментария
  • Как добавить колонку в базу с данными из другой колонки?

    @dzhebrak
    Сначала добавьте новый столбец:
    ALTER TABLE items ADD COLUMN item_id VARCHAR (16) DEFAULT NULL;

    Затем заполните созданный столбец данными из другой колонки:
    UPDATE items SET item_id = item->>'id';

    В примере выше items - таблица, а item - столбец типа jsonb

    Если новый столбец типа BIGINT:
    ALTER TABLE items ADD COLUMN item_id_int BIGINT DEFAULT NULL;
    UPDATE items SET item_id_int = (item->>'id')::bigint;
    Ответ написан
    Комментировать
  • Как асинхронно перебрать массив, с задержкой между итерациями?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const delay = timeout => new Promise(r => setTimeout(r, timeout));

    async function asyncDelayedForEach(arr, callback, timeout) {
      for (let i = 0; i < arr.length; i++) {
        await callback.call(arr, arr[i], i, arr);
        await delay(timeout);
      }
    }
    
    // или
    
    const asyncDelayedForEach = (arr, callback, timeout) =>
      arr.reduce((acc, n, i, a) => acc
        .then(() => callback.call(a, n, i, a))
        .then(() => delay(timeout))
      , Promise.resolve());
    Ответ написан
    Комментировать
  • Как разом вставить много строк в таблицу postgresql?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    node-postgres этого не умеет.
    Ответ написан
    2 комментария