Próbowałem pewnych problemów z moją tablicą 2D ruby, a mój LOC znacznie się zmniejsza, gdy robię cięcie w tablicy. Na przykład:Ruby pobierające elementy ukośne w tablicy 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
Chcę wiedzieć, czy istnieje sposób na uzyskanie przekątnej plasterka? Powiedzmy, że chcę zacząć od [0,0] i chcę przekątnej plastra 3. Wtedy dostanę elementy od [0,0], [1,1], [2,2] i otrzymam tablicę [1,4,7] na przykład powyżej. Czy istnieje jakiś magiczny, jednolinijkowy kod rubowy, który może to osiągnąć? 3x zrobić {jakieś magiczne rzeczy?}
Prawdopodobnie znasz to, ale 'stawia tablicę [1..2] [1]' jest równoważne do 'puts array [2]', a nie 'puts array [1..2] .map {| arr | arr [1]} '. Nie jestem pewien, czy używanie tablic tablic to właściwy sposób robienia rzeczy, ale nie byłem w stanie zbudować niczego lepszego. –
To była moja intencja. Ale twoja odpowiedź jest nadal bardzo przydatna. Dzięki :) –