这是我的数组和自定义方法,用于在不使用reverse方法的情况下反转数组输出。不确定它在哪里破了,尝试在控制台中运行它,没有骰子。
numbers = [1, 2, 3, 4, 5, 6]
def reversal(array)
do |item1, item2| item2 <=> item1
end
p reversal(numbers)
答案 0 :(得分:2)
有很多方法......这里有两个。
numbers6 = [1, 2, 3, 4, 5, 6]
numbers5 = [1, 2, 3, 4, 5]
<强>#1 强>
def my_rev(numbers)
numbers.each_index.map { |i| numbers[-1-i] }
end
my_rev(numbers6)
#=> [6, 5, 4, 3, 2, 1]
my_rev(numbers5)
#=> [5, 4, 3, 2, 1]
<强>#2 强>
def my_rev(numbers)
(numbers.size/2).times.with_object(numbers.dup) { |i,a| a[i],a[-1-i]=a[-1-i],a[i] }
end
my_rev(numbers6)
#=> [6, 5, 4, 3, 2, 1]
my_rev(numbers5)
#=> [5, 4, 3, 2, 1]
答案 1 :(得分:1)
这是处理此问题的一种方法。这不是很有效但有效。
def reversal(array)
reversed = []
loop do
reversed << array.pop
break if array.empty?
end
reversed
end
以下是执行相同操作的另一个实现:
def reversal(array)
array.each_with_index.map do |value, index|
array[array.count-index-1]
end
end
答案 2 :(得分:0)
执行此操作的方法很多
a=[1,2,3,4,5,6,7,8]
i=1
while i <= a.length/2 do
temp = a[i-1]
a[i-1] = a[a.length-i]
a[a.length-i] = temp
i+=1
end
a=[1,2,3,4,5,6]
i=0
b=[]
t=a.length
while i< t do
b << a.pop
i+=1
end
a=[1,2,3,4,5,6]
b=[]
loop do
b << a.pop
break if a.empty?
end
答案 3 :(得分:0)
a = [1,2,3,4,5]
b = []
a.length.times { |i| b << a[(i+1)*-1] }
b
=> [5,4,3,2,1]