kagamihogeの日記

kagamihogeの日記です。

剰余とコンピュータサイエンスの面白関係

Permalink を見ると、ここ数日で、整数の下の桁を取得する方法を探してると思しき検索結果からウチの blog がひっかかっている。なるほど今は 5 月。残念ながら宿題の答えはココにはないが、このテの問題は俺も当時苦しんだ思い出があり苦笑してしまった。

ところで。10 進数 の 10 の剰余は下 1 桁とその上位桁を分離するという面白い性質がある。この性質は初等プログラミングを教えるにあたってとても都合が良い、という側面もある。

まず、この単一の性質で多数の問題バリエーションが作れる。整数の桁数算出や各桁の合計の計算、1221 のように数字が対称になっているかの判定、131313 のように数字が一定の規則にあるかの判定、1234 のように各桁の差が 1 かどうかの判定……などなど、色々な応用形がある。一つ教えることで多数の問題が解けるようになる、という性質は問題作成側にとって非常にありがたい。

剰余を使用した問題を試験に出す場合、毎年出す問題に一定の傾向を持たせながらもローテーションを組むことができる。もしくは、似たような問題を大量に課題として出し、解けた問題数に応じて成績をつける、という方法にも使える。

要は、剰余を使用したアレコレは教員にとってとても手頃だということである。

for, if を組み合わせるやり方の練習問題としても中々良い。if, for の使用と切り離せない配列を教えるにあたっての導入としても申し分ない。

もう少し突っ込んだ意図としては、コンピュータを使用した問題解決方式がどのような特徴を持つか? の良い例でもある。コンピュータを使用して何がしかの問題を解く場合、そのヤケクソな計算能力にスポットが当たる。だが、コンピュータを少しばかり工夫して使ってやることで色々な問題がスマートに解けるようになることもまた、コンピュータサイエンスの醍醐味の一つである。0 と 1 をうまーく操ってやることで実に美しく解けてしまう問題はたくさんあるのだ。

そういった問題で頭を悩ますことは、プログラミングを学ぶ一つの道である。最も、この web 全盛時代ではいささか古臭い古典的なやり方ではあるのだが……w


まぁなんつーかアレですよ。大学で古めかしいコンピュータ・サイエンスを 4 年間ミッチリ学んでみる、ってのも悪くないもんですよ?