令和元年秋期午後問8
タロウさん
(No.1)
https://www.fe-siken.com/kakomon/01_aki/pm08.html
設問3のhについての質問です。関数GenerateBitMaskRegexの返却値であるPatLenの最終的な数値はいくつかを解かせる問題ですが、ここの解答が6であることに納得がいきません。解説によれば、「正規表現の先頭文字である"["を見つけると1になり、正規表現の終端文字である"]"に達すると0になります。つまり、2つ目のModeが0のときとは、正規表現ではない普通の文字のときであると判断できます。」と記述されています。プログラムではpat[i]="]"であるときMode←0になり、解説通りですが、Modeに0を代入した直後にMode=0でPatLen←Patlen+1の操作をしています。つまり。Pat[i]="]"の時、PatLenには1が加算されていることになりませんか?解説では、Pat[i]が"]"の時にはModeに0が入っているにもかかわらずPatLenに1を加算するのは"]"の次の文字からになっています。この点を解説して頂けたら幸いです。長文失礼いたしました。
設問3のhについての質問です。関数GenerateBitMaskRegexの返却値であるPatLenの最終的な数値はいくつかを解かせる問題ですが、ここの解答が6であることに納得がいきません。解説によれば、「正規表現の先頭文字である"["を見つけると1になり、正規表現の終端文字である"]"に達すると0になります。つまり、2つ目のModeが0のときとは、正規表現ではない普通の文字のときであると判断できます。」と記述されています。プログラムではpat[i]="]"であるときMode←0になり、解説通りですが、Modeに0を代入した直後にMode=0でPatLen←Patlen+1の操作をしています。つまり。Pat[i]="]"の時、PatLenには1が加算されていることになりませんか?解説では、Pat[i]が"]"の時にはModeに0が入っているにもかかわらずPatLenに1を加算するのは"]"の次の文字からになっています。この点を解説して頂けたら幸いです。長文失礼いたしました。
2020.08.17 12:08
管理人
(No.2)
> Modeに0を代入した直後にMode=0でPatLen←Patlen+1の操作をしています。
プログラムの構造は以下のようになっています。
if (Pat[i] = "[") {
Mode ← 0
} else {
if (Mode = 0) {
PatLen ← PatLen + 1
}
//省略
}
Pat[i] = "[" のときにPatLenがインクリメントされることはありません。
的外れな意見でしたらすみません。
2020.08.17 14:31
タロウさん
(No.3)
ご返信ありがとうございます。プログラムの構造について勘違いしていました。
的確なご回答ありがとうございました!
的確なご回答ありがとうございました!
2020.08.17 19:31
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告