• Как реализовать алгоритм рекурсией?

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

    Ваша ошибка в том, что в слуае "2(с)3(a)" вы попытаетесь 2 раза повторить результат распаковки строки "с)3(a"

    def process(s, begin):
      i = begin;
      ans = ""
      while i < len(s):
        // Внетренность скобок обрабатывается рекурсивно. ) - это конец строки для нас.
        if s[i] == ')': break;
        if '0' <= s[i] and s[i] <= '9':  // если встретили цифру
          k = 0
          // выделяем в k числовое значение записанного числа
          while i < len(s) and '0' <= s[i] and s[i] <= '9':
            // пока встречаются цифры берем их численное значение и приписываем в конец к k
            k = 10*k + ord(s[i]) - ord('0')
            i+=1
          // если после числа идет бува, то просто копируем ее нужное количетсво раз
          if  'a' <= s[i] and s[i] <= 'z': 
            ans += s[i:i+1]*k
            i+=1
          else:
            // иначе - должна быть скобка.
            assert(s[i] == '(')
            // рекурсивно обрабатываем внутренность скобок. Функция вернет нам, где
           // закрывающая скобка для данной.
            (i, cur) = process(s, i+1)
           // копируем результат распаковки строки внутри скобок нужное количетво раз
            ans += cur * k;
        else:
         // цирфы не было. Просто символ без множителя идет в ответ.
          assert('a' <= s[i] and s[i] <= 'z')
          ans += s[i:i+1]
          i += 1
      // мы могли закончить цикл на закрывающей скобке или в конце строки.
      // но скобку надо пропустить. Прибавляем 1 к счетчику.
      if i < len(s): i+=1
      return (i,ans)
    
    
    
    print (process("abc", 0))
    print (process("3a", 0))
    print (process("3(a)", 0))
    print (process("2(ab)", 0))
    print (process("10(a)", 0))
    print (process("2(b2(a))", 0))
    Ответ написан
  • Функция может выполняться после возврата значения?

    svetloffs
    @svetloffs
    python DS ML
    без кода сложно понять, как реально работает ваша программа...
    Ответ написан
    Комментировать
  • Ошибка "invalid syntax". Что делать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Учить язык прежде, чем пытаться на нём писать.
    Ответ написан
    1 комментарий
  • Как сделать алгоритм?

    @Mercury13
    Программист на «си с крестами» и не только
    Пусть минимальный простой делитель a.
    Тогда минимальный делитель a (будь мин.делитель составной — нашёлся бы меньший), максимальный — x/a (по сходной причине), x=91·a².
    Кроме того, 91 = 7·13, и потому a <= 7.
    2²·91 и 3²·91 до четырёхзначного явно не дотягивают.
    А вот следующее — a=5 — даёт 2275 = 5²·7·13.
    Также должно подойти a=7, x=7³·13=4459.
    (Раз тут математика, часто запрещён даже калькулятор, потому попытался написать так, как думал бы человек без калькулятора)
    Ответ написан
    Комментировать
  • Как сделать алгоритм?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Поскольку речь о делителях, то надо рассматривать только простые числа.
    999 < x * (91 * x) < 10000
    999/91 < x2 < 10000/91
    3.313 < x < 10.483
    x - простое число
    Решениями будут 5 и 7
    5 * (91 * 5) = 2275
    7 * (91 * 7) = 4459
    Ответ написан
    1 комментарий
  • Как не допустить увеличение списка?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    list.clear()
    Может почитаешь какие есть, хотя бы, встроенные функции и их методы?
    Ответ написан
    1 комментарий
  • Как понять нейросеть начинающим?

    @dmshar
    Во-первых, вы хотите, что-бы тут вам прочитали мини-курс по нейронным сетям?
    Во-вторых - если уж лень самому разбираться (хотя как может быть лень, если есть интерес? скорее всего тогда это не интерес а просто любопытство, ну да ладно ) разбейте свой вопрос на отдельные подвопросы и задавайте их по одному. И будет вам бесплатная консультация по мини курсу.
    По ходу отвечу на первый вопрос:
    1) Для простой нейросети используют функцию сигмоид. Я как понял,она выдает значения в пределах (-1:1)
    Во-первых, функций активаций может быть великое множество: ступенчатая, сигмоидная, экспоненциальная, линейный выпрямитель, арктангенс и пр, пр.пр.
    Выбор конкретной функции диктуется конкретной задачей и опытом аналитика. Равно как и пределы сигмоидной ф-ции, которые могут быть как [-1,1], так и [0,1] (кстати, вообще-то говоря именно последняя - это классика). К двоичному коду это ни имеет никакого отношения - к дихатомии функция с пределами [-1,1] приводится так-же просто, как и [0,1]. Про "забивать память" - это тоже не из этой оперы. На скорость обучения действительно влияет но не столько вами обозначенные пределы, как то, они ограниченные (в том числе и ваши) с одной стороны или неограниченные - с другой. Кстати, если область значений бесконечна, обучение, как правило, более эффективно, и требуется меньший темп обучения. А если ограничена, то методы обучения на основе градиента оказываются более стабильны. Все эти факторы (наряду с огромным множеством других) и надо учитывать при построении сети.
    Ответ написан
    3 комментария
  • Как у вас происходило обучение python?

    @poikanepuchok
    Data Analyst || Аналитик данных
    Я учу Python для анализа данных.

    С основами языка познакомилась на курсе “Аналитик данных” от Яндекс Практикума (на их сайте можно пройти бесплатную часть курса, она как раз про Python), а к полученной базе постепенно добавляю знания из разных видеокурсов (по туториалам написала игру змейка) и книг (от Лутца предпочитаю книгу «Изучаем Python»).

    Если вкратце, то читайте книги, проходите туториалы, общайтесь с более опытными ребятами, читайте чужой код, берите дополнительные курсы, развивайте свои проекты и все получится! А главное — пишите код, практики много не бывает! :)
    Ответ написан
    Комментировать
  • Может ли быть инфляция гигабайт?

    @402d
    начинал с бейсика на УКНЦ в 1988
    ну что сказать. я платил за инет и поминутно и за мегабайт. И за ширину канала.
    Кто его знает может схема монетизации совсем поменяется.
    Например введут индивидуальный номер пользователя и оплачивать
    придется только право выхода в сеть с любого устройства и в оплате контентных услуг часть стоимости
    будет типа налога на трафик .

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

    @o5a
    x = 10
    y = 20
    print(f'{x}.{y}')
    Ответ написан
    Комментировать
  • Как решить олимпиадную задачку?

    LaRN
    @LaRN
    Senior Developer
    // - даёт целую часть, а % - даёт остаток от деления.
    В первом условии у вас, вероятно должно быть так:
    if ((W+X)%M)==0:
        sideX=(W+X)//M
    else:
        sideX=((W+X)//M)+1

    Ну а дальше по аналогии смотрите.
    Ответ написан
    5 комментариев
  • Как обучить ИИ?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Обучить не получится, потому что общих правил нет.
    В лучшем случае ты переберёшь все слова и скажешь машине, что кровать - это не глагол.

    И "стекло" - это не существительное, а глагол от слова "стечь" ;)
    А "Машина" - это какая-то вещь от Маши.

    "Косил косой косой косой косой" - где здесь мужской род, а где женский?

    Для твоих целей уже созданы специальные словари и алгоритмы.
    Ответ написан
    24 комментария
  • Почему у приложений нельзя посмотреть исходный код?

    Zoominger
    @Zoominger
    System Integrator
    Чтобы скрыть реализацию, например, и её не украли.
    Чтобы защитить программу от взлома.
    Чтобы защитить программу от плагиата.
    Ещё потому что исходный код сам по себе ничто, он транслируется в инструкции, которые уже запускаются.
    Ответ написан
    1 комментарий
  • Почему ИИ в играх не обучается?

    Slavik_Kenny
    @Slavik_Kenny
    3Д моделлер, и немного всего остального :)
    В играх не делают процесс обучения ИИ.
    Он есть такой, каким его сделали разработчики, для того чтоб он обучался нужны совсем другие ресурсы ПК, алгоритмы для него и т.д.
    Ну и в любом случае, на сегодняшний день обучаться ИИ может только на таком количестве повторений, что никакой человеческой жизни не хватит для того, чтоб "вручную" его обучить, так что разработчикам остается делать ползунок сложности который влияет на степень адекватности и честности ботов :)
    Ответ написан
    Комментировать
  • Почему ИИ в играх не обучается?

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

    Хотя с последним тезисом можно поспорить, но это будет отдельный красивый геймдизайнерский спор, не имеющий отношения к данному вопросу.
    Ответ написан
    Комментировать
  • Как взять текст из картинки?

    erge
    @erge
    Примус починяю
    поиск - распознавание текста
    быстрее некуда.
    Если нужны алгоритмы, добавьте слово - алгоритмы.

    Можно использовать онлайн сервисы через headless браузеры скриптами.
    Ответ написан
    3 комментария
  • Почему когда октрываю картинку в текстовой форме?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Все просто. Все данные просто набор байтов. А в каком виде нам их покажет программа, зависит от того как программа их интерпретирует. Видимо текстовая форма интерпретирует данные как текст, и показывает соотвествующие символы. Она просто не умеет ничего другого. То что в этом наборе символов есть читаемые слова - это заголовки контейнера изображения. Они имеют текстовый формат.
    Ответ написан
    Комментировать
  • Как создать 3D редактор для создания персожей?

    Zoominger
    @Zoominger
    System Integrator
    как можно создать свой 3D редактор для создание персонажей? что наподобие Abode Fuse CC, но адаптировать под свои цели.

    Ну, если пойти путём Адоба, то понадобится пара миллионов долларов.

    Вариант с самостоятельным написанием... Понимаете, либо на землю спустятся инопланетяне и будут пить с вами чай, либо вы напишете это в одиночку. Так вот, я бы ставил чайник.
    Ответ написан
    8 комментариев
  • Эти классы отличаются или нет?

    @Taus
    Кроме отличий инициализации класса - нет. Вызов duck.about() в обоих случаях предполагает наличие в пространстве имён объектов с именами bill и tail, у которых соответственно имеются нужные аттрибуты description и length. Так обычно не пишут, поэтому второй случай ближе к реальному коду, но в нём необходимо тогда заменить print(bill.description,tail.lenght) на print(self.bill.description, self.tail.lenght).
    На вторую часть: никакого наследования в данном коде нет.
    Ответ написан
    8 комментариев
  • Какие языки используют для создания приложений?

    bingo347
    @bingo347
    Crazy on performance...
    ОС чаще всего пишут на низкоуровневых языках, вроде C (Linux, FreeBSD), C++ (Windows), Rust (Redox). Иногда используют ассемблерные вставки.

    Игры (имеются в виду 3D игры) чаще всего пишут на C++, но так же возможно на C# (Unity), JS (Unity или что-то упрощающее работу с WebGL). Хотя могут быть и другие языки (например майнкрафт написан на JAVA, а старый добрый Doom - на C). Так же понадобится язык шейдеров для программирования видеокарты, например для OpenGL и WebGL таким языком является GLSL.

    Прикладной софт вообще пишется на чем угодно, выбор языка зависит от задачи. Но в некоторых сферах все же можно выделить лидеров:
    Энтерпрайз решения - Java EE, реже C#
    Десктопный софт под Windows - C# (реже другие языки .net платформы)
    Десктопный софт под MacOS - Swift
    Десктопный софт кросплатформенный - Java, Python, JS (Electron)
    Мобильный софт под Андроид - Kotlin, Java
    Мобильный софт под iOS - Swift
    Мобильный софт кросплатформенный - C# (Xamarin), JS (Cordova, ReactNative, etc.)
    Серверный софт - php, Python, Ruby, JS (node), Java, Go, Rust, ... вариантов много
    Браузерный софт - JS или то что компилится в JS (чаще TypeScript)
    Ответ написан
    11 комментариев