※記法については『算数の問題文の記法のまとめ【随時更新】 - 算数の問題文の記法を考える』を読んでください。
【1999年度ジュニア算数オリンピックトライアル問題5問目】
貯金箱をあけると、1円玉、5円玉、10円玉ばかりで合計101枚出てきました。お母さんに、1円玉10枚を10円玉1枚と交かんしていってもらうと、1円玉をすべて交かんすることができて、合計の枚数は65枚になりました。1円玉は、はじめに何枚ありましたか。
【記法化】
ichiyen + goyen + zyuyen == 101; 記録1; 実行; while (ichiyen != 0){ if (ichiyen < 0){ エラー; } 実行; ichiyen -= 10; zyuyen += 1; 実行; } ichiyen + goyen + zyuyen == 65; 記録1 { print(ichiyen); }
【工夫】
start_total == 101; decreases_per_step == 9; end_total == 65; steps == (start_total - end_total) / decreases_per_step; answer == steps * 10; print(answer);
合計に着目して1行目の「ichiyen + goyen + zyuyen == 101;」の「ichiyen」「goyen」「zyuyen」の用意を飛ばす。「101枚から1円玉が10枚減って10円玉が1枚増えて合計92枚、92枚から1円玉が10枚減って10円玉が1枚増えて合計83枚~」という計算を合計65枚になるまで繰り返して、1円玉が何枚減ったかを確認するのが普通の方法。対して合計の変化に着目して、1円玉が何枚減ったかを復元するのが工夫された方法。
しかしこの手の工夫を普遍的に分類することができるんだろうか。今から疑問だ。