老後の趣味、余生のタノしみにと思ってはじめたCGIとPERLだが、どうも役に立つものとか、意義のありそうなものを作ったりするという実力と意欲にかけることがわかった。しかたがないので役に立たないものとか、つまらんものを作ることにする。というわけで意志決定支援プログラム(ソースはこちら[isi.txt])である。同趣向のものをあちらこちらで見た覚えがあるので誰しも一度は思いつくものなのだろう。
さてご神託であるけれど、概ねこういうのはコインを投げるとか、筮竹をひとつかみとるとか、カードをシャッフルするとか適当な乱数で頂けばいいわけだが、ここは一つ、time関数で貰うことにした。この関数は1970年1月1日以来の秒数が返ってくる。たまたまプログラムを実行した時刻がご神託そのものというわけである。よってシステム全体のレスポンス、システム時計の誤差等々を計算にいれ、タイミングを過たず実行するならば思いどおりの神託を得ることも不可能ではない。
$i = time;
つづいてはご神託の解釈である。まずは第一の賢人『そくら』の「おことば」はこの時刻を2で割った剰余で決定する。
$socra = $i % 2;
筮竹など陰陽系の八卦見では奇数を「陽」、偶数を「陰」とみるわけだが、西洋かぶれの『そくら』くんはこれに反し割りきれることをもって良しとする。
if($socra == 0){ $socra = "よいよお"; }else{ $socra = "ダメーッ"; }
つぎには賢人『がうた』の答であるが、彼にはさきほどの時刻を2で割ったものを与える。
$i = $i / 2;
これでは小数点以下6桁まで計算されてしまうのがPERLのデフォルトの動きなのであまりよくはなさそうであるが、
$gauta = $i % 2;
として剰余を出させたら、小数点以下は無視されてしまったので見て見ぬふりを極めこむこととする。がうたの判定基準もそくら同様である。
if($gauta == 0){ $gauta = "よいよお"; }else{ $gauta = "ダメーッ"; }
最後は『孔さん』であるがやっぱりこれも同じである。
$i = $i / 2; $kokyu = $i % 2; if($kokyu == 0){ $kokyu = "よいよお"; }else{ $kokyu = "ダメーッ"; }
あとはCGIで相談案件を読みとって、変数 $_ に入れた後、表示し、案件なしならお引き取りを願う。
if ($_ eq ""){ print "<strong>さあて、用件がないなら、帰った、帰った。</strong><br>"; }else{ print "ご相談の件<br>"; print "<hr>"; print $_,"<br>"; print<br>;
案件があれば三賢人の「おことば」をそれぞれ表示する。
print '<span style=" font-size:x-large ; color:#000099">そくら「', $socra ,"」</span>" ; print '<span style=" font-size:x-large ; color:#009900">がうた 「', $gauta,"」</span>" ; print '<span style=" font-size:x-large ; color:#990000">孔さん 「', $kokyu,"」</span>" ;
ついでに案件と結果、日時を記録して判例とする。以上である。
$time = localtime ; open(LOG,">>isi.log"); print LOG $_,"\t そくら",$socra,"\t がうた",$gauta,"\t 孔さん",$kokyu,"\t",$time ; close(LOG);
これといって目新しいものは何もないが三賢人の合議制度をとったという点が柔道の旗判定か某アニメ風である。これで使い道が広がるだろう。すなわち、多数決制として使用するか全員一致制度をとるか、はたまたあとの二人には目もくれずご贔屓の一人の判断だけ聞くか。 どの方式も一長一短で捨て難く、また極め難い。ついつい迷ってしまうがそんなときにこそこのシステムの出番である。このシステムに順次動議を諮ればよい。そのさいの決定方式であるが、これがまた極めがたい。そんなときにこそこのシステムの出番である。(フリダシに戻る。)
2001/08/28