Задать вопрос
  • Общий поворот клеток, как это реализовать?

    @U235U235
    Координаты частиц и вектора направлений умножаешь на матрицу поворота. Все.
    Ответ написан
    Комментировать
  • Как найти такой определенный интеграл?

    Nizamovoff
    @Nizamovoff Автор вопроса
    Оставлю кринж аккаунт на память)
    Разобрался. tgx имеет точки разрыва при pi/2 и 3pi/2, поэтому надо было разбить на несколько интегралов и для каждого из них отдельно найти предел 63eba110db3d7023894365.png
    Ответ написан
    Комментировать
  • Как сделать случайное имя пользователя?

    iMedved2009
    @iMedved2009
    Не люблю людей
    create table public.profiles (
      id uuid not null,
      username text default concat('Пользователь #', random()*100000),
    
      primary key (id)
    );
    Ответ написан
    2 комментария
  • Как можно изменить код, чтобы он работал быстрее?

    Vindicar
    @Vindicar
    RTFM!
    result = numpy.zeros(mask.shape + (3,), dtype=numpy.uint8)
    result[mask > 0] = (255, 255, 255)

    циклы в питоне - штука медленная. Если есть возможность, лучше использовать индексные операции numpy. Они заметно быстрее, чем тот же цикл в питоне.
    Ответ написан
    Комментировать
  • Как позиция объекта соответствует четырёхмерной матрице?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Матрицы используются для записи преобразований. Надо домножать на них вектор из координат точки - получится новый вектор, который и будет результатом преобразования. Любое линейное преобразование можно записать в виде матрицы.

    Четвертая координата позволяет записывать одной матрицей повороты/растяжения и сдвиги. Если у вас матрица 3x3 (не "трехмерная" - у нее все так же есть только ширина и высота), то точка (0, 0, 0) всегда останется (0, 0, 0). Ведь на что 0 не домножай - останется 0. Поэтому матрицами 3x3 можно записать только повороты и сжатия, но не сдвиги.

    Поэтому вводят фиктивное четвертое измерение w. При этом удобно считать, что координаты точки (x, y, z, w) - Это (x/w, y/w, z/w). Это еще иногда называют однородными координатами. Еще один плюс этого объекта в том, что им можно описать точки на бесконечности (когда w = 0).

    Вот тут уже можно составить линейное преобразование (т.е. взять матрицу), которое оставляет w нетронутым, но использует его для сдвига:
    x' = a11*x + a12*y + a13*z + a14*w
    ...
    w' = w

    Вот в a14 - как раз и находится сдвиг по оси X.
    Ответ написан
    3 комментария
  • Можно ли бесконечное число планет выпрямить в бесконечную плоскость?

    По-детски упростив, вроде бы, просто представить:
    в бесконечной Вселенной уже есть некая бесконечная плоскость.

    Все планеты этой Вселенной пусть отбрасывают "тень" точно перпендикулярно на эту плоскость.
    Задача сводится к вопросу: останутся ли на плоскости места без тени?

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

    Есть ли шанс что на бесконечной прямой не встретится ни одной планеты?
    Если таки не встретится – можно позаимствовать из другой "прямой", где планет «избыток»: более одной.

    Только не просите составить алгоритм «задачи про упаковку» на бесконечном пространстве )
    Ответ написан
    Комментировать
  • Как разбить строку на элементы?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Используйте метод строк .splitlines() либо укажите для метода .split() параметр разделитель ”\n”
    Ответ написан
    1 комментарий
  • При чтении из файла, берет только последнюю строку. Почему?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Ну так все логично:
    for line in lines:
            try:
                q = requests.get(line, headers=headers)
            except requests.ConnectionError as e:
                continue
    
    result = q.content

    Значение q меняется каждую итерацию а получение значения q.content и вся дальнейшая работа происходит после завершения всего цикла и очевидно, что берется значение q, полученное последним.
    Ответ написан
    1 комментарий
  • Как реализовать метод stop()?

    @akonovalov
    Программист на компьютере
    Скорее всего, вам подойдёт реализация с помощью "тредов" (они же "потоки", модуль Threading).
    Это будет действительно "в фоне" и вы сможете послать сообщение (через Queue, например) в этот поток, которое затем обработать внутри бесконечного цикла.
    Ответ написан
    Комментировать
  • Какова вероятность появления последовательности?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Прямая формула что-то не вырисовывается, а вот рекуррентная - вполне.

    Покажу сразу на примере: N бросков, М = 4, т.е. считаем F4(N)
    Неважно, что выпало первым броском, пусть, например, 0. Теперь есть следующие варианты:

    1) Вторым броском выпадает 1 (т.е. не то, что в первом броске). Вероятность такого дела 1/2, и задача сводится к F4(N-1) - первый бросок прошел впустую, но ещё "не всё потеряно".
    2) Вторым и третьим выпадает 0, 1. Вероятность 1/4, задача сводится к F4(N-2)
    3) Вторым, третьим и четвертым выпадает 0, 0 ,1. Вероятность 1/8, задача сводится к F4(N-3)
    4) Вторым, третьим и четвертым выпадает 0, 0 ,0. Ура!!! Вероятность 1/8, дальше смотреть не надо.

    Итого, по полной вероятности, F4(N) = F4(N-1)/2 + F4(N-2)/4 + F4(N-3)/8 + 1/8

    Ну и конечно, база рекурсии: Fm(N) = 0, если N < M

    Как обобщить, думаю, очевидно (в знаменателях - степени двойки). Для маленьких M можно нарисовать формулу, например,
    Для М = 2, будет F2(N) = F2(N-1)/2 + 1/2, тут прямо сразу выскакивает F2(N) = 1 - 1/(2^(N-1))

    Для М = 3, получаем F3(N) = F3(N-1)/2 + F3(N-2)/4 + 1/4, тут кури вот это

    и т.д.

    Программно вычисляется с помощью "динамического программирования". С правильным подходом - за O(N) по времени и O(M) памяти, навскидку тут хорошо зайдет кольцевой буфер. Если надо, могу расписать, но там ничего сложного.
    Ответ написан
    9 комментариев
  • Можно ли заставить нейросеть заставить избегать определенных состояний?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Можно, называется - обучение
    Ответ написан
    Комментировать
  • Для чего нужна Java, что можно на ней конкретно написать и стоит ли вообще ее учить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Согласно рейтингам tiobe и renmonk Java стабильно кувыркается где-то на 4 месте в рейтинге популярных языков разработки. Рейтинг Редмонка собирается из двух рейтов популярности (кажется количество вопросов в стековер и количество проектов на гитхабе. Ну или может как-то сложнее ХЗ).

    Первым трем местам в этом анализе я-бы не сильно доверял. Там постоянно идет ротация то JavaScript выскакиевает то C то Swift но ситуация каждый год - новая. Вот сейчас там висит Python... Наверное девопсы подсуетились. И сайентисты.

    В чем сила Java сегодня? Ну во первых в большом объеме легаси кода который уже написан и работает. Java сегодня занимает нишу COBOL в банках и финансовых организациях. И если вы хотите средний достаток, (машина дом, vacation) - то идите спокойно в java и будет кусок хлеба.

    Во вторых в толстом репозитарии бесплатных библиотек на все случаи жизни.
    Например я уже 2 года не пишу на Java ничего ради денег. Но в некоторых скриптах на Scala/Databricks я спокойно подключаю Java-библиотекие (всякие sftp клиенты, json/xml парсеры) и все это нормально интегрируется и работает. И слоган про wrote-once - это не шутка. Это правда работает и в доказательство - целый репозитарий таких либ на mvnrepository.com. Они будут совместимы c Kotlin/Groovy/Scala короче со всеми JVM-based языками.

    Лично я считаю Java как язык слишком многословным. Многие вещи можно короче запрограммировать. Но это просто моё ИМХО. При игры - ничего не скажу. Не знаю. Но вот на Kotlin что-то пишут под Андроид.

    И вообще программист должен больше выбирать род деятельности (фронт или back или железо и микро-контроллеры) а языки учить всю жизнь. Вот так. Вы всю жизнь - студент.
    Ответ написан
    4 комментария
  • Как вычислить количество шагов для вычисления чисел Фибоначчи?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Составьте рекурентное соотношение. Пусть S(k) - сколько шагов надо для вычисления k-ого числа.
    Это будет 1 шаг (сумма в конце), плюс сколько надо шагов, чтобы подсчитать слагаемые. Т.е.:
    S(k) = S(k-1) + S(k-2) + 1
    И известно, что S(1) = S(2) = 0

    Уже можно это все подсчитать, как если бы вы числа фиббоначи считали. Хоть рекурсивно, хоть циклом (что, конечно, быстрее).

    Но можно добавить в обе стороны урванения +1 и сгрупировать слагаемые аккуратно:
    S(k)+1 = S(k-1)+1 + S(k-2)+1

    Тогда, если обозначить G(k) = S(k)+1, то получится:
    G(k) = G(k-1) + G(k-2) и G(1) = G(2) = 1

    Т.е. ответом будет предыдущее число фиббоначи минус один (нам же S(k) = G(k)-1 надо. Плюс, у вас числа с 1,2 начинаются, а тут с 1,1).
    Принципиально от вычислений выше не отличается, но наблюдение интересное.
    Ответ написан
    Комментировать
  • Можно ли подключиться к базе данных sqlite3, которая лежит на сервере?

    Vindicar
    @Vindicar
    RTFM!
    sqlite3 требует доступ к файлу именно как к файлу. Так что тебе придётся подмонтировать каталог с базой к целевой машине, тем или иным способом. Под виндой скорее всего только webdav, под никсами вариантов больше.
    Ну и да, sqlite НЕ рассчитана на одновременный доступ, так что если с этой базой кто-то одновременно работает на сервере и на целевой машине, есть шансы что она поломается.
    Так что от "никакая другая" лучше отказаться при первой возможности.

    А для отладочных целей лучше скопировать базу и гонять скрипт на копии, чтобы не угробить "боевую".
    Ответ написан
    Комментировать
  • Возможно ли в Python сгенерировать сразу 4 цифры, от 1 до 9, чтобы они не повторялись, и записались в разные переменные?

    @Sozdavan
    Да, в Python можно сгенерировать сразу 4 цифры от 1 до 9 без повторения и присвоить их разным переменным. Один из способов сделать это — использовать функцию random.sample из модуля random. Вот пример:

    import random
    
    # generate 4 random digits from 1 to 9 without repetition
    random_digits = random.sample(range(1, 10), 4)
    
    # assign them to different variables
    a, b, c, d = random_digits
    
    print(a, b, c, d)

    Это сгенерирует 4 случайных цифры от 1 до 9 и назначит их 4 различным переменным a, b, c, d соответственно
    Ответ написан
    1 комментарий
  • Как взять строку с самым большим значением и все равные ей?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    В PostgreSQL (начиная с 13 версии) есть замечатедьная конструкция
    select * 
    from t
    order by value desc 
    fetch first 1 rows with ties;

    https://sqlize.online/sql/psql14/212e2cb0b853c5c8a...
    Ответ написан
    3 комментария
  • Как взять строку с самым большим значением и все равные ей?

    iMedved2009
    @iMedved2009
    Не люблю людей
    select * from table where value = (select max(value) from table);
    Ответ написан
    Комментировать
  • To many values to unpack как фиксить?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь распаковку коллекции (т.е. оператор вида a, b, c = some_value), тебе нужно быть уверенным, что some_value содержит в точности столько значений, сколько переменных ты распаковываешь.
    Если это не так, есть три варианта:
    1. Если ты знаешь, сколько значений в возвращаемой коллекции, ты можешь просто добавить нужное количество переменных. a, b, c, _ = some_value. Символом _ обычно обозначаются неиспользуемые переменные/параметры.
    2. Если ты не знаешь, сколько значений в возвращаемой коллекции, или это число меняется, можно не выпендриваться, а работать с индексами. Но тебе нужно быть уверенным, что у тебя всегда есть как минимум нужное число значений.
    a = some_value[0]
    b = some_value[1]
    c = some_value[2]
    # и так далее.

    3. Есть ещё вариант распаковки, который работает, если ты значешь, что значений больше, чем нужно:
    a, b, c, *_ = somevalue

    Я бы посоветовал второй вариант
    Ответ написан
    Комментировать
  • Зачем PyCharm просит создавать пустую строку в коце?

    Vindicar
    @Vindicar
    RTFM!
    Документ PEP 8 (на который ссылается PyCharm) описывает рекомендуемую стилизацию кода на питоне. Чем единообразнее код, тем проще одному человеку будет читать код другого. И не стоит забывать, что ты сам через полгода - это всё равно что другой человек.
    Ряд инструментов позволяет автоматически проверить соответствие заданного кода стилю PEP 8, и PyCharm в их числе.
    Ответ написан
    Комментировать