修了試験 2024-01-28実施分 基本情報技術者試験 問3
次のBNFにおいて非終端記号〈A〉から生成される文字列はどれか。 <R_0> ::= 0 | 3 | 6 | 9 <R_1> ::= 1 | 4 | 7 <R_2> ::= 2 | 5 | 8 <A> ::= <R_0> | <A> <R_0> | <B> <R_2> | <C> <R_1> <B> ::= <R_1> | <A> <R_1> | <B> <R_0> | <C> <R_2> <C> ::= <R_2> | <A> <R_2> | <B> <R_1> | <C> <R_0>
正答1
解説
正解は1です。 BNF(Backus-Naur Form:バッカス・ナウア記法)の規則から、〈A〉が生成する文字列の性質を読み取る問題です。 〈R_0〉は3で割った余りが0の数字、〈R_1〉は余りが1の数字、〈R_2〉は余りが2の数字です。 〈A〉〈B〉〈C〉の規則をみると、〈A〉は各けたの数字の和を3で割った余りが0、〈B〉は余りが1、〈C〉は余りが2になる文字列を表しています。 たとえば〈A〉::=〈B〉〈R_2〉は、余り1の後ろに余り2の数字を付けると、余りが1+2=3で0になることを表します。 【選択肢別解説】 1:○ 「1」は〈R_1〉なので〈B〉です。 「12」は〈B〉〈R_2〉なので〈A〉です。 「123」は〈A〉〈R_0〉なので〈A〉となり、生成できます。 各けたの和は6で、3で割り切れます。 2:× 「12」は〈A〉で、「124」は〈A〉〈R_1〉なので〈B〉になります。 各けたの和は7で、3で割ると1余るので〈A〉からは生成できません。 3:× 「127」も〈A〉〈R_1〉の形なので〈B〉になります。 各けたの和は10で、3で割ると1余るので〈A〉からは生成できません。 4:× 「128」は〈A〉〈R_2〉の形なので〈C〉になります。 各けたの和は11で、3で割ると2余るので〈A〉からは生成できません。 【ポイント】 〈A〉は「3の倍数を表す数字列」を生成する規則です。 BNFの問題は、短い文字列から順に、どの非終端記号に当たるかを1文字ずつ確かめると確実です。まとめて解く
修了試験 2024-01-28実施分を通しで解く(60問)→