• Как решать задачу?

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

    Рассмотрим теперь один уровень, который описан 4 числами a,b,c,d и нам надо оставить как можно больше шаров белого цвета (их d). За один ход мы можем приравнять к 0 одно из 4 чисел и вычесть по 1 из отсавшихся ненулвевых. Ясно, что нет смысла занулять d. Т.о. за 3 хода мы можем получть 0,0,0,max(0,d-3). Но, например, если у нас было 2 2 2 3, то занулив a и b мы уменьшениями на 1 зануляем и c. Т.е. для маленьких чисел имеет смысл подумать в каком порядке их занулять. Но мне лень даже думать как именно - ведь их всего 3 числа - можно тупо перебрать все 6 перестанвок и выбрать ту, в которой за наименьшее количество ходов мы их все занулим.
    Ответ написан
    3 комментария
  • Что делать с Постановлением Правительства № 258 от 01.03.2024 по АТЗ?

    @Wexter
    У нас нет ИБ-шника

    С этого и начните
    Ответ написан
    Комментировать
  • Облачное хранилище Bitrix не отображаются картинки почему?

    Проверьте что выводится в коде сайта
    Проверьте домен, cors
    Проверьте отдаются ли размеры картиной
    Ответ написан
    Комментировать
  • Что лучше юзать для восстановления системы BTRFS или RSYNC на Linux?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Хм. Загадочный какой-то вопрос... Типо "если я приделаю на автомобиль крылья - будет ли он плавать под водой?".

    BTRFS - формат файловой системы (Binary TRee FileSystem)
    rsync - программа синхронизации чего-то с чем-то

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Чтобы сделать эту порнографию, нужно прочитать первые 10 страниц любого учебника javascript.
    - return item[index] >= 25
    + return item[1] >= 25 && item[2] === true
    Ответ написан
    4 комментария
  • Как сформировать список по вложенному массиву рекурсивной функцией?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, будем извращаться.
    <?php
    function formatList(array $list): string
    {
        $result = '';
        foreach ($list as $key => $value) {
            if (!is_array($value)) {
                $result .= "<li>{$key} => {$value}</li>";
                continue;
            }
            $result .= "<li>{$key} =></li>";
            foreach ($value as $item) {
                $result .= formatList($item);
            }
        }
        if ((debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]['function'] ?? '') !== 'formatList') {
            $result = "<ul>{$result}</ul>";
        }
        return $result;
    }
    print formatList($arr);

    <ul><li>id => 1</li><li>name => item1</li><li>items =></li><li>id => 2</li><li>name => item2</li><li>items =></li><li>id => 3</li><li>name => item3</li><li>items =></li><li>id => 4</li><li>name => item4</li><li>items =></li><li>id => 5</li><li>name => item5</li><li>items =></li><li>id => 6</li><li>name => item6</li><li>items =></li></ul>
    Ответ написан
    2 комментария
  • Как можно соединить 2 массива в 1 без 2 forEach?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Объединение на основание совпадений свойств id объектов, используя Map и reduce, при пересечение одинаковых свойств, значение свойства будет заменено на значение из массива array2 (т.к. в тз не указано условие обработки одинаковых свойств):
    const array1 = [{
        'id': 3231,
        'stage': 3,
        'sort': 999,
    }];
    
    const array2 = [{
        'id': 3231,
        'status_client': 3,
        'status_date': '2024-11-22 16:18:58',
        'sort': 999,
    }];
    
    const map = new Map(array2.map((item) => [item.id, item]));
    
    const reduced = array1.reduce((acc, item) => {
        const _item = map.get(item.id);
    
        _item
            ? acc.push({..._item, ...item})
            : acc.push(item);
    
        return acc;
    }, []);
    
    console.log(reduced);
    
    // [
    //   {
    //     id: 3231,
    //     status_client: 3,
    //     status_date: '2024-11-22 16:18:58',
    //     sort: 999,
    //     stage: 3
    //   }
    // ]
    Ответ написан
    Комментировать
  • Как написать правило в nginx чтобы адрес типа http://localhost:8099/home/index/alex попадал в GET['url'] параметр?

    IvanU7n
    @IvanU7n
    nothing interesting here
    -      try_files $uri /$uri /index.php?$query_string;
    +      try_files $uri $uri/ /index.php?url=uri&$query_string;

    но сомнительная задумка, т.к. то же относительно легко вытаскивается через $_SERVER['REQUEST_URI']
    Ответ написан
    Комментировать
  • Как вывести правильный формат даты в JS?

    Elaryks
    @Elaryks
    В JS месяцы начинаются с 0, поэтому new Date (2001, 5, 5) — это июнь (06), это нужно учитывать. Кроме того, вы делаете проверку, если день меньше 10 и месяц меньше 10, при этом действие внутри блока бессмысленно — data далее не используется.

    Вариант с парсингом Date
    const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
      const days = String(date.getDate()).padStart(2, '0');
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const year = date.getFullYear();
    
      return [days, month, year].join(separator);
    };

    Вариант с использованием Intl.DateTimeFormat
    const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
      const options = { day: '2-digit', month: '2-digit', year: 'numeric' };
      const formatter = new Intl.DateTimeFormat('ru-RU', options);
    
      return formatter.format(date).replace(/\./g, separator);
    };
    Ответ написан
    Комментировать
  • Как передать имя таблицы как параметр?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Никак.
    Ответ написан
    Комментировать
  • Как передать имя таблицы как параметр?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Но таблиц стало много и неопределённо много.

    Вижу два варианта.

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

    Второй - таблицы имеют идентичную структуру. В таком случае возникает вполне обоснованный вопрос - а почему это несколько таблиц, а не одна? возможно, вместо отдельной таблицы просто с дополнительным полем, идентифицирующим группу.

    Отдельно стоИт вариант, который является подвариантом первого, с той лишь особенностью, что тексты запросов абсолютно совпадают. В этом случае возможным решением может служить хранимая процедура, куда передаётся в виде параметров и имя таблицы, и значение критерия, а внутри выбирается либо строится с помощью CASE текст запроса, выполняемый потом динамическим SQL.
    Поясню вариант "строится" - имя таблицы передаётся как параметр хранимой процедуры, там он сравнивается с набором предопределённых литералов, и уже этот предопределённый литерал, а не переданный параметр, участвует в построении текста запроса.

    На строго в рамках PDO - полностью согласен с предыдущим оратором. Никак.
    Ответ написан
    2 комментария
  • Как обновить PHP на сайте?

    @Refguser
    Решения для бизнеса: от создания ИМ до...
    Подскажите пожалуйста, как обновить PHP на сайте. Имея только доступ в wordpress-admin?

    никак.
    Или это можно будет сделать только из личного кабинета данного хостинга?

    Из панели управления хостингом.
    Ответ написан
    Комментировать
  • Как обновить PHP на сайте?

    SagePtr
    @SagePtr
    Еда - это святое
    Если сайт на шаред-хостинге, то только хостинг-провайдер может обновить на сервере программное обеспечение, в таком случае максимум можете обратиться в техподдержку с просьбой сделать это. Если на сервере установлены несколько версий PHP, можно в панели управления хостингом переключиться на любую уже установленную, но устанавливать новые не получится, не обладая на сервере административными правами.
    Если же сайт на VPS или собственном сервере - то вы сами себе администратор, обновлять в таком случае в зависимости от установленной операционной системы и дистрибутива (в случае использования Linux). Если установлена какая-нибудь панель управления - там эта функция может быть упрощена до нажатия на несколько кнопок.
    Ответ написан
    Комментировать
  • Как посчитать количество пересечений с помощью метода filter?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Решим задачу в общем виде - сделаем функцию, находящую количество совпадающих элементов у любых итерируемых объектов. Причём под совпадением будем понимать не обязательно непосредственное равенство (оставим это как вариант по умолчанию), а равенство некоторых производных значений. Так что к чёрту filter (а ещё Safari - говорят, яблочные уроды пока не реализовали поддержку методов итераторов; впрочем, сделать обычный for...of вместо reduce не проблема):

    function countIntersections(data1, data2, key = n => n) {
      const getKey = key instanceof Function ? key : n => n[key];
      const keys = new Set(Array.from(data2, getKey));
      return data1[Symbol.iterator]().reduce((acc, n) => acc + keys.has(getKey(n)), 0);
    }

    В вашем случае применять так: const result = countIntersections(newWord, glas);.

    Другие примеры использования:

    countIntersections(Array(7).keys(), Array(4).keys()) // 4
    countIntersections('abCdE', 'ACe', n => n.toLowerCase()) // 3
    countIntersections([ { id: 1 }, { id: 2 }, { id: 3 } ], [ { id: 3 } ], 'id') // 1
    Ответ написан
    Комментировать
  • Проблема с последовательным подключением свичей в чем мой косяк?

    @sinenkin Автор вопроса
    Проблема решена оказалось при подключении одного из свичей он брал адрес роутера как свой свич старый и управляемый оказался поменял адрес и все заработало
    Ответ написан
    Комментировать
  • Как в Битрикс создать join запрос к HLBlock?

    Потому-что в select нужно указать 'COST.<имя поля из COST>'. Например:

    $hlSelect = array('COST.ID', 'COST.UF_NAME');
    Ответ написан
    1 комментарий
  • Какая логика у перебора массива таким способом?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    i — это индекс массива — номер позиции в нём, считая от 0.
    arr[i]значение, которое лежит в массиве arr в позиции i.
    ещё проще
    Массив представьте как ряд одинаковых коробочек, юпронумерованных от 0 до N.
    В коробочках что-то лежит. Обратиться к коробку можно по имени массива и номеру ячейки: arr[4] например – это пятая по счету коробка, т.к. счет идёт от 0.


    Последовательность получается примерно такая:
    min = 12;

    i = 0; arr[i] = 12; arr[i] меньше min? НЕТ. идём дальше
    i = i + 1
    i = 1; arr[i] = 5; arr[i] меньше min? ДА. min становится 5; идём дальше
    i = i + 1
    i = 2; arr[i] = 8; arr[i] меньше min? НЕТ. идём дальше
    i = i + 1
    ...
    i = 4; arr[i] = 3; arr[i] меньше min? ДА. min становится 3; идём дальше
    ...
    for закончил работу, min так и остался равным 3
    Ответ написан
    Комментировать
  • Как добавить класс элементу до нужного по списку?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    for (var i = 0; i < elements.length; i++) {
        if (i < items) {
            elements[i].classList.add("red");
        }
    }

    const items = 5;
    const elements = document.querySelectorAll(".elem");
    
    elements.forEach((el, i) => {
        if (i < items) {
            el.classList.add("red");
        }
    });
    Ответ написан
    1 комментарий
  • Какая утилита root доступа для Linux работает в консольном режиме без белого ip?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Зависит от условий.
    Для linux есть коробочное решение для управления серверами - это ssh.
    А вот как вы к нему будете достукиваться - зависит от того, есть ли на 4G модемах публичные ip или нет.
    1. Если есть и они статические - просто открывается доступ в файрволе и ходите по адресам.
    2. Если есть и они динамические - настраиваете Dynamic DNS на каждом сервере, чтобы ходить по именам.
    3. Нет. Организовываете автоматическое подключение серверов куда-либо по VPN, чтобы была возможность заходить на них через адреса VPN сети.
    Ответ написан
    Комментировать
  • Как правильно перебрать вложенный массив и вывести результат?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    <?php
    $goods = [
        'ASUS TUF' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
        'ARDOR GAMING NEO' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
        'MSI Katana' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
        'HUAWEI MateBook D 16 2024 MCLF-X' => ['Ноутбуки для работы', 'Ультрабуки'],
        'Samsung Book3 Pro 360 NP960' => ['Ноутбуки для работы', 'Ультрабуки', 'Ноутбуки-трансформеры']
    ];
    
    echo "<ul>";
    foreach ($goods as $name => $categories) {
        echo "<li>$name: " . implode(", ", $categories) . "</li>";
    }
    echo "</ul>";
    ?>
    Ответ написан
    Комментировать