データ構造及びアルゴリズムの擬似言語について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
太郎さん  
(No.1)
Bitap法によるアルゴリズム
設問3
関数 GenerateBitMask
擬似言語の処理をトレースしているのですが、条件式の部分がいまいち理解できません。
条件式内の最後の処理、
・MASK[INDEX(PAT[I])]←…(以下省略)
はどこの条件式ないにあるのでしょうか?
私が思うに3つの条件分岐処理だと思っています。
そして最後の条件式(MODE = 0)の処理内に存在する処理になると考えているのですが、
そうすると矢印の長さがたりないように思います。
すみませんがどなたかご教授願います。
2020.01.20 12:04
太郎さん  
(No.2)
すみません。
下記間違えです。
失礼しました。
誤り:最後の条件式(MODE = 0)の処理内に存在する処理

すみませんが、
本件引き続き教えていただきたいです。
2020.01.20 13:51
QMさん 
FE ゴールドマイスター
(No.3)
令和元年秋期午後ですね。
この回を受験した人ばかりではないので、何年のどの問題と明記しましょうね。

で、受験していない私は該当部分だけ読んでの理解なので、何か見落としていたらごめんなさいですが。

"[" のとき
"]" のとき
それ以外(英字)のとき
の3つに分けて、英字のときだけ論理和を求めてMaskに入れる。

というのが大枠。

それとは別に、PatLenを数えるため、
"[" のとき
Mode=0 のとき
の二種類のタイミングで PatLen+1 をやっている。

Mode=0 つまり [] の外のときは1文字ずつ数えるけれど、
そうでないとき、つまり [] の中は全体で1文字なので、"[" が出てきた時に数えて、
個々の文字は数えない。

Mode=0 は PatLen+1 するための条件でしかないので、矢印はこれでOK。

これでいかが?
2020.01.20 21:50
太郎さん  
(No.4)
ご返信ありがとうございます。
失礼しました。
以後気をつけます。
>令和元年秋期午後ですね。
>この回を受験した人ばかりではないので、何>年のどの問題と明記しましょうね

大変わかりやすく。
理解できました。
if "[" のとき
・Mode ← 1
・PatLen+1
else if "]" のとき
・Mode ← 0
else それ以外(英字)のとき
  if Mode = 0
  ・PatLen+1
  end if
・MASK[INDEX(PAT[I])]←…(以下省略)
end if


を擬似言語で表しているのですね。

ありがとうございました。
スッキリしました。

2020.01.21 12:52

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop