Что представляет собой инверсия алгоритма маневровой станции?

StackOverflow https://stackoverflow.com/questions/86669

  •  01-07-2019
  •  | 
  •  

Вопрос

Дийкстра Алгоритм маневровой площадки используется для анализа инфиксной нотации и генерации RPN результат.

Я ищу противоположное, способ превратить RPN в инфиксную нотацию в стиле математического класса средней школы, чтобы представлять выражения RPN из базы данных простым пользователям понятным способом.

Пожалуйста, сэкономьте свое время и не придумывайте алгоритм сами, просто укажите мне на примеры из учебника, которые я, похоже, не могу найти.Работая в обратном направлении от алгоритма маневровой станции и используя свои знания о нотациях, я, вероятно, смогу выработать решение.Я просто ищу короткий путь, чтобы мне не пришлось изобретать велосипед.

О, и, пожалуйста, не помечайте это как "домашнее задание", я клянись Я уже закончила школу!;-)

Это было полезно?

Решение

Поскольку RPN также известен как постфиксная нотация, я попробовал погуглить преобразовать "постфикс в инфикс" и получил довольно много результатов.В первых нескольких есть примеры кода, но я нашел Запись в RubyQuiz особенно поучительно.

Другие советы

Если вы не беспокоитесь об удалении избыточных круглых скобок, то следующий Lisp-код будет работать:

(defun rpn-to-inf (pre)
  (if (atom pre)
      pre
      (cond ((eq (car (last pre)) 'setf)
         (list (rpn-to-inf (first pre)) '= (rpn-to-inf (second pre))))
        ((eq (car (last pre)) 'expt)
         (list (rpn-to-inf (first pre)) '^ (rpn-to-inf (second pre))))
        (t (list (rpn-to-inf (first pre)) 
             (car (last pre)) 
             (rpn-to-inf (second pre)))))))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top