文章問題を自動生成する その1_2 りんごの値段は? (数値を変更)
はじめに
前回は文章題の「解き方にかかわらない部分」を書き換えました。
今回は「解き方にかかわる部分」を書き換えてみます。
ひながたの問題
書き換えるもとになる文章です。
問題
りんごが1個100円で売られています。
りんごを3つ買う時の値段はいくらでしょう。
解き方
3×100=300
よって300円。
自動でやってみる
今回は「問題文」と「解き方」の両方を書き換える必要があります。
さらに「解き方」では数値の再計算をする必要があります。
Sub 文章題生成_2() '-------------------------- '文章第の一部を書き換える '-------------------------- '-------------------------- '変数の定義 '-------------------------- Dim strA(1 To 2) As String '問題文 Dim strB(1 To 2) As String '解き方 Dim num(1 To 3) As Integer '入れ替え用の変数 Dim trgt As String '入れ替え用の変数 Dim i As Integer '繰り返しの制御変数 Dim j As Integer '繰り返しの制御変数 '-------------------------- '問題文のひながた '-------------------------- strA(1) = "りんごが1個num1円で売られています。" strA(2) = "りんごをnum2つ買う時の値段はいくらでしょう。 " '-------------------------- '解き方のひながた '-------------------------- strB(1) = "num1×num2=num3" strB(2) = "よってnum3円" '-------------------------- '問題文を変更 '-------------------------- num(1) = Rnd_Num(1, 5) * 10 + 100 num(2) = Rnd_Num(3, 7) num(3) = num(1) * num(2) For i = 1 To 3 trgt = "num" & i For j = 1 To 2 strA(j) = Replace(strA(j), trgt, num(i)) strB(j) = Replace(strB(j), trgt, num(i)) Next Next '-------------------------- 'Debug '-------------------------- For i = 1 To 2 Debug.Print strA(i) Next For i = 1 To 2 Debug.Print strB(i) Next End Sub
ひながたとなる文章の一部を変更しました。
書き換えたい部分をあらかじめマークしておくと、簡単に処理できるみたいです。
生成結果
せっかくなので生成された文章を載せておきます。
りんごが1個130円で売られています。
りんごを4つ買う時の値段はいくらでしょう。
130×4=520
よって520円
まとめ
簡単な文章題を一問だけ手動で作れば、それに似た問題を自動生成できるようになりました。
意外と簡単でしたね。
次回はひながたの文章と書き換えた文章の管理について書きます。