1. Python / Говнокод #27866

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    #!/usr/bin/python
      
      import sys
      
      cache = {}
      
      def count(start, end):
          if start < end:
              if start not in cache:
                  cache[start] = count(start + 1, end) + count(start * 2, end) + count(start ** 2, end)
              return cache[start]
          elif start == end:
              return 1
          else:
              return 0
    
      print(count(int(sys.argv[1]), int(sys.argv[2])))

    Подсчитать количество путей из a в b с помощью прибавления единицы, умножения на 2 и возведения в квадрат

    Чем формально ограничены возможности преобразовать рекурсию в хвостовую? Вот такое ведь не преобразовать?

    Запостил: vistefan, 11 Декабря 2021

    Комментарии (23) RSS

    • SEO: хвостовая рекурсия
      Ответить
    • print(count(1, 10))

      Хмммм....
      Ответить
    • Лох питонист
      Ответить
    • Ничем... Ты всегда можешь переписать свою функцию как state -> state' и хвостануть её.

      Но питон не лучший язык для изъебств с функциональщиной: для удобства отладки хвостовую рекурсию в нём делать не стали.
      Ответить
      • Ты будешь умолять, чтобы медсестра прикончила тебя.
        Ответить
    • > #!/usr/bin/python

      Говнокод.

      Надо #!/usr/bin/env python3
      Ответить
      • А вдруг ему именно второй хочется?

        З.Ы. Хотя судя по скобочками в принтфе это всё-таки третий.
        Ответить
        • Тогда надо #!/usr/bin/env python2.

          Есть, кстати, программы, которые переводят код на втором питопе в код на третьем питопе, добавляя скобочки в «print».
          Ответить
          • env важен ради всяких виртуальных окружений, где питон надо брать не из системы?
            Ответить
            • В системе питон может находиться не только в /usr/bin. В контроллерах, например, никаких /usr/bin нет.

              Шебанг с «env» найдет в «PATH» первый попавшийся интерпретатор питопа подходящей версии, это очень гибкое и переносимое решение.
              Ответить
              • Мне обычно пофиг т.к. я не делаю питоноскрипты исполняемыми.
                Ответить
                • А я делаю: кладу их в папку с питоноскриптами, добавляю папку в PATH и активно пользуюсь.
                  Ответить
                  • А я такое через обёртку на bash/cmd делаю.
                    Ответить
                    • Видимо, это потому что ты старый линуксоид-прыщепердолик старой закалки, а я – смузявая анскильная хипстеролалка.

                      Как удивителен феномен говнокода: самые разнообразные люди приходят сюда насрать кодом!
                      Ответить
                • почему не делаешь? не юниксоид что ли?
                  Ответить
                  • А смысл? С ланчером на баше удобнее получается. И в случае чего можно там же окружение подкрутить и т.п.
                    Ответить
                    • Именно поэтому я за «TempleOS».

                      Там нет такого что скрипт на «bash», чтобы запустить «Python», из которого торчат во все стороны вызовы либ на «Си» или «С++».

                      Открываешь консоль: команды на «HolyC», окружение и вся система написана на «HolyC», есть JIT.
                      Истинно божественная система дарованная Господом.
                      Ответить
                    • В «TempleOs» ещё удобнее.

                      Там нет никаких ланчеров, ld и шебангов. Просто пишешь #include с командной строки и программа запускается.

                      Впоследствии можно из консоли дёргать отдельные функции из подключенного файла.
                      Ответить
                      • TemplateOS

                        Просто пишешь template <typename, template<typename, typename>> и программа запускается. Впоследствии можно из консоли инстанциировать отдельные шаблоны.
                        Ответить
                      • Этот человек построил храм. А ты что сделал?
                        Ответить
                      • Он, кстати, называл себя Царём (King Terry). Совпадение?
                        Ответить

    Добавить комментарий