基礎練習②
マトリックスとは?
数学的な用語で、矩形配列のことを指します。
つまり、行と列で構成された表のようなものです。
コンピュータサイエンスの文脈では、これは通常、2次元配列やリストのリストとして表現されます。
たとえば、以下のような3x3のマトリックス(2次元配列)を考えてみてください。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
このマトリックスは3つの行と3つの列から成り立っており、それぞれの行はさらに3つの要素を持つ配列になっています。
このマトリックスで、matrix[0][0]は1、matrix[1][1]は5、matrix[2][2]は9といった具体的な値にアクセスすることができます。このように、マトリックスの特定の位置を指定して、その位置の値を取り出したり、新しい値を設定したりすることが可能です。
マトリックスは、画像処理、グラフ理論、機械学習など、多くの計算問題で使用されます。
マトリックスの探索という問題を解説
問題:
あるM行N列の2次元配列(マトリックス)が与えられます。その中に特定の数値が存在するかどうかを探し、存在する場合はその位置を返す関数を書いてください。特定の数値が存在しない場合は、その旨を伝えるメッセージを返してください。
具体的には、次のような関数を作成します:
def find_value(matrix, target)
# ここにコードを書く
end
ここで、matrixは2次元配列(マトリックス)で、targetは探すべき特定の数値です。
この問題を解くためには、2重ループを使ってマトリックスの全ての要素を一つずつ調べることになります。
外側のループはマトリックスの各行を反復し、内側のループは各行の各要素を反復します。
この問題の解答は以下の通りになります!
def find_value(matrix, target)
for i in 0..matrix.length-1 do
for j in 0..matrix[i].length-1 do
if matrix[i][j] == target
return "The target value #{target} is found at position (#{i}, #{j})"
end
end
end
return "The target value #{target} is not found in the matrix"
end
この関数は、2次元配列(マトリックス)の全ての要素を一つずつ調べて、
探している数値を見つけたらその位置を返します。
もし探している数値が見つからなければ、その旨を伝えるメッセージを返します。
各行の詳細な説明
以下に各行の詳細な説明を行います。
def find_value(matrix, target)
- 上記の行は、find_valueという新しい関数を定義しています。
- この関数は、2つのパラメータ、matrixとtargetを取ります。
- matrixは2次元配列(マトリックス)で、targetは探すべき特定の数値です。
for i in 0..matrix.length-1 do
- この行は外側のループを開始します。このループはマトリックスの各行を反復します。matrix.lengthはマトリックスの行数を返します。
for j in 0..matrix[i].length-1 do
- この行は内側のループを開始します。
- このループは、現在の行(外側のループによって指定された行)の各要素を反復します。
- matrix[i].lengthは現在の行の要素数(列数)を返します。
if matrix[i][j] == target
- この行は現在の要素(matrix[i][j])が探している値(target)と一致するかどうかを確認します。
return "The target value #{target} is found at position (#{i}, #{j})"
- 上記の行は、探している値が見つかった場合、その値とその位置を示すメッセージを返します。
return "The target value #{target} is not found in the matrix"
-
上記の行は、探している値が見つからなかった場合、その旨を伝えるメッセージを返します。
-
この行はループが全て終了した後に実行されます。
-
なお、matrixには、2次元の配列が入ります。
-
これは数値や文字列など、あらゆる種類の要素を含む配列の配列です。例えば次のようなものです:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Discussion