• Оцените качество кода?

    tsarevfs
    @tsarevfs
    C++ developer
    Видали и страшнее. 4 из 10.
    Из минусов:
    del не нужен. Сборщик мусора справится с очисткой.
    Используйте with для открытия и зактрытия файлов.
    Не то что бы структура очень сложная, но какие-то части можно бы вынести в отдельные функции. Это лучше бессмысленных коментариев типа #Print.
    Разный стиль именования. CamelCase и snake_case для переменных
    Смешивание " и '
    Из плюсов:
    Спасает то, что код простой.
    Осмысленные имена переменных.
    Какая-то структура.
    Ответ написан
    2 комментария
  • При устройстве в it компанию или web-студию требуют военный билет?

    tsarevfs
    @tsarevfs
    C++ developer
    Спросите у рекрутера будет ли нужен военник сразу. Сейчас вроде бы с этим сложнее, но несколько лет назад я устраивался на работу пока отношения с военкоматом были в процессе оформления.
    Ответ написан
    Комментировать
  • Как лучше искать путь среди окружностей?

    tsarevfs
    @tsarevfs
    C++ developer
    Достаточно легко доказать что пути будут лежать по общим касательным и дугам между точек касания для непроходимых сфер. Можно строить динамический граф и использовать A*.
    C тормозящими кругами может быть сложнее. Если они не могут пересекаться с препятствиями, то их выгоднее обходить по дуге, которая не более чем в pi/2 (~1.5) длинее хорды.
    Если могут, то если аналитическое решение найти трудно, я бы добавил несколько точек на границе медленных зон в граф и искал приближенное решение.
    Про непроходимые круги: https://redblobgames.github.io/circular-obstacle-p...
    Ответ написан
    2 комментария
  • Почему происходит удаление объекта при конструировании одноименных объектов?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Эквивалентная запись для присваивания:
    a = A(2);
    Тут создается временный объект, который удаляется после исполнения этой строки.
    Оператор присваивания принимает константную ссылку на этот временный объект и потенциально изменяет значения полей объекта this (в вашем случае менять нечего).
    Вывод ожидаемый. 2 и 3 строки -- содание и удаление временного объекта.
    Ответ написан
    4 комментария
  • Что кому принадлежит из этих объектов?

    tsarevfs
    @tsarevfs
    C++ developer
    Не стоит плодить сущностей без необходимости. Если сомневаетесь нужен ли пилот или нет, значит скорее всего он не нужен.
    Пилот владеющий самолетом ситуация чуть более экзотичная как мне кажется. Если взять игру симулятор, то кажется логичным что пилот находится в системе координат самолета а не наоборот.
    Ответ написан
  • Как реализовать зрение на пайтон?

    tsarevfs
    @tsarevfs
    C++ developer
    Основной подход к таким задачам в настоящий момент это reinforcement learning (обучение с подкреплением). Советую поискать статьи на хабре по этим ключевым словам.
    tensorflow и pythorch две основные библиотеки которые сейчас используются.
    Ответ написан
    Комментировать
  • Зачем и когда нужно использовать указатели в C++?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Обратите внимание, что в например в python, переменные не базовых типов очень похожи на ссылки в C++.
    >>> a = [1, 2, 3]
    >>> b = a
    >>> b.append(4)
    >>> print(b)
    [1, 2, 3, 4]
    >>> print(a)
    [1, 2, 3, 4]


    В С++ при присваивании происходит копирование. Вам нужно явно использовать ссылки или указатели чтобы повторить такое же поведение.

    Как уже упоминали, для создания массивов (или других структур данных) произвольного размера используется new, который возвращает указатели. В современном C++ это стараются спрятать за классами контейнеров (vector, map, ...) и умными указателями. Но внутри у них лежат те самые указатели.

    Тема большая и заслуживает несколько лекций. Я читал, что товарищи из яндекса сделали достаточно хороший курс. Гуглите "Белый пояс C++".
    Ответ написан
    1 комментарий
  • Почему не получается переписать функцию под С++?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    ToBytes делает что-то не то.
    Оба ответа не похожи на правду. Попробуйте воспользоваться любым онлайн калькулятором md5 для проверки.
    www.zedwood.com/article/cpp-md5-function этой штукой можно сразу получить ответ.
    Ответ написан
    5 комментариев
  • Как выбрать структуру 2d программы?

    tsarevfs
    @tsarevfs
    C++ developer
    Попробуйте описать из каких объектов состоит ваша программа.
    Нарисуйте хоть какую-то схему из ваших классов (я использовал draw.io):
    5d24716776b95972194416.png
    Правильнее использовать UML, но это не обязательно.
    Подумайте о пользовательских сценариях:
    Как вы будете получать входные данные?
    Есть ли иерархия элементов (элементы из других элементов)?
    После этого можно будет уже как-то смотреть и улучшать какие-то части.
    Ответ написан
    Комментировать
  • Девайс для обучения в вузе?

    tsarevfs
    @tsarevfs
    C++ developer
    Ноут c Windows самый простой вариант.
    Linux/MacOS плюс виртуалка на втором месте.
    IpadPro если точно знаешь что тебя ждет.

    Из того что может попасться и вызвать проблемы:
    Документы в Word, которые разъезжаются в других редакторах.
    Excel
    Matlab (есть аналоги под linux, но тут зависит от препода)
    Ассемблер x86_64
    Лабы с требованием делать на WinAPI / Delphi(Я делал аналоги с Qt, но зависит от преподавателя)
    Доработка софта написанного в 2003 студии предыдущими студентами (обычно проще выкинуть и переписать).
    Skype

    Из параметров смотри на:
    Память, процессор, ssd
    Вес и размер(небольшой если зрение норм).
    Экран.
    Видеокарта скорее не нужна.
    Тач нафиг не нужен.
    Ответ написан
    Комментировать
  • В чем правильно хранить словарь для Python?

    tsarevfs
    @tsarevfs
    C++ developer
    Для конфигов или статических данных удобно использовать json/yaml/xml файлы.
    Базу данных логично использовать там где данные структурированы и эту структуру важно поддерживать. Например оценки студентов доолжны принадлежать существующим студентам по существующим предметам. Также базы данных позволяют совершать транзакции, гарантируя что читать данные мы будем в правильном состоянии.
    Хранить данные в коде в большинстве случаев не очень удобно.
    Ответ написан
    Комментировать
  • В чем состоит проблема секвенирования?

    tsarevfs
    @tsarevfs
    C++ developer
    Проблема в том что взять цепочку пинцетом и прочитать под микроскопом не получится. Ее размеры на порядки меньше чем то с чем можно работать простыми методами. Различные методы умеют читать короткие куски с разными показателями точности. Сложность заключается в собирании целой строки из большого количества случайных ее частей (части получаются от множества копий одной цепочки). Эти куски могут содержать ошибки, поэтому нужен механизм их исправления.
    Ну а делают это для того чтобы с помощью этой информации получить знания о здоровье или организме в целом: о генетических заболеваниях, предрасположенности к проблемам со здоровье, о родстве или предках.
    Ответ написан
    Комментировать
  • Почему не вызывается QFileDialog()?

    tsarevfs
    @tsarevfs
    C++ developer
    Попробуйте добавить еще ожин аргумент. У вас получается что в self прилетает bool от кнопки.

    def showDialog(self, checked):
    Ответ написан
    3 комментария
  • Как заставить функцию изменить список, переданный в виде параметра?

    tsarevfs
    @tsarevfs
    C++ developer
    >>> def m(l):
    ...   l.pop(0)
    ... 
    >>> l
    [1, 2, 3, 4]
    >>> m(l)
    >>> l
    [2, 3, 4]


    Другой вариант -- работать с копией массива и возвращать его из функции через return.
    Ответ написан
    Комментировать
  • Нужно последовательно ввести список целых чисел, код не работает. В чем ошибка?

    tsarevfs
    @tsarevfs
    C++ developer
    Там где у вам генератор списка, вы к int пытаетесь привести не input, а все выражение. Переместите закрывающую скобку в правильное место.
    Ответ написан
    Комментировать
  • Как сравнивать интервалы?

    tsarevfs
    @tsarevfs
    C++ developer
    Скорее всего сравнение можно определить поразному в зависимости от задач.
    Я использовал определения, в которых один интервал меньше другого если все его точки меньше чем все точки другого. Т.е. для пересекающихся интервалов < и > всегда вернут false.
    Ответ написан
    Комментировать
  • Как использовать множество переменных в одном коде?

    tsarevfs
    @tsarevfs
    C++ developer
    В вашем случае напрашивается использование массива обьектов.

    Обьект позвоит сгруппировать переменные относящиеся к описанию одного кубика.
    StartD1, StartD2, ..., StartD5 превратятся в один метод Start.
    class Box
    {
        public int x; 
        public int xs;
        public void Start()
        {
        	//ваш код
    
        }
        public bool isOver() //наверно можно придумать имя лучше
        {
        	return x < xs - 1 || x > xs + 1;
        }
    }
    ...
    //создаем массив кубиков
    int size = 10;
    Box[] boxes = new Boxes[size];
    //запозняем его
    for (int i = 0; i < size; ++i)
    {
    	boxes[i] = new Box();
    }
    //используем
    for (int i = 0; i < size; ++i)
    {
    	if (boxes[i].isOver()) 
    	{
    	    GameOver();
    	}
    	else
    	{
    	    boxes[i].Start();
    	}
    }


    Чтобы адаптировать это к вашему случаю надо научиться по имени обьекта "D-4 l" получать его номер i=4.
    Это можно реализовать с помощью www.quizful.net/interview/csharp/parse-tryparse-di... предварительно вырезав нужный кусок строки с помощью substring.
    Ответ написан
    3 комментария
  • Выбор языка программирования. Как сделать правильный выбор?

    tsarevfs
    @tsarevfs
    C++ developer
    За вас этот выбор никото не сделает.
    Плюсы сложно и больно. Инструменты сильно отстают от других языков. Ну и чем меньше программистов С++ тем больше моя зарплата.
    Python хорош как второй язык. Автоматизация, тесты очень часто написаны именно на нем. Учить его не сложно. Идеален для прототипов и маленьких сайд проектов.
    Java, C#, Go, Kotlin имеют свои плюсы и минусы. Тут надо выбирать то что нравится и по вакансиям.
    Ответ написан