Сообщение Re: кадровики совсем рехнулись от 21.11.2018 7:11
Изменено 21.11.2018 7:11 Somescout
Re: кадровики совсем рехнулись
Здравствуйте, CodeMonkey, Вы писали:
5 минут включая отладку (powershell, несколько многословно, без проверки на ошибки, но мне лень):
PS. В примере вместо "-" стоит тире, будте внимательны.
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. В примере вместо "-" стоит тире, будте внимательны.
Re: кадровики совсем рехнулись
Здравствуйте, CodeMonkey, Вы писали:
5 минут включая отладку (powershell, несколько многословно, без проверки на ошибки, но мне лень):
PS. В примере ТС вместо "-" стоит тире, будте внимательны.
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. В примере ТС вместо "-" стоит тире, будте внимательны.