2010-09-21 2 views
2

Программа (115 символов)Полная программа RPN Expr-Eval внутри Tweet? - "Да, мы можем!", С помощью LISP

(defun rpn(e)(let((s()))(dolist(x e)(if(numberp x)(push x s)(push(eval(reverse(list(pop s)(pop s)x)))s)))(car s))) 

Простой тест:

CL-USER> (rpn '(1 2 3 * + 4 2/+)) 

И это возвращает 9

Каждый имеет некоторые хорошие идеи о написании программы Infix-RPN внутри одного твита? Я провалил. Я могу написать это один из 235 символов.

+1

Я был бы счастливее, если бы этот вопрос был изменен на «Can один .. .?» а затем поставить программу в ответ. Прямо сейчас, это не вопрос. –

+1

Это обязательно будет закрыто, если оно не будет следовать рекомендациям по http://meta.stackexchange.com/questions/24242/acceptable-level-of-code-golf-questions –

ответ

3

Вот один в Clojure (88 символов):

(defn rpn [& e](reduce #(if (fn? %2)(let [[l r & m]%](cons (%2 r l) m))(cons %2 %))[]e)) 

и ООН-golfed версии:

(defn rpn [& expr] 
    (reduce (fn [stack op] 
      (if (fn? op) 
       (let [[l r & m] stack] 
       (cons (op r l) m)) 
       (cons op stack))) 
      [] 
      expr)) 

 Смежные вопросы

  • Нет связанных вопросов^_^