Re: кадровики совсем рехнулись
От: Somescout  
Дата: 21.11.18 07:11
Оценка: +1
Здравствуйте, CodeMonkey, Вы писали:

5 минут включая отладку (powershell, несколько многословно, без проверки на ошибки, но мне лень):

function ReversedPolish-Solver($expr) {
    $tokens = $expr -split '\s+'

    $stack = [System.Collections.Stack]::new()

    $tokens | % { 
        switch -Regex ($_) {
            '^-?[\d]+$' { $stack.Push($_) }
            '^\+$' { 
                    $b = $stack.Pop()
                    $a = $stack.Pop()
                    $stack.Push([float]$a + [float]$b)
                 }
            '^-$' { 
                    $b = $stack.Pop()
                    $a = $stack.Pop()
                    $stack.Push([float]$a - [float]$b)
                 }
            '^\*$' { 
                    $b = $stack.Pop()
                    $a = $stack.Pop()
                    $stack.Push([float]$a * [float]$b)
                 }
            '^/$' { 
                    $b = $stack.Pop()
                    $a = $stack.Pop()
                    $stack.Push([float]$a / [float]$b)
                 }
        }

    }

    return $stack.Pop()
}

ReversedPolish-Solver "1 1 + 2 3 * -"


PS. В примере ТС вместо "-" стоит тире, будте внимательны.
ARI ARI ARI... Arrivederci!
Отредактировано 21.11.2018 7:11 Somescout . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.