Раздел «Язык Ruby».RandomDescendingTreeRuby:

Случайный спуск по дереву

Классическая реализация

$tokens = gets.scan( /\)|\(|-?\d+/ )
def parse
   if tokens.first =~ /-?\d+/
      $tokens.shift.to_f
   else
      $tokens.shift # ожидается скобка
      r = (parse + parse)/2.0
      $tokens.shift # ожидается скобка
      r
   end
end
puts parse