Kodama's home / tips.
簡単な和,差,積,商などの計算問題を素早く繰り返し行うだけで脳を活性化させることができるらしい. 以下のスクリプトは, 100問の計算問題を作成しコンソールに表示, 又は, 印刷用の LaTeX 文書を出力する.
和,差,積のうち単独の計算に的をしぼるなら 100マス計算 を使う.
スクリプトをそのまま実行すると ターミナルに 4列 25行で計100問の問題が表示される. 縦に25問ならぶので, 縦方向に計算してゆく. 実行するターミナルは文字を大きめにしておくと良い. 画面上での目視で計算を行う. (コンソール上で解の入力まで行うのは困難なので...)
LaTeX 用の出力を用いて紙に印刷しても良いだろう. コンソール出力と LaTeX 出力の切替えは,スクリプト中の変数の書き換えで行う.
できるだけ素早く計算する. 所要時間のとりあえずの目標としては, 1セット(100問)で 2分程度. 早い人は 1分程度でできるらしい.
一日あたり, 3〜4セットこのドリルを行う.
$ echo;d1=`date +'%s'`;./calc-ex.rb;read;d2=`date +'%s'`;echo "elapsed: `expr $d2 - $d1` sec" (Enter キーを打鍵) 5 × 5 = 5 + 6 = 24 ÷ 3 = 63 ÷ 7 = 6 − 3 = 5 × 9 = 32 ÷ 8 = 10 − 4 = 4 × 9 = 2 + 2 = 9 × 9 = 12 − 8 = ....略 14 ÷ 7 = 16 − 8 = 5 × 6 = 9 + 5 = 3 × 5 = 13 − 5 = 10 − 3 = 16 − 9 = 6 + 5 = 6 × 9 = 2 + 7 = 8 × 5 = (Enter キーを打鍵) elapsed: 145 sec (経過時間を表示)
#!/usr/local/bin/ruby # calc-ex.rb # K.Kodama 2004-08-10. # # Usage1: ./calc-ex.rb # Usage2: echo;d1=`date +'%s'`;./calc-ex.rb;read;d2=`date +'%s'`;echo "elapsed: `expr $d2 - $d1` sec" Tbl=[[],[],[],[]] def tbl_init(t) Tbl[t]=Array.new; if t==0 or t==1 then base=1 # 和/差 else base=2 # 積/商 end; for a in base..9; for b in base..9; Tbl[t].push([a,b]); end; end; end; def ex1(t=rand(4)) # t= dafault(和/差/積/商 混合), 0(和), 1(差), 2(積), 3(商) fmt="%2d %s %d"; if Tbl[t].size==0; tbl_init(t); end; a,b=Tbl[t].delete_at(rand(Tbl[t].size)) if t==0; return sprintf(fmt, a, "+", b) elsif t==1; return sprintf(fmt, a+b, "−", a) elsif t==2; return sprintf(fmt, a, "×", b) else return sprintf(fmt, (a*b) + rand(b), "÷", b) end; end; def ex(n=4,r_func=proc{rand(4)}) # 問題数 25n. コンソール出力用 25.times{n.times{printf("%s = ",ex1(r_func.call))}; print "\n"} end; def tex_100(r_func=proc{rand(4)}) # LaTeX A4 版, 100問 print "\\documentclass[a4j]{jarticle}\n\\begin{document}\\pagestyle{empty}\\Large 計算練習.\\vfill\n" print "\\begin{tabular}{"+"r@{ =\\hspace*{10mm}}"*4+"}\n" 25.times{s=""; 4.times{printf("%s%s",s,ex1( r_func.call )); s=" & "};print "\\\\\n"} print "\\end{tabular}\\vfill\n" print "\\hfill\\underline{日付\\hspace*{2cm}}\\underline{所要時間\\hspace*{1cm}分\\hspace*{1cm}秒}\n" print "\\end{document}\n" end; srand; s="r4.100" case s when "tex.r4.100" then ### 100問 混合(和/差/積/商) LaTeX A4 版 tex_100(proc{rand(4)}) when "tex.r3.100" then ### 100問 混合(和/差/積) LaTeX A4 版 tex_100(proc{rand(3)}) when "tex.e2.100" then ### 100問 かけ算 LaTeX A4 版 tex_100(proc{2}) when "r4.100" then ### 100問 混合(和/差/積/商) ex(4,proc{rand(4)}) when "r3.100" then ### 100問 混合(和/差/積) ex(4,proc{rand(3)}) when "e2.50" then ### 50問 かけ算 ex(2,proc{2}) end; # end of the script.
Kodama's home / tips.