• Как youtube детектирует использование нейросети при создании видеоконтента?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Ответ написан
    Комментировать
  • Как подсчитать кол-во строк и вывести наибольшее число повторений?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Но ничего не получилось=(

    Больше упорства! ;)

    Разбиваем не по словам, а по предложениям split('\t'), strip() нужно разбивать каждое предложение, а не все строку, ну и в итоге нужно считать уже разбитые предложения:
    # a = input('Введите данные: ').split('\t')
    a = "Interpreter is a computer program that performs instructions without previously compiling them into a machine language program\tlinker is a program that takes one or more object files generated by a compiler and combines them into a single executable file library file or another object file\tthe linker also takes care of arranging the objects in a program's address space\tthe linker also takes care of arranging the objects in a program's address space".split('\t')
    
    res = {}
    
    for i in a:
        sentence = i.strip()
        res[sentence] = res.get(sentence, 0) + 1
    print(max(res.values()))  # 2
    Ответ написан
    1 комментарий
  • Можно ли нерезиденту грузии, армении, казахстана. т.п. работать на upwork, toptal?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    В Грузии и Армении без проблем открывается ИП на нерезидентов.
    Налоги в Грузии околонулевые. Налоги в Армении 5%, но можно сделать сертификат IT и тоже будет около 0%.
    При наличии ИП можно открыть расчётный счёт в банке и работать спокойно.

    В Казахстане для открытия ИП необходимо сначала сделать РВП (аналог вида на жительство), поэтому нерезиденту практически невозможно открыть ИП. Можно открыть ТОО (аналог ООО), но это гораздо более сложная и дорогая история, для фрилансера нерентабельно.
    Но в Казахстане закон прямо говорит, что если нерезидент не оказывает услуги внутри Казахстана, то он не обязан платить налоги в Казахстане. Поэтому юридически ничто не запрещает открыть счёт физ.лица и получать деньги на него и ничего не платить в КЗ. Но если просто гонять деньги через КЗ-банки, то сами банки могут через какое-то время заблокировать счёт за использование в бизнес-деятельности. Но до $10k/месяц казахские банки как правило вообще не интересуются ничем.
    Ещё отдельный квест - найти банк в КЗ, который откроет счёт нерезиденту. Во всём СНГ счета физлицам-нерезидентам стали открывать сильно хуже чем раньше.
    Ответ написан
    3 комментария
  • Через какой алгоритм решать эту задачу?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Тут можно заметить вот что.
    1) если идем вверх, то обратный путь будет по тем же этажам:
    туда 12-23-46, обратно 46-23-12
    2) если идем вниз, то обратный путь может пойти по другим этажам:
    туда 12-6, обратно 6-11-22-43

    итого, решение простое - тебе сначала надо пройти от 12 вверх
    потом от 12 спуститься до 6 и пройти вверх
    потом от 6 спуститься до 3 и тоже пройти вверх (здесь выходим на предыдущий стартовый этаж 6, завершаем)
    от 3 к 2 и тоже вверх
    и т.д.
    т.е. каждый раз спускаться вниз на одну, после чего идти вверх, если не попали на предыдущий стартовый.

    код на js
    function floorCount(start, max) {
        let result = 0;
        let prevStart = -1;
        
        while (start > 0) {
            for (let x = start; x <= max && x !== prevStart; x = x % 2 ? 2 * x : 2 * x - 1) {
                result++;
            }
            prevStart = start;
            start = start < 2 ? 0 : start % 2 ? (start + 1) / 2 : start / 2;
        }
    
        return result;
    }


    Это совсем частный случай ранее упомянутого поиска в ширину/глубину, где не понадобилось множество ранее посещенных этажей (достаточно проверки на prevStart), а так же очереди/стека. То есть обошлись О(1) памяти.
    По скорости выходит O(ln(start) * ln(max)), и в принципе можно сократить до O(ln(start)), если не делать внутренний цикл, а сразу посчитать по формуле, но что-то на ночь глядя не могу эту формулу смекнуть...
    Ответ написан
    4 комментария
  • Какой есть софт для инвайтинга в Телеграм?

    @Everything_is_bad
    софт для инвайтинга
    это софт для спама, не нужно таким заниматься
    Ответ написан
    1 комментарий
  • Ничего не понятно, что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Всё как написано в коде:
    • Выбрать случайного персонажа
    • Выбрать случайное сообщение
    • В цикле отправить выбранному выбранное n раз.

    А вам надо в цикле в каждой его итерации выбирать случайного персонажа и случайное сообщение, и тут же отправлять.
    Ответ написан
    2 комментария
  • Как замокать метод __next__?

    Vindicar
    @Vindicar
    RTFM!
    Вообще делать return self из __iter__() не очень хорошая идея.
    Или верни итератор по внутренней коллекции, т.е. iter(self.nums). Это имеет смысл, так как чтение коллекции циклом for по-хорошему не должно приводить к её модификации. Для этого лучше сделать явный метод.
    Или сделай из __iter__() генератор, и делай yield значения.

    В обоих случаях определять __next__() не потребуется.
    Ответ написан
    2 комментария
  • Почему код перестает работать при импорте?

    Vindicar
    @Vindicar
    RTFM!
    sqlite не поддерживает толком одновременную работу в нескольких потоках.

    1. У тебя парсер? Перепиши код на асинхронный, тебе не сдалось на самом деле использовать потоки. Они 90% времени будут спать и ждать сетевого ответа. Асинхронный код выполняется в одном потоке, так что таких проблем не будет.
    2. Создай отдельный поток, который будет заниматься только работой с базой, и общаться с остальными через какое-то api, например, кладём запрос, данные и какой-то id в очередь, потом читаем ответ из словаря. Но ты по факту будешь писать свой кривенький СУБД-сервер, так что...
    3. Вместо sqlite используй любую полноценную СУБД, которая умеет параллельные соединения. Postrge, mariadb, что угодно.
    Ответ написан
  • BaseModel.__init__() takes 1 positional argument but 2 were given как решить?

    @Everything_is_bad
    Да как вы надели с таким подходом, почему вы не пытаетесь вникнуть в текст ошибки, почему вы сначала не открываете документацию и не читаете описание параметров.
    Вот открываем доки https://docs.aiogram.dev/en/latest/api/types/keybo... и что мы там видим, правильно там именнованые аргументы, ты эту основу языка хотя бы понимаешь?
    Ответ написан
    1 комментарий
  • Как исправить ошибку чтения аргумента?

    @va_k
    Вы потеряли в функции возвращаемое значение. Надо так
    def __getattribute__(self, name):
          print(name)
          return super().__getattribute__(name)
    Ответ написан
    3 комментария
  • Не понимаю, почему программа "тяжелая"?

    Alexandroppolus
    @Alexandroppolus
    кодир
    40000000 чисел Фибоначчи - это лютая вещь со всех сторон. Даже если ты врубишь мемоизацию, как посоветовал Максим Припадчев , то там дохрена вычислений, потому что числа будут длиной в миллионы цифр.

    Мы суммируем только четные числа Фибоначчи.
    Легко заметить, что F(n) четное, только если n делится на 3, т.е. n = 3m.
    То есть тебе нужна сумма F(3*m) для всех m от 0 до floor((40000000-2) / 3) включительно, если правильно понимаю этот ваш range.

    я тут пояндексил и промыслил формулы:
    1) F(3*n) = F(n+1)^3 + F(n)^3 + F(n-1)^3 (из википедии)
    2) sum[0...N] F(i)^3 = (1/2)*(F(n)*F(n+1)^2 + (-1)^(n-1)*F(n-1) + 1) отсюда

    сумму F(3*n) можно выразить через сумму F(n)^3 и потом применить формулу (2)

    в итоге получается

    sum[0...N] F(3*i) = (1/2)*(F(n)*F(n+1)^2 + (-1)^(n-1)*F(n-1) + 1) - 1 + F(n)^3 + F(n+1)^3

    для этого выражения нам нужны F(n), F(n+1) и F(n-1) = F(n+1) - F(n)

    F(n) и F(n+1) вычисляем методом "fast doubling", который делает O(ln(n)) действий вместо O(n) стандартного способа. Ускорение знатное.

    Итого:
    const fib = (n, a = []) => {
        if (n < 1) {
            a[0] = 0n;
            a[1] = 1n;
        } else {
            const m = Math.floor(n/2);
            fib(m, a);
            const x = a[0] * (2n * a[1] - a[0]);
            const y = a[0] * a[0] + a[1] * a[1];
            if (n % 2) {
                a[0] = y;
                a[1] = x + y;
            } else {
                a[0] = x;
                a[1] = y;
            }
            
        }
        return a;
    }
    
    const sumFib3n = (n) => {
        if (n < 1) { return 0n; }
    
        const [fn, fnp1] = fib(n); // fn = fib(n), fnp1 = fib(n+1), 
        const fnm1 = fnp1 - fn;  // fnm1 = fib(n-1), 
        const sgn = n % 2 ? 1n : -1n;
        const sumPow3 = (fn * fnp1 * fnp1 + sgn * fnm1 + 1n) / 2n;
        
        return sumPow3 - 1n + fn * fn * fn + fnp1 * fnp1 * fnp1;
    }
    
    console.log(sumFib3n(Math.floor((40000000 - 2)/3)));
    Ответ написан
    2 комментария
  • Постоянно вылазит ошибка NoneType:None в чём дело?

    Vindicar
    @Vindicar
    RTFM!
    А что, по твоему, ты пытаешься сделать?
    Эта функция выводит информацию о текущем обрабатываемом исключении. А у тебя в коде исключения не выбрасываются.
    По факту, эту функцию имеет смысл использовать только когда обрабатываешь исключение, т.е. внутри блока except.
    Ответ написан
    Комментировать
  • Как распарсить этот XML?

    @Mark0vka
    Чтобы прочитать поля Name, Surname, Email и Birthday из XML с использованием библиотеки xml, вам нужно указать полные пути к этим элементам с учетом пространства имен. Вот как это можно сделать:

    import xml.etree.ElementTree as ET
    
    data = """
    <ns2:Request xmlns:ns2="urn://www.example.com">
        <ns2:User>
            <ns2:Name>John</ns2:Name>
            <ns2:Surname>Snow</ns2:Surname>
            <ns2:Email>joihn.show@gmail.com</ns2:Email>
            <ns2:Birthday>2005-10-23T04:00:00+03:00</ns2:Birthday>
        </ns2:User>
    </ns2:Request>
    """
    
    namespaces = {"ns2": "urn://www.example.com"}
    
    xml = ET.fromstring(data)
    
    name = xml.find(".//ns2:Name", namespaces).text
    surname = xml.find(".//ns2:Surname", namespaces).text
    email = xml.find(".//ns2:Email", namespaces).text
    birthday = xml.find(".//ns2:Birthday", namespaces).text
    
    print("Name:", name)
    print("Surname:", surname)
    print("Email:", email)
    print("Birthday:", birthday)

    Этот код найдет и выведет значения полей Name, Surname, Email и Birthday из XML.
    Ответ написан
    Комментировать
  • Как преоброзовать фото в видео (moviepy)?

    Vindicar
    @Vindicar
    RTFM!
    ImageClip чтобы интерпретировать изображение как статичное видео.
    VideoFileClip чтобы загрузить видео.
    CompositeVideoClips чтобы наложить два или более клипов. Потом метод write_videofile(), чтобы сохранить результат.

    Научись работать с одним клипом и изображением. Потом оформи этот код в функцию вида
    def process_one(image_path, input_video_path, output_video_path) -> None:

    чтобы она брала указанную картинку и видео, и сохраняла результат в указанный файл.

    Дальше уже будет просто вопрос вызова этой функции с правильными именами файлов. Тут пригодится, скажем, стандартный модуль pathlib, в частности метод Path.glob().

    Десять минут работы с документацией, и всё можно найти.
    Ответ написан
    Комментировать
  • Инвайтинг в telegram, способы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Через ссылки вида t.me/...
    Ссылки можно размещать, где угодно, на сайте или в чате, на своё усмотрение, да хоть на билборде.
    Ответ написан
    Комментировать
  • Как создать бота ChatGPT с обучением только на своих данных?

    много мусора и выдумок
    Это следствие не только плохих данных, но и самой сути генераторов текста - они не понимают, что пишут в целом, а просто добавляют одно слово за другим. Какие бы вы данные ему ни скормили, от галлюцинаций вам не избавиться, так что задача, в принципе, не решаемая.

    P.S. Словосочетания "проверенные источники" и "китайская медицина" можно в одном предложении использовать, только если вы пишете стендап на научнопопулярную тему.
    Ответ написан
    6 комментариев
  • Почему 3 секунд не хватает для выполнения кода?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    У вас решениe за O(n^3), ибо у вас там 2 вложенных цикла до n, а внутри еще и постоянно вызываются min/max, которые проходятся по всему массиву.

    Ограничения же в задаче n<10^5. С такими ограничениями максимум O(n log n) решение уложится в 3 секунды.

    Подумайте, как его можно изменить, чтобы работало сильно быстрее? Подсказка: сначала вы берете 1 минимальный элемент, потом 2 самых маленьких, потом 3, и т.д. На второй итерации вам уже как бы не надо искать минимум- вы его уже знаете. Вас интересуют только оставшиеся числа. На третьей итерации у вас уже 2 числа раньше найдены. Надо как-то переиспользовать предыдущие вычисления.

    Что можно сделать с входным массивом, чтобы можно было получать несколько самых маленьких элементов быстро? Помните, что вам надо уложиться в O(n log n).
    Ответ написан
    Комментировать
  • Можно ли развить логику программиста?

    hint000
    @hint000
    у админа три руки
    Как решать задачи по программированию математическим путем, а не «в тупую»?
    задачи даже самые примитивные, не поддаются от слова совершенно

    Решать задачи учат в школе на уроках математики, начиная с первого класса и до окончания школы. Эти навыки нужны и для решения задач алгоритмическими методами.
    Вообще принцип простой. Чтобы написать программу, нужно представлять в голове алгоритм решения задачи. Чтобы представлять алгоритм, нужно две вещи:
    (1) уметь решать задачу такого типа без компьютера (речь не идёт о том, что вручную это долго или не долго; только о том, что вы в принципе знаете что делать, хотя бы даже интуитивно - именно этому учат в школе начиная с первого класса);
    (2) уметь формализовать в алгоритм своё умение решать задачу (это универсальное умение, практически не зависящее от типа задачи).
    Ответ написан
  • Возможно ли сделать нейросеть, предсказывающую рост и падение криптовалюты?

    @rPman
    В общем случае нет!
    В каких то частных случаях, в ограниченном промежутке времени - реально, и даже без может быть без нейронных сетей. К сожалению, заранее знать это не получится.

    spoiler
    Но с помощью нейросетей можно попытаться предсказывать в короткую какие то другие параметры, например волатильность, ликвидность или что то экзотическое отношение объема к волатильности и т.п. Дело в том что возможно локальные алгоритмы, которые для конкретных рынков на текущий момент могут принести доход но при условии предсказания этих параметров.

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


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

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

    Так как ты назвал вполне определенный рынок - криптовалютный, у него по сравнению с регулируемыми рынками есть главная особенность - он не регулируемый. На этом рынке крупные участники - это сами биржи и их очень мало, они фактически владеют рынком. Что это значит - они обладают всей полнотой информации о своих клиентах, какие у них суммы, когда поступают (и эти поступления можно придержать на время, чтобы что-нибудь изменить), какие паттерны поведения у каждого персонально ит.п. и вся эта информация не просто позволяет делать какие то прогнозы, но и манипулировать ценой, играя против клиентов. Самые простые места, где этим занимаются - маржинальная торговля. Легче обмануть, легче манипулировать.
    Как и почему это происходит? потому что нет регулятора который может за инсайд наказать, вот и торгует сама биржа против своих клиентов, используя приватную информацию о них (и я уверен что на больших регулируемых рынках происходит похожее просто с более сложными схемами).

    Ну и бонусом - криптовалютный рынок самый дорогой по комиссионным сборам.
    spoiler
    Когда то были bitshares - почти неподконтрольная, с самыми низкими комиссиями (правда и ликвидность не на высоте), на этом рынке можно было делать очень хороший доход простыми алгоритмами, но потом как это обычно бывает с не PoW консенсусом, самый главный, чтобы не потерять свои миллионы угробил проект.

    Все другие проекты после либо с нулевой ликвидностью либо с неадекватно высокими комиссиями и не функциональным рынком, читай нет спотового рынка с buy/sel отложенными ордерами, точно помню за успешную попытку возродить такой же, SEC наказала буквально разработчика за это, а он еще публично благодарил что не в ж... а только штрафом обошелся. Все последующие проекты были говно на основе рынков ликвидности, где ты не можешь сделать нормальную отложенную сделку по своей цене, только по цене алгоритма с огромной комиссией, ну или торгуй по маркету
    Ответ написан
    4 комментария
  • Как корректно использовать селектор при парсинге сайта?

    Vindicar
    @Vindicar
    RTFM!
    Ну если не ограничивать себя видеоуроками, а узнать, как именно работает Web, то можно догадаться до первого шага по отладке такой ситуации:
    Сохрани ответ сайта в файл и посмотри, что тебе пришло на самом деле.

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

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