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

    −100

    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
    eval_prefix = lambda inp:\
                reduce(lambda stack, symbol:\
                (
                  (stack+[symbol]) if symbol.isdigit() \
                 else \
                  (
                    stack[:-2]+\
                    [str(
                          eval(
                               stack[-1]+symbol+stack[-2]
                              )
                        )
                    ]
                  )
                ), inp[::-1], [])[0]

    Здесь вам не хаскель!

    Запостил: serpinski, 15 Ноября 2012

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

    • Гмммм. Ну что оно делает более-менее понятно. Но смысл? Чем родной eval() не угодил?
      Ответить
      • >>> eval_prefix("+34")
        7
        >>> eval_prefix("*−567")
        -7
        >>> eval_prefix("-*33+2+11")
        5
        >>> eval_prefix("-+5*+1243")
        14
        >>> eval_prefix("*+35-72")
        40
        >>> eval_prefix("%3/52")
        1
        Ответить
        • Хороший ник
          Ответить
        • Тьпху, думал оно в инфиксной нотации строку берет.
          Т.е. это интертрепатор задомнапереднутой польской записи.
          Но смысл?!
          Ответить
          • > задомнапереднутой польской записи.

            Задомнаперёдная это "3 4 +", а тут обычная префиксная польская нотация.
            Ответить

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