• Можно ли заставить нейросеть заставить избегать определенных состояний?

    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 в их числе.
    Ответ написан
    Комментировать
  • Можно ли придумать новый математический инструмент для решения задачи трёх тел?

    hint000
    @hint000
    у админа три руки
    как раз "новые инструменты" и использует для решения нерешенных задач
    Здесь другое. Задача трёх тел не относится к нерешённым математическим проблемам. https://ru.wikipedia.org/wiki/Открытые_математичес...
    С этой задачей математикам всё ясно. Примерно как с задачей квадратуры круга. Типа: придумать новый математический инструмент для вычисления (наконец-то) всех цифр числа Пи. :) Вот и невозможность аналитического решения в общем случае задачи трёх тел - вполне доказанный математически факт. Никакие новые методы не отменяют старых доказательств. В этом принципиальное отличие математики от естественных наук.
    Брунс и Пуанкаре доказали, что систему дифференциальных уравнений для движения трёх тел невозможно свести к интегрируемой. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Но численные методы - это раздел математики. Решение численными методами (приближённое) - теоретически возможно. Практически - крайне затруднительно.
    К несчастью, как показал Д. Белорицкий, по крайней мере в случае Лагранжа для нужд вычислительной астрономии в сходящихся рядах Зундмана нужно брать как минимум 10^(8*10^6) членов. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Вот здесь - в численных методах - и остаётся возможность "придумать новый математический инструмент". Здесь никто не запрещает. Повторю: даже при открытии такого инструмента (а это стало бы важным открытием) он будет давать лишь приближённое решение.
    И ещё раз повторю: невозможность получения точного решения - доказана и неоспорима.
    Ответ написан
    6 комментариев
  • Как сделать так, чтобы бот отправлял текст в таком формате который я ему отправляю?

    Vindicar
    @Vindicar
    RTFM!
    caption отдаёт только plaintext (без форматирования). Вроде как есть свойство-список caption_entities, содержащее сведения о форматировании.
    Либо попробуй указать это свойство при отправке сообщения, параметром entities = message.caption_entities, либо разбирай элементы этого списка, ищи форматирование, и вставляй его вручную (там указывается позиция в строке, где форматирование начинается/заканчивается).
    Ответ написан
    3 комментария
  • Как циклом Python for пройти несколько (сотен) range?

    @U235U235
    Я бы воспользовался библиотекой portion (особенно актуально, если интервалы могут пересекаться)
    import portion as P
    print(*P.iterate(P.closed(1.2, 6.9)|P.closed(8,11), step=1, base=int))
    Ответ написан
    Комментировать
  • Как напечать треугольник в консоли?

    Vindicar
    @Vindicar
    RTFM!
    Подскажу идею: печатай по строкам. Тогда тебе нужно будет для каждой строки определить начало и конец.
    Также для упрощения задачи найди "среднюю" вершину треугольника по высоте, и разбей его на два по этой вершине. Если такой нет (т.е. одна из сторон прямоугольника горизонтальна) - задача упрощается.
    Пример

    # было
         *
        ***
       *****
      *******
     ****
    *

    # верхний полутреугольник
         *
        ***
       *****
      *******
    # нижний полутреугольник
     ****
    *

    Таким образом, ты можешь по координатам вершин вычислить шаг - через сколько строк надо уменьшить/увеличить координату начального и конечного столбца. А дальше простой цикл.
    ЕМНИП, так делают видеокарты, только с пикселями.
    Шаг имеет смысл оставить дробным, чтобы избежать проблем с накапливающейся ошибкой округления.
    Ответ написан
    Комментировать
  • Пояснения по алгоритму нахождения суммы четырех квадратов?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    1) l не вычисляется. l перебирает некоторые простые числа до log n (2 и те, которые дают остаток 1 при делении на 4).

    2) Процесс описан внизу страницы. Вы представляете n в виде произведения нечетного (и не делящегося на описанные выше простые числа) n' и вот этих всех простых чисел в каких-то степенях. Далее, поскольку мы можем эти простые числа разложить в сумму двух квадратов после предподсчета, то используя описанный в статье ранее трюк можно получить разложение на квадраты n из разложения n'

    3) Это трюк, чтобы все эти простые числа найти до логарифма найти.

    4) Кажется не обязательно и натуральный логарифм тут используется, чтобы оценка сложности была оптимальная. Но я не уверен. Лучше не надо.
    Ответ написан
    Комментировать
  • Как циклом Python for пройти несколько (сотен) range?

    Vindicar
    @Vindicar
    RTFM!
    Ответ написан
    Комментировать
  • Как убрать нумерацию в строке python?

    Lord_of_Rings
    @Lord_of_Rings
    Python developer
    from re import sub
    
    print(sub(r'[^\w\s]+|[\d]+', '', '1. Дизайнер 2. Программист 3. Таргетолог '))
    Ответ написан
    Комментировать
  • Какие значения будут если в квадратном уравнении все коэффициенты равны нулю?

    vaut
    @vaut
    x принадлежит интервалу от -бесконечности до +бесконечности.
    Ответ написан
    Комментировать
  • Каков шанс выпадения нужного числа?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    random(6) возвращает целое: 1, 2, 3, 4, 5 или 6 – с равной вероятностью.
    Как игральные кости (кубики).

    Чтобы reduce/length дал единицу,
    нужно, чтобы все шесть выпали именно единицы:
    (1 + 1 + 1 + 1 + 1 + 1) / 6 == 1

    Вероятность шести единиц
    1/6 * 1/6 * 1/6 * 1/6 * 1/6 * 1/6  = 1 / 6^6 = 0,00002143347051
    = 2 тысячные процента. Всего ничего.
    Ответ написан
    Комментировать