次のプログラム中の a と b に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。
一つの要素だけが1 で他の要素が0 であるような整数型の配列による表現を,本問ではOne-Hot 表現という。関数oneHotEncoding は,図のように,色の名前が格納されている要素数1 以上の文字列型の配列を引数として受け取り,配列に含まれる色の名前(図の例では3 種類)に基づいて,各要素をOne-Hot 表現に変換し,整数型配列の配列に格納して返す。関数oneHotEncoding における変換の例を図に示す。
引数の例: {"Red", "Green", "Blue", "Red"} ↓ "Red"のOne-Hot 表現 : {1, 0, 0} "Green"のOne-Hot 表現: {0, 1, 0} "Blue"のOne-Hot 表現 : {0, 0, 1} ↓ 引数の例に対応する戻り値: {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 0, 0}}
〔プログラム〕
○整数型配列の配列: oneHotEncoding(文字列型の配列: colors)
整数型: i, j, k
文字列型の配列: colorVector ← {} // 要素数0の配列
整数型の配列: tempVector
整数型配列の配列: oneHotVector ← {} // 要素数0の配列
/* 名前一覧の作成 */
for (i を 1 から colorsの要素数 まで 1 ずつ増やす)
if (colorVector の要素のいずれにも colors[i]の値 が格納されていない)
colorVectorの末尾 に [ a ] を追加する
endif
endfor
/* One-Hot表現への変換 */
for (j を 1 から colorsの要素数 まで 1 ずつ増やす)
tempVector ← {} // 要素数0の配列
for (k を 1 から colorVectorの要素数 まで 1 ずつ増やす)
if ( [ b ] )
tempVectorの末尾 に 1 を追加する
else
tempVectorの末尾 に 0 を追加する
endif
endfor
oneHotVectorの末尾 に tempVector を追加する
endfor
return oneHotVector出典令和8年度 基本情報技術者試験 科目B 問5
a | b | |
|---|---|---|
ア | colors i の値 | colors の要素のいずれかに colorVector k の値 が格納されている |
イ | colors i の値 | colors j が colorVector k と等しい |
ウ | 未定義の値 | colors の要素のいずれかに colorVector k の値 が格納されている |
エ | 未定義の値 | colors j が colorVector k と等しい |