Задать вопрос
  • Как склонять по числу?

    def pluralize(count: int, one: str, two: str, many: str) -> str:
    	significant = count % 100
    	if 4 < significant < 21:
    		return many
    	last = significant % 10
    	if last == 1:
    		return one
    	elif last == 2 or last == 3 or last == 4:
    		return two
    	else:
    		return many
    Ответ написан
    Комментировать
  • Как создать анимацию как здесь https://promexcut.ru/?

    vabka
    @vabka Куратор тега Веб-разработка
    Конкретно тут это реализовано через плоские 2d-картинки, к которым применяется transform.
    Хотя может быть и правда какой-нибудь сторонний софт умеет в такой вид экспортироваться.
    Вот например картинка с машиной:
    car4.png
    Сами изображения были изначально смоделированы в 3d и отрендерены в картинки с тенями и прозрачным фоном.
    Ответ написан
    Комментировать
  • Break не работает. Причины?

    Unity жалуется на комманду break, но я ее вроде поставил правильно. Помогите пожалуйста

    А где цикл?
    Ответ написан
    Комментировать
  • VMware Workstation в чем разница версий? Принцип рапботы?

    62eb2d1876531641231488.png
    До версии 5.5 использовалась программная виртуализация, в рамках которой всё оборудование эмулировалось силами VMware ws - из-за этого виртуальная машина не имела возможности обращаться к реальному оборудованию, например видеокарте, напрямую.

    После 5.5 "слой виртуализации" перешёл в процессор, в Intel-VT/D и AMD-V
    Ответ написан
  • Для чего нужны Map и Set?

    Окей гугл, что такое "структуры данных".

    Нужны они для не очень частых случаев, когда объект (по сути тот же Map со строковым ключом) или массив не удобны, либо слишком неэффективны (тут следует загуглить О-большое).

    Например при помощи Map ты можешь сопоставить одному объекту другой объект, чего ты никак не можешь сделать при помощи обычных объектов.

    А при помощи Set ты можешь получить массив без повторов, и при этом без необходимости при каждой вставке проверять, есть ли такой элемент в массиве, или нет.
    Ответ написан
    Комментировать
  • Как можно подправить код для выполнения задачи?

    При помощи kstr[N] ты обращаешься к N-ному СИМВОЛУ в строке.
    Тебе нужно сопоставить символ с цифрой и реальное число.
    Проще всего это можно сделать, отняв '0'.
    Код получается примерно такой:
    using System;
    int ks = 0;
    for (int i = 0; i < 999999; i++)
    {
        char[] kstr = i.ToString("D6").ToCharArray();
        var leftPartSum = (kstr[0] - '0' + kstr[1] - '0' + kstr[2] - '0');
        var rightPartSum = (kstr[3] - '0' + kstr[4] - '0' + kstr[5] - '0');
        if (leftPartSum == rightPartSum)
        {
            ks++;
            Console.WriteLine($"{i:D6}|{leftPartSum}={rightPartSum}");
        }
    }
    Console.WriteLine($"Total: {ks}");

    Но код можно улучшить:
    Вместо форматирования числа в строку и обращения к символам по индексу - использовать целочисленное деление и взятие остатка.
    PS:
    Вот сравнение по производительности

    Код:
    using BenchmarkDotNet.Running;
    using BenchmarkDotNet.Attributes;
    
    var summary = BenchmarkRunner.Run<DetectLuckyTicket>();
    
    [MemoryDiagnoser]
    public class DetectLuckyTicket
    {
        private readonly int ticketNumber;
        public DetectLuckyTicket()
        {
            ticketNumber = Random.Shared.Next(1, 1000000);
        }
    
        [Benchmark]
        public bool IsLuckyFast()
        {
            var leftPart = ticketNumber / 1000;
            var leftPartSum = (leftPart / 100) + (leftPart / 10 % 10) + (leftPart % 100);
    
            var rightPart = ticketNumber % 1000;
            var rightPartSum = (rightPart / 100) + (rightPart / 10 % 10) + (rightPart % 100);
    
            return leftPartSum == rightPartSum;
        }
    
        [Benchmark]
        public bool IsLuckySlow()
        {
            var kstr = ticketNumber.ToString("D6").ToCharArray();
            var leftPartSum = (kstr[0] - '0' + kstr[1] - '0' + kstr[2] - '0');
            var rightPartSum = (kstr[3] - '0' + kstr[4] - '0' + kstr[5] - '0');
            return leftPartSum == rightPartSum;
        }
    }


    Результат:
    // * Detailed results *
    DetectLuckyTicket.IsLuckyFast: DefaultJob
    Runtime = .NET 7.0.0 (7.0.22.15202), X64 RyuJIT; GC = Concurrent Workstation
    Mean = 6.417 ns, StdErr = 0.039 ns (0.60%), N = 15, StdDev = 0.150 ns
    Min = 6.113 ns, Q1 = 6.318 ns, Median = 6.408 ns, Q3 = 6.505 ns, Max = 6.671 ns
    IQR = 0.188 ns, LowerFence = 6.036 ns, UpperFence = 6.787 ns
    ConfidenceInterval = [6.257 ns; 6.577 ns] (CI 99.9%), Margin = 0.160 ns (2.49% of Mean)
    Skewness = -0.06, Kurtosis = 2.24, MValue = 2
    -------------------- Histogram --------------------
    [6.034 ns ; 6.193 ns) | @
    [6.193 ns ; 6.427 ns) | @@@@@@@@
    [6.427 ns ; 6.606 ns) | @@@@
    [6.606 ns ; 6.751 ns) | @@
    ---------------------------------------------------
    
    DetectLuckyTicket.IsLuckySlow: DefaultJob
    Runtime = .NET 7.0.0 (7.0.22.15202), X64 RyuJIT; GC = Concurrent Workstation
    Mean = 32.280 ns, StdErr = 0.250 ns (0.77%), N = 100, StdDev = 2.496 ns
    Min = 28.418 ns, Q1 = 30.360 ns, Median = 31.542 ns, Q3 = 33.921 ns, Max = 37.623 ns
    IQR = 3.561 ns, LowerFence = 25.018 ns, UpperFence = 39.264 ns
    ConfidenceInterval = [31.434 ns; 33.127 ns] (CI 99.9%), Margin = 0.847 ns (2.62% of Mean)
    Skewness = 0.63, Kurtosis = 2.09, MValue = 2.91
    -------------------- Histogram --------------------
    [28.207 ns ; 29.529 ns) | @@@@@@@
    [29.529 ns ; 30.941 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    [30.941 ns ; 32.596 ns) | @@@@@@@@@@@@@@@@@@@@@@@
    [32.596 ns ; 33.910 ns) | @@@@@@@@@@
    [33.910 ns ; 35.321 ns) | @@@
    [35.321 ns ; 36.733 ns) | @@@@@@@@@@@@@@@@@@@
    [36.733 ns ; 38.329 ns) | @@@
    ---------------------------------------------------
    
    // * Summary *
    
    BenchmarkDotNet=v0.13.1, OS=Windows 10.0.25131
    AMD Ryzen 5 4600H with Radeon Graphics, 1 CPU, 12 logical and 6 physical cores
    .NET SDK=7.0.100-preview.2.22153.17
      [Host]     : .NET 7.0.0 (7.0.22.15202), X64 RyuJIT
      DefaultJob : .NET 7.0.0 (7.0.22.15202), X64 RyuJIT
    |      Method |      Mean |     Error |    StdDev |    Median |  Gen 0 | Allocated |
    |------------ |----------:|----------:|----------:|----------:|-------:|----------:|
    | IsLuckyFast |  6.417 ns | 0.1599 ns | 0.1496 ns |  6.408 ns |      - |         - |
    | IsLuckySlow | 32.280 ns | 0.8467 ns | 2.4964 ns | 31.542 ns | 0.0382 |      80 B |
    
    // * Warnings *
    MultimodalDistribution
      DetectLuckyTicket.IsLuckySlow: Default -> It seems that the distribution can have several modes (mValue = 2.91)
    
    // * Legends *
      Mean      : Arithmetic mean of all measurements
      Error     : Half of 99.9% confidence interval
      StdDev    : Standard deviation of all measurements
      Median    : Value separating the higher half of all measurements (50th percentile)
      Gen 0     : GC Generation 0 collects per 1000 operations
      Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
      1 ns      : 1 Nanosecond (0.000000001 sec)


    UPD: А не работает у вас, скорее всего, из-за того что:
    1. Вы перебираете не все варианты, а только до 999998 включительно.
    2. У вас WriteLine отрабатывает на все числа, а не только на счастливые, тк перепутаны фигурные скобки.
    Ответ написан
    4 комментария
  • Как рассчитать норму количества багов на проект?

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

    1. Баги гарантированно будут в любом достаточно сложном продукте.
    2. Если не работает какой-то типичный сценарий (например если нельзя добавить в корзину товар в магазине) - это даже не баг, а просто невыполненная (некачественно выполненная) работа.
    3. В любом достаточно долго работающем продукте, которым пользуется много людей, будет исчезающе малое количество критичных багов.

    Чтобы минимизировать количество багов - пишите понятный код, думайте о том, как код будет работать (что может в теории придти в параметрах и вообще пойти не так), закладывайте время на тестирование.
    Ответ написан
    Комментировать
  • Кто знает сколько времени занимает подтверждение личности на Linkedin?


    И банит ли Linkedin Россиян (в связи с нынешней ситуацией)?

    Вроде не банит. По крайней мере те аккаунты, которые до 24.02 созданы
    Ответ написан
    2 комментария
  • Почему int при делении int на int с остатком?

    Да, это нормально.
    Ответ написан
    Комментировать
  • Как определить что запрос к api пришел с клиента?

    Никак.
    Ответ написан
    Комментировать
  • Нужно ли подтверждать опыт работы программистом для собеседовании в иностранные компании?

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

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

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

    При трудоустройстве точно также надо будет в рамках собеседования себя продоать.
    Ответ написан
  • Чем посмотреть MySQL базу под windows10?

    Как вариант - поднять mysql локально и импортировать в него, а потом смотреть через любой просмотрщик: dbeaver, datagrip, да хоть тот же phpmyadmin
    Ответ написан
    Комментировать
  • Как запустить C# в VSCode?

    Комментировать
  • Как хранить настройки пользователя в django?

    Раз настройки, то значит обращение будет только по ключу к единственной существующей записи?

    Если какая-то база данных уже есть, то можно прямо в ней и хранить (не важно, mongo или реляционная)
    На несколько млн записей скорость везде будет примерно одинаковая.

    В файлах хранить точно не стоит

    Если нужно будет очень часто к ней обращаться и классическая база будет узким местом - можно будет добавить слой кэширования в какой-нибудь key-value бд
    Ответ написан
    Комментировать
  • Как правильно нумеровать версии программы?

    Есть ли какие-то определенные правила?

    Правила есть разные. Из популярного - уже упомянутый https://semver.org/lang/ru

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

    Самая простая система нумерации - просто с каждым новым релизом увеличивать номер версии на 1.
    Ещё вариант, который по сути даже и не является номером - брать в качестве версии хэш коммита из git.

    как правильно

    Правильно будет определить, какую проблему ты хочешь решить при помощи особой системы нумерации.
    Если у тебя нет каких-то особых задач типа "номер версии должен сообщать, когда была выпущена версия программы" или "из номера версии должно быть очевидно, совместима ли новая версия со старой", то лучше остановиться на варианте с увеличивающимся номером.
    Ответ написан
    2 комментария
  • Почему Random() возвращает одно и тоже значение в C#?

    Потому что Random генерирует не настоящие случайные числа, а производит определённые операции над сидом.

    Если ты сид не передаёшь, то он будет сгенерирован на основе времени.

    В твоём случае следовало создать один экземпляр Random и вызывать Next на нём.

    Ну и ещё этот класс не потокобезопасен, а по тому, если ты вызовешь Next в двух разных потоках одновременно - ты получишь одно и то же значение
    Ответ написан
    Комментировать
  • Как описать тип "значение любого из ключей типа"?

    Тебе нужен не mapped type, а indexed access type.
    type ComplexObject = {a: number, b: string};
    type ValueOfComplexObject = ComplexObject[keyof ComplexObject];
    const a: ValueOfComplexObject = 42;
    const b: ValueOfComplexObject = "str";
    // const c: ValueOfComplexObject = {}; // Ошибка!


    https://www.typescriptlang.org/docs/handbook/2/ind...
    Ответ написан