Dostęp do elementów tablic 2D
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 11 z 56.
Aby odczytać lub zaktualizować pojedynczą komórkę w tablicy 2D, połącz dwa odwołania indeksowe: pierwsze wybiera wiersz, drugie wybiera kolumnę.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (lewy górny róg)
puts matrix[1][2] # 60 (wiersz 1, kolumna 2)
puts matrix[2][0] # 70 (lewy dolny róg)Aktualizowanie komórki wymaga użycia tej samej składni po lewej stronie:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Dwa przydatne zapytania dotyczące kształtu:
puts matrix.length # 3 (liczba wierszy)
puts matrix[0].length # 3 (kolumny w wierszu 0)Indeksy zaczynają się od 0 i dochodzą do length - 1. Wyjście poza koniec zwraca nil zamiast zgłaszać błąd.
Wyzwanie
PoczątkującyDana jest tablica 2D matrix. Wczytaj trzy liczby całkowite (trzy wiersze): r1, c1, a następnie v. Następnie:
- Wypisz wartość z pozycji
matrix[r1][c1] - Ustaw
matrix[r1][c1] = v - Wypisz całą zaktualizowaną tablicę
matrixza pomocąinspect
Dla wejścia 1 / 2 / 99 wynikiem jest:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Spróbuj swoich sił
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: wypisz matrix[r1][c1], przypisz v, a następnie wypisz całą macierz
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocen3Tablice 2D
Podstawy tablic 2DDostęp do elementów tablic 2DIterowanie po tablicach 2DTypowe wzorce 2DPowtórzenie – operacje na macierzach6Projekt – Menedżer biblioteki
Przegląd projektuDodaj książkęPoćwicz samodzielnie: Kompilator Ruby online