HOME»基本情報技術者試験掲示板»データ構造及びアルゴリズムの擬似言語について
投稿する

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

 太郎さん(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さん(No.3) 
FE ゴールドマイスター
令和元年秋期午後ですね。
この回を受験した人ばかりではないので、何年のどの問題と明記しましょうね。

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

"[" のとき
"]" のとき
それ以外(英字)のとき
の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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop