令和6年科目B 問5 関連商品の度数を算出するプログラム その2



続きです。

今回は、プログラム文の赤枠を見ていきます。
valueL← (arrayM[i]×[ c
]
) ÷ (itemCount × arrayK[i])
ここで前回のおさらいになります。
大域変数ordersには{{”A”,”B”,”D”},{”A”,”D”},{”A”},{”A”,”B”,”E”},{”B”},{”C”,”E”}}が格納されています。
itemには、Aなどの文字が入ります。
allitemsにはordersに格納している文字列を重複なく格納したものです。
◾︎イメージ
{”A”,”B”,”C”,”D”,”E”}
※allitemsは全ての商品の配列という意味。
otheritemsは、allitemsからitemの値を除いた値を格納しています。
イメージ
{”B”,”C”,”D”,”E”}
上記をまとめると
orders
{{”A”,”B”,”D”},{”A”,”D”},{”A”},{”A”,”B”,”E”},{”B”},{”C”,”E”}}
allitems
{”A”,”B”,”C”,”D”,”E”}
otheritems
{”B”,”C”,”D”,”E”}
[ c ]の部分に着目してみます。

cは赤枠で囲った「全注文数」に該当します。
「allitemsはordersに格納している文字列を重複なく格納したもの」なので、全注文数とは関係ないです。
「otheritemsは、allitemsからitemの値を除いた値を格納」していて、全注文数とは関係ないとわかります。
「ordersには{{”A”,”B”,”D”},{”A”,”D”},{”A”},{”A”,”B”,”E”},{”B”},{”C”,”E”}}」の各注文データが入っており、cには全注文数である「ordersの要素数」が入ることがわかります。
arrayKとarrayMの値はこうでした。
arrayK{3,1,2,2}arrayM{2,0,2,1}
valueL← (arrayM[i]×[ c
]
) ÷ (itemCount × arrayK[i])
商品Aと商品Bの関連度を上記の式に当てはめると
2×6÷4×3=1.0となります。
なので、valueL=1.0となります。
プログラムに戻ります。
if(valuelがmaxLより大きい)
→条件を満たします。maxLは-∞です。
maxL ← valueL
valueLの1がmaxLに代入され、maxLが1になります。
relatedItem ← otherItems[i]
→otherItems[1]のBが、relatedItemに入ります。
relatedItem=B
relatedItemは、関連度が他のものより高い値だった場合、更新されます。
なので、Cの関連度がBより高ければCがrelatedItemに入ります。
maxLが2、3、4と更新された場合、relatedItemもC、D、Eと更新されていきます。
引用元
https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/eid2eo0000007g1d-att/2024r06_fe_kamoku_b_qs.pdf