Я пытался решить некоторые проблемы с моим 2D-рубиновым массивом, и мой LOC значительно сокращает время, когда я занимаюсь массивом массивов. Так, например,Ruby, получая диагональные элементы в массиве 2d
require "test/unit"
class LibraryTest < Test::Unit::TestCase
def test_box
array = [[1,2,3,4],[3,4,5,6], [5,6,7,8], [2,3,4,5]]
puts array[1][2..3] # 5, 6
puts array[1..2][1] # 5, 6, 7, 8
end
end
Я хочу знать, есть ли способ получить диагональный срез? Предположим, что я хочу начать с [0,0] и хочу диагональный срез из 3. Тогда я бы получил элементы из [0,0], [1,1], [2,2], и я получу массив вроде [1,4,7], например, выше. Есть ли какой-нибудь волшебный однострочный рубиновый код, который может это сделать? 3 × делать {некоторые магические вещи?}
Вы, наверное, знаете это, но 'помещает массив [1..2] [1]' эквивалентно to 'puts array [2]', а не 'puts array [1..2] .map {| arr | обр [1]} '. Я не уверен, что с помощью массивов массивов это правильный способ делать вещи, но я не смог построить ничего лучше. –
Это было мое намерение. Но ваш ответ по-прежнему очень полезен. Спасибо :) –