как сделать обратную операцию в ruby, используя одну переменную без каких-либо встроенных функций - PullRequest
0 голосов
/ 01 мая 2018
str="karhik reddy"
n= str.length
for i in n.downto(0) do // reverse iteration of ruby 
str += str[i].to_s
end
puts str[-n..-1]

Эффективно ли это для больших наборов данных? Как массив чисел, где вы бы полностью изменили набор символов в книге?

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Если вы хотите использовать этот стиль пещерного человека без «встроенных функций», самое близкое, что вы можете сделать, это:

def primitive_reverse(str)
  out = ''
  i = 0

  while (i < str.length)
    i += 1
    out << str[-i]
  end

  out
end

Где технически String#<<, String#[] и String#length - это все методы, но без этого вы не сможете выполнить это.

0 голосов
/ 02 мая 2018

До 3 методов:

"karhik reddy".each_char.inject(&:prepend)
0 голосов
/ 01 мая 2018

Я бы сказал, самый эффективный способ - это что-то вроде:

> str = "karhik reddy"
> (n = str.length).times { |i| str[i...i], str[n..n] = str[n-1], '' }
> str
#⇒ "ydder kihrak"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...