久々のプログラミング
そろそろ尻に火がついてきたので、ロボカップ向けのプログラミングを少々。
C++でコーディングしていると、時に叫びたくなります。ひどいコードを書きなおすのにもっとひどくなるから…えらく時間をかけた割には機能追加はほんの少々でした。毎度のことながらポインタ参照やメモリリークを心配しながらコーディングするのは辛いです。やっぱり向いていない。AIBO相手なので仕方ないのですが。
上記の修正に対応するためのSqueakコードは1行で済みました。場所を探すのに数秒、修正に1秒です。もともと見越していたからではあります。
歯医者
春休み中に終えるはずだったのですが、後から後から不具合が発覚したため、今日も午前中に行ってきました。
「今日、お時間があれば2本やっちゃいましょうか」
「(予定はないな?)ぜひお願いします。」
「では上の前歯と下の奥歯をやります。」
両方とも大きく削って型をとりました。当然前歯も奥歯も仮の歯です。で、ごはんを食べるときに気付きました。
「どこで噛めばいいんだ?」
前歯は抜けたら大変なことになるので全く使えませんし、治療していない側の奥歯で噛もうとすると前歯が干渉してしまいます。無理に噛もうとすると関係ない頬の肉を噛んだりします。結局口中傷だらけにしながら食事を終えました。
あと2週間続くのか~
組み合わせ方法?
19名だったので無事に奇数の場合のやり方で問題なくうまくいきました。
偶数の場合にやろうと思っていた方法は、まず、2列に並んで正面の人と自己紹介しあい、次に片側の人だけ左に移動します。左端ではみ出た人は右側に戻ります。
1周したところで列ごとに別のグループになり、そのグループの人数が偶数なら半分に割って2列になり同様のことを繰り返し、奇数なら奇数の場合のやり方にします。
というのが私の考えた案です。ムダが1回生じますが、説明も実行も簡単に思えました。この案を検証できず残念でした。
自己紹介実施
新入生のためのクラスの初授業があり、昨年度に引き続いて自己紹介をやってもらいました。
1回2分間、正面の人と自己紹介しあい、2分たったら左に移動して別の人と自己紹介するという青木メソッドで、1時間近くかけ大騒ぎになりながら何とか終えました。
私はタイムキーパーの役割の人と話をしながら大学に入った感想やら、この自己紹介方法の感想を聞いてまわりました。ニコニコしながら「良かった友達ができそう」と言ってくれる人もいれば、「面倒くさい、疲れる」とイヤそうな顔をする人もいました。
昨年はかなりうまくいったので今年も期待をしていたのですが、やはり「氷を壊す」のに万能の方法があるわけではなく、人に応じて適切な方法を選択しなければならないという、ごく当然の事を考えさせられました。
今年の学生さんは、文化や習慣や境遇のかなり違う学生さんに見えたので、やりがいもありますが、これから教員としての自分の資質を問われるようなそんな気もする一日でした。
本家の解決案
本家の青木先生も同様の問題に遭遇したそうです。その時の解決策は「自分も中に加わって奇数にする」というものです。これを聞いたときには教育上でもすばらしい解決策に思えたのですが学生からは不評なようです。私が受け持ちの学生にその案を話したところ「(そういうことする先生は)キモい、引く」と即座に一蹴されてしまいました。
ということでそのような「人を足したり引いたりする案」はボツです。
どう解く?青木メソッド(偶数のとき)
最初に述べた昨年から持ち越しの問題とは、参加者が偶数のときに起こる問題です。偶数だと奇数と同じやりかたではうまくいきません。例としてAからJの10名いるとして下のように並んだとします。
ABCDE
FGHIJ
タイムキーパーはEJの人がやってもいいし、時計をみながら進めてもいいでしょう。2分たって以下のように左に移動したとします。
FABCD
GHIJE
こんな風にして左に移動しても5回移動したら、また最初の状態に戻ってしまいます。
ABCDE
FGHIJ
昨年は18人いたので1周してから適当に人を入れ替えたりしてとにかく全員のペアを作ったのですが、途中でもう全員とペアをくんだ人とそうでない人が現れ、その分かなり余計に時間がかかってしまいました。
今年も18人になりそうなので、もう少し効率よくやりたいと思っています。そこでどうすべきか?ということなのです。
18人なので全部の組み合わせとしては18C2=153通りです。一度に9ペアずつ、17回転で終わらせる組み合わせ方を見つけることができるかもしれませんが、実際の人間を動かしますので面倒な移動の仕方では配置を指示するだけで時間がかかってしまうので実用的ではありません。そのため、できるだけわかりやすい移動方法を見つけなければなりません。
一応私なりの案を考えてはみたのですが、エレガントではないし18回転かかって(つまり若干のムダが生じて)しまいます。何かよいやり方はないものでしょうか?
青木メソッド(奇数のとき)
青木メソッドでは、2列になって立ち、2分たったら全員左に移動します。列からはみでたら向かいの列に移ります。参加者が奇数のときは必ず1名はみ出るので、順にはみ出た一人がタイムキーパーを勤めます。
例えば、A~Iの9名いるとしたら下のように向かい合わせに並んで立ち、Iの人がタイムキーパーとなります。
ABCD I
EFGH
2分たったら、全員向かって左に移動するので、下のようになり、Dの人がタイムキーパーになります。
EABC D
FGHI
これで1周すると全員が互いにペアとなって自己紹介しあうことができます。
自己紹介
いよいよ来週から授業が始まります。いろんな雑務に追われて準備どころじゃない状態ですが、昨年から持ち越しの問題をどうしようか悩み中です。
昨年の今頃の記事にも書きましたが、
http://d.hatena.ne.jp/nqthm/20060412/p2
でやった「青木メソッド」を今年もやろうと思っています。これは、クラス全員が次々にペアを変えながら自己紹介をしていくというものです。
自己紹介といえば一人が立って皆が聞くというパターンが多いのですが、これだと最初の方は緊張でうまくはなせないし、後の方は皆が飽きてきてつまらなくなるという問題があります。
そこで、全員が2列で向かい合って目の前にいる人と一定時間自己紹介しあい、時間がきたら隣の人と交代していきます。このメリットは、常に新しい相手なら飽きることはないし、同じ話をしても問題ないし、何より親密度が一気に増します。このおかげか、昨年のクラスは例年にない良い雰囲気で終えることができました。(デメリットとしては話しすぎてえらく疲れるということです)
vmwareでのNT4.0 Serverインストール
debianに引き続いてNT4.0サーバーをvmwareで使えるようにしてみました。
- vmx-Makerというソフトウェアでnt用のvmxファイルを作成。
- このとき、FDDを有効にする、FDDにイメージを割り当てを選び、FDDのイメージをFD.IMGとする。
- Windows NT 4.0 ServerのインストールCDからi386\winnt32 /oxを実行し、インストールフロッピー(3枚)を作成。
- marucopyというソフトウェアで作成した3枚のフロッピーのイメージを抽出。
- 1枚目のフロッピーイメージをFD.IMGとする。
- 先ほどのvmxファイルでvmwareを起動する。
- あとはフロッピーの入れ替え時にタイトルバー上のFloppyをクリックして無効化し、2枚目3枚目のフロッピーイメージをFD.IMGにしてから再度有効化して作業を進めていく。
以上で無事にNT4.0サーバーがインストールされました。
vmx-Maker
http://www.vector.co.jp/soft/winnt/util/se386393.html
MARUCOPY