• Как работает функция 'map'?

    ptitca_zu
    @ptitca_zu
    Programmer. Reader. Introvert
    > Не могли бы вы вкратце рассказать, как пользоваться генератором?
    Генератором можно пользоваться так же, как и листом. То есть писать
    for i in map(abs, (-1,2): print(i)
    или если Вам нужен сразу весь список, то
    list(map(abs, (-1, 2))
    Отличие генератора от list в том, что генератор не хранит все значения в памяти, а возвращает следующее по мере обращения.
    Ответ написан
    Комментировать
  • Как правильно реализовать функцию рекурсией?

    @Alexander1705
    def depth(arr):
        if hasattr(arr, '__getitem__'):
            return max(depth(i) for i in arr) + 1
        else:
            return 0


    P. S. Можно использовать map:
    def depth(arr):
        if hasattr(arr, '__getitem__'):
            return max(map(depth, arr)) + 1
        else:
            return 0
    Ответ написан
    2 комментария
  • Как выбрать N элементов массива?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Как оптимизировать данный код?

    int p10[] = {0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 1000000000};
    int change(int *a, int *b, int k, int l)
    {
     int rk, rl;
     if(k <= 0 || k > 9 || l <= 0 || l > 9) return 1;
     rk = ((*a/p10[k])%10);
     rl =  ((*b/p10[l])%10);
     *a = *a - (rk*p10[k]) + (rl*p10[k]);
     *b = *b - (rl*p10[l]) + (rk*p10[l]);
     return 0;
    }
    
    только это не перегруженная функция.
    Ответ написан
    5 комментариев
  • (Python) В чем проблема?

    @deliro
    Ставишь PyCharm CE
    Не используешь сублайм вообще. Да, возможно, чарм и оверхэд для таких скриптов, зато он сразу укажет на многие ошибки.
    Удаляешь лишние очевидные комменты и лишний код. Оставляешь так:
    #!/usr/bin/env python3
    # coding: utf-8
    
    db = {
        'bob': {'name': 'Bob Smith', 'age': 42, 'pay': 30000, 'job': 'dev'},
        'sue': {'name': 'Sue Jones', 'age': 45, 'pay': 40000, 'job': 'hdw'},
        'tom': {'name': 'Tom', 'age': 50, 'pay': 0, 'job': None},
    }
    
    if __name__ == '__main__':
        for k, v in db.items():
            print(k, '=>\n', v)
    Ответ написан
    Комментировать
  • Как назвать функцию?

    is_seconds_elapsed()
    можно более развернуто:
    is_seconds_elapsed_since()
    Но с таким названием возвращаемые значения должны быть изменены - если разница превысила, то возвращается true.
    Я лично предпочитаю инвертировать при помощи !, а не использовать not в названии функции, чтобы при необходимости инвертировать значение, возвращаемое функцией, не получилось использование ! и not одновременно - двойное отрицание может запутать при чтении кода.

    Ну а вообще, лучше функцию назвать так, чтобы код читался, как предложение. То есть пожертвовать универсальностью в пользу читабельности:
    if ($this->readyToProcess($timestamp, $seconds))
    {
        // do stuff
    }
    Ответ написан
    Комментировать
  • Почему в консоли появляется знак процента?

    dizballanze
    @dizballanze
    Software developer at Yandex
    Попробуйте в конце вставить перевод строки \n. Есть подозрение, что это просто приглашение ввода командной строки.
    Ответ написан
    1 комментарий
  • Как реализовать архитектуру игры?

    lorka
    @lorka
    Game-develop
    Создать класс "бактерии", с указанием координат, "уровня", уникального ID(пригодится в будущем). В майн классе создать коллекцию(наподобие Map) и процедурой проверки условий "жизни", добавить таймер. В Map заносить с ключом типа "координатаХ-координатаУ"(по этому ключу находить "соседей"). В таймере цикл перебора коллекции, с отрисовкой результата в конце - визуализация по вкусу(хоть OpenGL). Для возможностей "расширения" и "мутации" - желательно уже использовать родительский и дочерние классы, тогда можно описать различные типы "монстров" и их уникальное поведение.
    Ответ написан
    Комментировать
  • Как реализовать архитектуру игры?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Создаете сетку в в виде массива экземпляров класса Cell.
    Потом привязываете по сигналам каждую ячейку к ее соседям методом сonnect.

    Все ячейки привязываете слотом tick к таймеру. В этом слоте организуете обработку тика и опрос соседей.

    От всех ячеек привязываете сигнал draw к чему-нибудь таблицеобразному. Чтобы рисовалось.
    Ответ написан
    Комментировать
  • Какую книгу по C++ почитать?

    donkaban
    @donkaban
    Умею рисовать тени
    За последние 20 лет ничего не изменилось. Страуструпа, обе. Сначала "Язык программирования С++", потом "Дизайн и эволюция". Любые замечания о том, что существуют толкования, более кошерные чем Библия - не слушайте, это неправда. Если будут советовать что то, написанное Шилдтом - баньте таких советчиков, они хотят вам зла.
    Затем уже - читайте Майерса, Саттера, Александреску. Не надо тратить время на эпигонов, это неконструктивно.

    P.S. Видеоуроки? По языку? Однако.
    Ответ написан
    Комментировать
  • Как управлять Raspberry Pi напрямую через Ethernet?

    @vitaliy_saveliev
    Настроить сеть компьютер-компьютер(ip + netmask, без указания шлюза) - очевидное решение
    Ответ написан
    Комментировать
  • Какое время жизни современного SSD как основного и единственного диска в ПК?

    Jump
    @Jump Куратор тега Твердотельные накопители
    Системный администратор со стажем.
    В таком режиме как вы описали ресурса среднестатического ssd емкостью 128-256гигабайт хватит на несколько десятков лет. Т.е ноутбук выйдет из строя гораздо раньше чем ssd исчерпает ресурс.

    Возьмем к примеру ssd Intel SSDSC2CW120A310
    Емкость 120Гб, память - MLS.
    Ресурс по записи MLS памяти около 10000циклов.
    Понятно что идеального использования ресурса не бывает, всегда есть накладные расходы, но тем не менее современные контроллеры очень эффективно работают с памятью, и можно уверенно рассчитывать как минимум на 80% ресурса.

    Возьмем по минимуму - треть заявленного ресурса 3000циклов.
    Итак 120гб*3000=360000гб или 360террабайт.
    Т.е на диск можно гарантированно записать 360террабайт информации до исчерпания ресурса.

    Теперь подумаем сколько обычный пользователь записывает информации за день работы.
    1)ОС - в обычном режиме это десятки мегабайт, изредка если крупное обновление - сотни мегабайт в день, но это редко.
    2)Прикладной софт и пользователь - ну смотря какой, если у вас будет стоять торрент клиент качающий сериалы каждый день - то много, но много ли сериалов уместиться на ваш 120гб диск?
    Поэтому при обычной работе обычнй пользователь обычно пишет порядка 1-3 гигабайт, редко больше.

    Т.е средня запись за день работы настольного 1-10гигабайт.
    Ну даже возьмем 50гигабайт.
    360000гб/50гб=7200
    Т.е записывая каждый день по 50гигабайт вы исчерпаете ресурс диска за 7200дней.
    7200/365=19,7 Т.е примерно 20лет.
    Ответ написан
    5 комментариев
  • Что делать со старым роутером?

    ifaustrue
    @ifaustrue
    Пишу интересное в теллеграмм канале @cooladmin
    А что оно у вас обливается? TP - Link у вас "простенький", без особых наоворотов и тыды.

    Поднимите на нём hotspot для соседей (пустив весь трафик через анонимирующий прокси - чтобы свой белый адрес не спалить за просмотром порно которое вы и так смотрите) с ограничением по скорости и без пароля - подарите душе успокоение, железу вторую жизнь, а соседям возможность читать ЖЖ навального...

    ***это на случай отсутствия не охваченных вайфаем родственников из соседнего совета.
    Ответ написан
    3 комментария
  • Как реализовать цифровую клавиатуру при наборе номера?

    baskerville42
    @baskerville42
    Учусь работать (Junior)
    <input type="number">
    <input type="tel">
    Ответ написан
    Комментировать
  • Как программе удалить саму себя?

    EXL
    @EXL
    Энтузиаст
    Для распространения своей утилиты под различными операционными системами вы можете воспользоваться кросс-платформенным установщиком Qt Installer Framework 1.5.0. Если мне не изменяет память - возможность удаления программы там присутствует. А вообще лучше всего сделать так:
    Для Windows - установщик, который создает в меню "Пуск" ярлык на "unist.exe", удаляющий программу.
    Для Linux - deb-пакет/tar.gz-пакет. Функция удаления линуксоидам не нужна, эту задачу решит пакетный менеджер, против которого ставить софт не рекомендуется.
    Насчет Mac OS/OS X не знаю, но думаю там есть возможность удаления установленного приложения из каталога установленных программ.

    Делать внутри программы функцию удаления этой программы - весьма плохой тон.
    Ответ написан
    Комментировать