Ruby: Как создать метод для аддитивного инвертирования массива - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь создать метод, который при передаче ему массива создает новый массив, который является его аддитивным обратным (EX: [1,2,3,4] => (аддитивный обратный) [-1] , -2, -3, -4]. Я попытался включить Enumerable, а также поставить .each. Я также избавился от .map, а затем у меня остался неопределенный метод 'x'. Я поиграл с код несколько раз, а также исследовал несколько сайтов о том, как работать с каждым элементом в массиве при его передаче в метод. Самое близкое, что я сделал, это:

def add_inv (x) 

  arr_new = x.map {|e| -e}
  puts arr_new

end

add_inv([5,-7,8,3])

Вывод:

-5
7
-8
-3

Я ищу вывод в виде массива. Желаемый вывод: [-5, 7, -8, -3]

Заранее благодарен за положительные отзывы и критику. ( новый для Ruby)

РЕДАКТИРОВАТЬ: 12:29 - 13.04.2020 Продолжая играть с кодом и некоторыми предложениями ниже, я смог манипулировать массивом с помощью следующего кода и продолжу работать над придумать метод, который позволит вам передать массив в качестве аргумента, а затем превратить его в int o обратный массив. Вот код, который дал мне желаемый результат (хотя это еще не метод).

b = Array.new ([5,-7,8,3].map{|v| v*(-1)})

p b

Вывод: [-5,7, -8, -3]

Обновится один раз Я понимаю, как это сделать с помощью метода.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

извините, неправильно понял ваш вопрос в первый раз, проблема здесь в том, что puts обрабатывает различные массивы, когда вы пытаетесь их показать, затем вы можете использовать p или print, чтобы сделать то, что вы хотите, вот примеры

def add_inv_with_puts(x) 
  puts x.map {|e| -e}
end
add_inv_with_puts([5,-7,8,3])

def add_inv_with_p(x) 
  p x.map {|e| -e}
end
add_inv_with_p([5,-7,8,3])

def add_inv_with_print(x) 
  print x.map {|e| -e}
end
add_inv_with_print([5,-7,8,3])
0 голосов
/ 13 апреля 2020

После того, как я немного поковырялся с кодом, основываясь на том, что другие опубликовали, я смог получить метод, работающий с любыми массивами.

def add_inv (x)

  #b = Array.new (not needed)
  b = x.map{|v| -v}
  p b

end


add_inv([1,2,3,4])
add_inv([5,-7,8,3])

Вывод: [-1, -2, -3, -4] [-5, 7, -8, -3]

Спасибо за информацию и подталкивает в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...