プログラムの書き方はいろいろ

実現方法

実現したいことは一つでも、
その方法はいくらでもある。
 

プログラムも同じです。
 
 

先日の体験会、
プログラミング経験のある中学生は、
僕の想像しなかった書き方で課題の1を解きました。
 

ちゃんとじゃんけんの動きをしていたので、
それでオッケーです。
 

答えとして用意されているのは、
プログラムの一例です。

その通り書かなくても動けばOK。
 

見比べてみて何が違う理由を考えてみると、
すごく上達します
 
 

考え方

もう一つの例。
 

先日、教室に通う小学生から
『二乗したときにその数で終わる数』を見つけるプログラムを
 作っているので見てほしい」

とメッセージがありました。
 

自己同形数というようです。

英語の説明の方がわかりやすいかも。
Automorphic numbers: m^2 ends with m.
 

例えば、
5の二乗は25。
25は5で終わっているから、5は自己同形数。

同様に、6、25,76も自己同形数になります。
 

どこからこういう課題を見つけてこられたのか。
びっくりします。

これをプログラムで見つけたい。
こういう発想がいいです。
 
 

プログラム

僕の考えたのは、こんなの。

for a in range(10000):
aa = a * a

a_len = len(str(a))
b = 10 ** a_len

if a == aa % b:
print(str(a) + ‘ is Automorphic number!’)

算数的に考えました。
 
 

課題をくれた小学生も
「解けた!」ってプログラムを送ってくれました。

数字を文字列に変換して、末尾の文字を比較したみたい。
 

僕とはぜんぜん違う自己同形数の見つけ方。

目的は同じだけど、全く違うアプローチ。
 

こういうのが面白いところです。