Podstawy tablic 2D
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 10 z 56.
Tablica 2D to tablica, której elementami są inne tablice. Każda wewnętrzna tablica reprezentuje wiersz w siatce.
cinema = [
[true, true], # Rząd 0
[false, true] # Rząd 1
]To przedstawia siatkę 2×2: dwa wiersze, każdy z dwiema kolumnami.
Aby utworzyć siatkę 3×4 liczb całkowitych:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]Możesz utworzyć siatkę wypełnioną domyślną wartością za pomocą Array.new dwa razy: raz dla wierszy, a raz dla kolumn:
grid = Array.new(3) { Array.new(4, 0) }
# 3 wiersze, 4 kolumny, same zeraForma blokowa ({ Array.new(4, 0) }) ma znaczenie: tworzy nową wewnętrzną tablicę dla każdego wiersza. Bez niej każdy wiersz wskazywałby na tę samą tablicę.
Wyzwanie
ŁatwyWczytaj dwie liczby całkowite (dwa wiersze danych wejściowych): rows i cols. Zbuduj tablicę 2D o takim rozmiarze, w której każda komórka jest równa row * cols + col + 1 (czyli pierwszy wiersz zaczyna się od 1, a siatka jest wypełniana w kolejności czytania).
Wypisz siatkę, używając inspect na zewnętrznej tablicy, w jednym wierszu.
Dla danych wejściowych 2, a następnie 3, wynikiem jest:
[[1, 2, 3], [4, 5, 6]]Spróbuj swoich sił
rows = gets.to_i
cols = gets.to_i
# TODO: utwórz siatkę i wypisz ją za pomocą inspect
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