2022年4月25日公開分 [科目B]問5
問5解説へ
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
任意の異なる2文字をc1,c2とするとき,英単語群に含まれる英単語において,c1の次にc2が出現する割合を求めるプログラムである。英単語は,英小文字だけから成る。英単語の末尾の文字がc1である場合,その箇所は割合の計算に含めない。例えば,図に示す4語の英単語"importance","inflation","information","innovation"から成る英単語群において,c1を"n",c2を"f"とする。英単語の末尾の文字以外に"n"は五つあり,そのうち次の文字が"f"であるものは二つである。したがって,求める割合は,2÷5=0.4である。c1とc2の並びが一度も出現しない場合,c1の出現回数によらず割合を0と定義する。 プログラムにおいて,英単語群は Words 型の大域変数 words に格納されている。クラス Words のメソッドの説明を,表に示す。本問において,文字列に対する演算子"+"は,文字列の連結を表す。また,整数に対する演算子"÷"は,実数として計算する。〔プログラム〕
任意の異なる2文字をc1,c2とするとき,英単語群に含まれる英単語において,c1の次にc2が出現する割合を求めるプログラムである。英単語は,英小文字だけから成る。英単語の末尾の文字がc1である場合,その箇所は割合の計算に含めない。例えば,図に示す4語の英単語"importance","inflation","information","innovation"から成る英単語群において,c1を"n",c2を"f"とする。英単語の末尾の文字以外に"n"は五つあり,そのうち次の文字が"f"であるものは二つである。したがって,求める割合は,2÷5=0.4である。c1とc2の並びが一度も出現しない場合,c1の出現回数によらず割合を0と定義する。 プログラムにおいて,英単語群は Words 型の大域変数 words に格納されている。クラス Words のメソッドの説明を,表に示す。本問において,文字列に対する演算子"+"は,文字列の連結を表す。また,整数に対する演算子"÷"は,実数として計算する。〔プログラム〕
- (words.freq(s1) - words.freqE(s1)) ÷ words.freq(s1+s2)
- (words.freq(s2) - words.freqE(s2)) ÷ words.freq(s1+s2)
- words.freq(s1+s2) ÷ (words.freq(s1) - words.freqE(s1))
- words.freq(s1+s2) ÷ (words.freq(s2) - words.freqE(s2))
正解 ウ問題へ
分野:アルゴリズムとプログラミング
カテゴリ:プログラミングの諸分野への適用
カテゴリ:プログラミングの諸分野への適用
広告
解説
設問中のようにc1が"n"、c2が"f"だった場合を考えると、c1の次にc2が出現する数回数は以下の式で求めることになります。
("nf"の並びが出現する回数)÷(文字列の末尾以外で"n"が出現する数)
プログラム上では、変数 s1 にc1が、変数 s2 にc2が格納されているので、それぞれ以下の式で表すことができます。
("nf"の並びが出現する回数)÷(文字列の末尾以外で"n"が出現する数)
プログラム上では、変数 s1 にc1が、変数 s2 にc2が格納されているので、それぞれ以下の式で表すことができます。
- ①c1の次にc2が出現する数
- s1とs2が並ぶ文字列(s1+s2)の出現回数を知りたいので、words.freq(s1+s2)
- ②文字列の末尾以外で"n"が出現する数
- "n"が出現する数はwords.freq(s1)、文字列の末尾に"n"が出現する数はwordsE.freq(s1)なので、words.freq(s1) - wordsE.freq(s1)
広告