高専プロコンや歯みがきロボコンと、自分の関連するイベントもひとまず終了。 ただ、高専プロコンで課題自由部門の本戦参加ができなかったり、 歯みがきロボコンでもzeroからライントレースを作ったりという、 実践で頼りがいのある学生さんが少ない。
難しいことをああだこうだと指導するよりも、 興味を持って実際にプログラムを書く事が先決だろうと考える。 ゲームを作ってみるのも1つだけど、数値をうまく操る技術がないと、 キャラクターの動きも単調でつまらないはず。 ということで、プログラミングパズルにチャレンジしてもらうのがいいのではないかと考える。問題も極めてシンプルに….
プログラミングパズル
- x*yの計算をするプログラムを作成せよ。
ただし、乗算演算子*や除算演算子/は使わない事。 1000*1000の実行にかかる時間を、他の人のプログラムと比べてみること。 - 上記のプログラムを、for,while,do-while,goto文を使わずに記述せよ。
- 99の階乗(99!)を全ての桁を計算せよ。
ただし、言語付属のBIGNUM系パッケージは使わない事。
99の階乗は、Common Lispであれば、勝手にBIGNUMを使ってくれるので、 → (defun fact(n) (if (= n 0) 1 (* n (fact (- n 1))))) → (fact 99) 933262154439441526816992388562667004907 159682643816214685929638952175999932299 156089414639761565182862536979208272237 582511852109168640000000000000000000000 でも、BIGNUM相当を自分ですらすら書けて、普通のプログラマー。