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

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
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 serpinski, (Updated )

Комментарии (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 +", а тут обычная префиксная польская нотация.
          Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8