パーポーフルート公式ブログ
【アルゴリズム】Scratch で覆面算を解いてみる

2022/09/15
テーマ: アルゴリズム / 2022 / すべて


はじめに

小学生がやるというこんな覆面算を見かけたので、手動で解いたついでに小学校で必修となったプログラミング教育でよく使われる Scratch で解いてみました。

ツイートは消えるかもしれないので問題を引用しておくとこんな感じです。

 柿🍓
 🍓🍓
+柿🍓
ーーー
192

完成物

覆面算を解く Scratch プロジェクト

スマホでも PC でも試せます。

緑の旗を押すと猫が計算を始めて、そのうち答えを見つけて止まります。

解説

考え方

りんごと柿はそれぞれ 0〜9 のどれかなので、全部の組み合わせを試してもたったの 100 通りです。

(柿はトマト説もあるようですがどっちなんすかね)

コンピュータにとって簡単な式を 100 回計算するのは楽勝なので、全通り計算して答えが 192 になったら解けた、という方針で書いてみます。

試すべき式は問題より

13 * いちご + 20 * かき = 192

です。

10 の位にはいちごが 1 個、1 の位にはいちごが 3 個なので 13 * いちご

10 の位には柿が 2 個、1 の位には柿が0個なので 20 * 柿

という感じです。

スクリプトの解説

変数「いちご」と「かき」を用意して、0 に初期化して 1 ずつ増やすのを 10 回繰り返すループを作ります。

かきのループの中にいちごのループを入れることで、かきといちごの組み合わせを 100 通り試すことができます。

試した結果が 192 なら答えを言って停止、そうでなければ試した組み合わせを 0.1 秒間言ってから次の組み合わせを試します。

感想

今回 Scratch を初めて使ってみましたが、部品をポチポチ配置していくだけでなんか動くものができるので小学生でも入りやすそう。

パラメータの個数がブロックごとに決まっていたり、条件と文のブロックの形が違って変にくっつけられないようになっているのでコンパイルエラーになりえないのがいいですね。

普通の言語だと、コードを書いてコンパイルエラーが出て直し方が分からなくてやる気がなくなる人も多いじゃろう。

? 秒待つという数字を入れる部分に文字を入れたら 0 とみなされてとりあえず続行したので、ランタイムエラーも基本起きないようになっているようです。

ということで Scratch よくできてる。


2022/09/15
テーマ: アルゴリズム / 2022 / すべて