資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

FE 科目B 令和6年度 問5

 

 次のプログラム中の  a    c  に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。

 一度の注文で購入された商品のリストを,注文ごとに記録した注文データがある。表に,注文データの例を示す。

表 注文データの例
注文番号 購入された商品のリスト
1 A, B, D
2 A, D
3 A
4 A, B, E
5 B
6 C, E

 注文データから,商品 x と商品 y とが同一の注文で購入されやすい傾向を示す関連度 Lxy を,次の式で計算する。

Lxy = Mxy × 全注文数 / Kx × Ky

 ここで,Mxy は商品 x と商品 y とが同一の注文で購入された注文数,Kx は商品 x が購入された注文数,Ky は商品 y が購入された注文数を表す。表の例では,MAB が 2,全注文数が 6,KA が 4,KB が 3 であるので,商品 A と商品 B の関連度 LAB は,(2 × 6) / (4 × 3) = 1.0 である。
 手続 putRelatedItem は,大域変数 orders に格納された注文データを基に,引数で与えられた商品との関連度が最も大きい商品のうちの一つと,その関連度を出力する。プログラムでは,商品は文字列で表し,注文は購入された商品の配列,注文データは注文の配列で表している。注文データには 2 種類以上の商品が含まれるものとする。また,注文データにある商品以外の商品が,引数として与えられることはないものとする。

〔プログラム〕
 // 注文データ(ここでは表の例を与えている)
 大域: 文字列型配列の配列: orders ← {{"A", "B", "D"}, {"A", "D"}, {"A"},
  {"A", "B", "E"}, {"B"}, {"C", "E"}}

◯putRelatedItem(文字列型: item)
 文字列型の配列: allItems ← ordersに含まれる文字列を
  重複なく辞書順に格納した配列
  // 表の例では {"A", "B", "C", "D", "E"}

 文字列型の配列: otherItems ← allItemsの複製から値がitemである
  要素を除いた配列

 整数型: i, itemCount ← 0
 整数型の配列: arrayK ← {otherItemsの要素数個の0}
 整数型の配列: arrayM ← {otherItemsの要素数個の0}
 実数型: valueL, maxL ← -∞
 文字列型の配列: order
 文字列型: relatedItem

 for (orderにordersの要素を順に代入する)
  if (orderのいずれかの要素の値がitemの値と等しい)
   itemCountの値を1増やす
  endif
  for (iを1からotherItemsの要素数まで1ずつ増やす)
   if (orderのいずれかの要素の値がotherItems[i]の値と等しい)
    if (orderのいずれかの要素の値がitemの値と等しい)
       a  の値を1増やす
    endif
      b  の値を1増やす
   endif
  endfor
 endfor
 for (iを1からotherItemsの要素数まで1ずつ増やす)
  valueL ← (arrayM[i] ×   c  ) ÷ (itemCount × arrayK[i])
   /* 実数として計算する */
  if (valueLがmaxLより大きい)
   maxL ← valueL
   relatedItem ← otherItems[i]
  endif
 endfor
 relatedItemの値とmaxLの値をこの順にコンマ区切りで出力する

解答群

  a b c
arrayK[i] arrayM[i] allItemsの要素数
arrayK[i] arrayM[i] ordersの要素数
arrayK[i] arrayM[i] otherItemsの要素数
arrayM[i] arrayK[i] allItemsの要素数
arrayM[i] arrayK[i] ordersの要素数
arrayM[i] arrayK[i] otherItemsの要素数

解答・解説

解答

 オ

解説

 ー

前問 一覧 次問