アイスクリームのスプーンがなかった事件からいろいろ考えてみた
スプーン事件【謎】について、すのものさんが考察してコメントを書いてくださったので、さらに考えてみた。
> 最初にスプーンがなくなった時点で客が言えばそういう事態は起こりえない
スプーンを手にできなかった最初の客は100%に近い確率で「スプーンくれ」というと思うので、ここで「客」というのは最後のスプーンを使った客のことだと思うのですが、前回書かなかった特殊事情を追記しておきます。実はこの回転寿司は、インターホンを使って注文するシステムになっていて、
1. インターホンを押す
2. しばらくすると店員から「ご注文は」という返信がインターホンから流れる
3. 4皿分、インターホンを通じて注文する
こんな感じ。注文したものは回転寿司ですから皿が流れてくるわけで、その間に対人的な直接コミュニケーションがありません。目の前にカウンターがあって寿司職人が握っていたら「スプーンないよ」と気軽に言えそうだけど、インターホンのボタンを押して「スプーンがないでつ」と言うのは、少し閾値が高い行動といえそうです。
マナーとか礼儀作法として、最後にスプーン使った人が何かリアクションすべきなのか、というのは議論のネタになりそうですが、IT系人間の視点から考えると、スプーンに RFID タグ付けておいて全スプーンの現在位置を把握するとか、スプーン入れにセンサーを付けておいて、スプーンが空になったら何か警告ランプを点灯させるとか、そっち系の工夫が欲しい。
> 「私の分で最後です」と教えて
関係なさそうだけど、Java でこんなの。
List list = null;
while (iterator.hasNext()) {
Object hoge = getHoge(iterator.next());
if (hoge != null) {
if (list == null) {
list = new ArrayList();
}
list.add(hoge);
}
}
C だと malloc とかだけど、要するに最初のナニが出現するまで new とか malloc しない、というか先延ばしにしておく、というような手法がありますが、何となくそういうのを思い出したです。「ないよ」という所で初めて補充する感じ? 「私で最後です」でスプーンを補充するというのは先に補充しておくわけですが、その後に誰もスプーンを使わないと補充したことが無駄になってしまう。しかし逆に、先延ばししたために、毎回 if (list == null) なんてチェックが必要になってしまう方が無駄、という見方もありますが。
スプーンの場合は次に誰か使う確率が非常に高いから、先に補充した方がいい。さっきの Java は微妙というかケースバイケース。null が非常に多い場合はこのままの方がいい。
| 固定リンク

コメント
> スプーンを手にできなかった最初の客は100%に近い確率で「スプーンくれ」というと思うので、ここで「客」というのは最後のスプーンを使った客のことだと思うのですが、
私は、手にできなかった最初の客のつもりでした。
回転寿司だったんですか。ってことは、アイスクリームはここでは特殊なメニューですよね。匙もつけて流してくるべきでは。割り箸は客にとらせるのでいいと思うけど、特殊なメニューだけで必要になるものほど、切れていることを見落としやすいと思います。
DOS 上のエディタで 64KB を越えるテキストをスクロールさせると途中でディスクスワップするのがありましたよね。あれって、自分が読みたいところでスワップしてくれたらその間に読めていいのに、早く先へ行ってくれと思うところでスワップしていらいらすることが多かったような。
投稿: すのもの | 2006.07.11 02:16