HOME»基本情報技術者試験掲示板»平成26年春期午後問13 eについて
投稿する
»[3663] 基本情報技術者試験関連でおすすめの書籍など 投稿数:3
»[3662] アルゴリズムに時間がかかりすぎる 投稿数:7
平成26年春期午後問13 eについて [3665]
かにみそさん(No.1)
https://www.fe-siken.com/kakomon/26_haru/pm13.html
解答はオとなっていますが、オだと多重度が2未満の場合にJが増えませんよね?
そうなると、求めた評価値が連続して同じではなかった場合に前に評価した提供リストの行が上書きされて消えてしまいませんか?
例えば3回評価値を求め、全ての評価値が異なっていたときにどれも多重度が2未満ですからJが増えず、1回目に評価した提供リストの行は2回目の評価、3回目の評価の際に上書きされてしまっているのではないでしょうか?
これはJが提供リストの行を意味しているという認識が間違っているのでしょうか?
それとも、そもそも私がこの問題をかなり大きく間違えて認識してしまっているのでしょうか?
お答えいただきたいポイントは
1:eの答えを導くために必要な問題の説明(要するにマクロの説明)
2:J+1をするのが、多重度がN2以上の時だけでよい理由
になります。
お時間のある方、どうぞよろしくお願いいたします。
解答はオとなっていますが、オだと多重度が2未満の場合にJが増えませんよね?
そうなると、求めた評価値が連続して同じではなかった場合に前に評価した提供リストの行が上書きされて消えてしまいませんか?
例えば3回評価値を求め、全ての評価値が異なっていたときにどれも多重度が2未満ですからJが増えず、1回目に評価した提供リストの行は2回目の評価、3回目の評価の際に上書きされてしまっているのではないでしょうか?
これはJが提供リストの行を意味しているという認識が間違っているのでしょうか?
それとも、そもそも私がこの問題をかなり大きく間違えて認識してしまっているのでしょうか?
お答えいただきたいポイントは
1:eの答えを導くために必要な問題の説明(要するにマクロの説明)
2:J+1をするのが、多重度がN2以上の時だけでよい理由
になります。
お時間のある方、どうぞよろしくお願いいたします。
2021.10.13 16:30
関数従属さん(No.2)
★FE ゴールドマイスター
空欄eの部分は〔ワークシート:提供リスト〕の(5)の説明
「ワークシート"匿名化顧客リスト"のセル N2 には,表示する多重度の下限値が入力されている。
ここで,表示する多重度の下限値は2以上の整数とする。
多重度がこの値以上の郵便番号,年齢,職業コードの組を,多重度とともにワークシート"提供リスト"に表示する。」
の部分に関連しています。
"匿名化顧客リスト"の全ての行を"提供リスト"に表示するのではなく
多重度("匿名化顧客リスト"のN2セル)未満のものは表示しないという事になります。
例えば3回評価値を求め、全ての評価値が異なっていたときはどれも多重度は1であり、
多重度("匿名化顧客リスト"のN2セル)未満となりますのでいずれも"提供リスト"に表示しない事になり、
1回目の評価値は2回目の評価値で上書きされ、
2回目の評価値は3回目の評価値で上書きされます。
また、この場合だと3回目の評価値もNULLで上書きする必要があり
それはマクロの最後の部分
if 相対(提供リスト!A1,J,3) < minMultiplicity
相対(提供リスト!A1,J,0) ← null
相対(提供リスト!A1,J,1) ← null
相対(提供リスト!A1,J,2) ← null
相対(提供リスト!A1,J,3) ← null
end if
で行っております。
「ワークシート"匿名化顧客リスト"のセル N2 には,表示する多重度の下限値が入力されている。
ここで,表示する多重度の下限値は2以上の整数とする。
多重度がこの値以上の郵便番号,年齢,職業コードの組を,多重度とともにワークシート"提供リスト"に表示する。」
の部分に関連しています。
"匿名化顧客リスト"の全ての行を"提供リスト"に表示するのではなく
多重度("匿名化顧客リスト"のN2セル)未満のものは表示しないという事になります。
例えば3回評価値を求め、全ての評価値が異なっていたときはどれも多重度は1であり、
多重度("匿名化顧客リスト"のN2セル)未満となりますのでいずれも"提供リスト"に表示しない事になり、
1回目の評価値は2回目の評価値で上書きされ、
2回目の評価値は3回目の評価値で上書きされます。
また、この場合だと3回目の評価値もNULLで上書きする必要があり
それはマクロの最後の部分
if 相対(提供リスト!A1,J,3) < minMultiplicity
相対(提供リスト!A1,J,0) ← null
相対(提供リスト!A1,J,1) ← null
相対(提供リスト!A1,J,2) ← null
相対(提供リスト!A1,J,3) ← null
end if
で行っております。
2021.10.14 00:04
中入中出法さん(No.3)
この問題、初見で解いたとき自分も同じことを思いました。
エクセルのマクロで実装してプログラムを動かしてみると、上の方がおっしゃられている現象が実感できます。少し変わったアルゴリズムなので、こんなやり方もあるのか~と新たな発見になりました。
minMultiplicity以上の項目だけを「提供リスト」に残したいわけなので、minMultiplicity未満であることが確定された項目は次の項目で上書きされて消されてOKなのです。
そして最後に「提供リスト」に表示された項目がminMultiplicity未満であった場合は、次の項目が無いかわりに、最後のマクロのようにNULLで上書きして消していることになります。
エクセルのマクロで実装してプログラムを動かしてみると、上の方がおっしゃられている現象が実感できます。少し変わったアルゴリズムなので、こんなやり方もあるのか~と新たな発見になりました。
minMultiplicity以上の項目だけを「提供リスト」に残したいわけなので、minMultiplicity未満であることが確定された項目は次の項目で上書きされて消されてOKなのです。
そして最後に「提供リスト」に表示された項目がminMultiplicity未満であった場合は、次の項目が無いかわりに、最後のマクロのようにNULLで上書きして消していることになります。
2021.10.16 02:06
かにみそさん(No.4)
返事が遅れてしまい、申し訳ございません。
お二方の説明で理解することができました。
ありがとうございました!
お二方の説明で理解することができました。
ありがとうございました!
2021.10.16 17:50
その他のスレッド
»[3664] メモ・計算用紙につきまして 投稿数:3»[3663] 基本情報技術者試験関連でおすすめの書籍など 投稿数:3
»[3662] アルゴリズムに時間がかかりすぎる 投稿数:7