Змея / Говнокод #27866 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 vistefan, (Updated )

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

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

    Но питон не лучший язык для изъебств с функциональщиной: для удобства отладки хвостовую рекурсию в нём делать не стали.
    Ответить
    • Ты будешь умолять, чтобы медсестра прикончила тебя.
      Ответить
    • А вдруг ему именно второй хочется?

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

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

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

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

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

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

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

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

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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8