2012年2月4日

書きかけの話はさておき、雑記

ちかごろ、読書メータ に読書記録をつけ、ついでに呟きと称するユーザの交流の場所にも、すきなことを書いている。

今日は読書メータ用の twitter account に反映された これ読んだよ 記録が、newspaper の単語検索サービスから妙なひとに拡散されてしまい、暇でもないのに調べてしまった。

妙な人と書いた twitter user のブログがこれ。どうやらカルト教団側から、日常一般の社会に迫害されていると訴えることを使命にしておられるようだ。スピリチュアルと称する文化についての書籍に言及して、単語で拾われるなどはなんとも業腹なはなし。

反カルト教とでもいうべき偏狭な(私の認識では、偏狭とカルトは同義語だ) 集団もあるし、実際に起きた事件をもとに、たがいに不備をつつき批難を応酬すればばきりはない。

洗脳ほどきを頼んだら、施術者の愛人にされたなどという記事が今日の時点のブログの最新記事だったが、洗脳ほどきの患者と施術者が恋に落ちるなんてよくあること。(信頼がないと、洗脳ほどきなんてできない)。恋人の親にきちんと話を通さないのは脇が甘いが、誰の視点が正しくて誰が批難に値するかなんて、誰に判断のつこうはずもない。

まんま君の所属する「ほぼ日」のゲストにさせてみたい、稀有な人材ではあるが…… マイナー擁護派として「間違ってもこうなっちゃいけない」て他山の石でもある

2012年1月24日

毎年一月の新月の夜に (未了)

関西から先ほど帰ってきた。静岡で線路になにやら転がっていて、片付けに手間どってダイヤが乱れたとかで銭湯にも間に合わない。倒木ならば倒木と言いそうなもので、なにが転がっていたのか言われなければ、死体か、屍体に見立てた人形じゃないかと思ってしまう。

一昨日は京都四条から大原まで六時間歩いた。星が綺麗だった。考えてみればこの三年、毎年新月になると山道か船上で星空を見上げている。(以下書き足す予定)

2012年1月19日

身辺雑記 1月19日

年末に注文していた、タロットの本が届いた。

執着としてではなく、暴力の一種として、ストークとか偽被ストーク症候群だとかをとらえられないか。 ……文章に表現すると紛らわしいな。本人の愛情が相手に迷惑だというはなしではなく。

DV の被害者だった結果「愛情は相手に暴力を与えることでしか示せない」タイプのひとが、暴力の一つとして、ストークなり、ストークされたと言い立て社会的制裁を求めるなりといった心が働いていないかと思って英語 Web 文献をうろちょろしているときにみつけたのだよな。

愛情のはなし、霊障と民間療法と新興宗教崩れのはなし、売春とうらないの関係、いろいろ資料ためて、考えてあって、書きたいことはあるけれど。

想定していた読者がいなくなって、書く気合が薄れているのが正直なところ。

読者がいる前から書いていたのにね。


火曜日に精神が元気になったが、枷が外れても弱った体力は戻ってこない。体がついてこないってことを実感している。

2012年1月7日

随想の断片  (自由と責任)

実在か心の中のイメージかを問わず
「自由には責任が伴う」と言い立てる相手がいる間は自由ではない。
暗黙に『だから私に支配されなさい』と脅かされ、いつ支配されるかわからないと感じているのだから。

そんな相手が一人もいないことを入念に、丹念に確認したあとに心にこみ上げる歓び、それが責任だ。
罪でも枷でもなく。

……て断片があって、前後に文章を補い、偉そうな口調も排してわかりやすく推敲したいのだが、

いままさに開放感/責任/自由を気づいたところで、過去になくリラックスして眠い。

考えてみたら、ここ三日、四時間ずつしか寝てないや。

自由と責任が一体で歓びと聞くと意外だが、獣が育児のために動くのを歓びと感じるのと同じ程度のセットといまは思える。
だから人が自由を求めるのも本能なのだろうね。

おやすみなさい。

2011年12月30日

本物、贋物

人の評価はむつかしい。

わたし如きに見透かされるようでは贋物、というのは判る。

わたし自身のことはわからない。
 本物と思ったことも、
 言明したおぼえもない。
原理的に、わからないのは自明だから、
ふだんは一々断らないけどね。

わたしと同じ方向を目指す人は、多分わかってる。
その格はわからない。
古来より、同格と思えるような相手は、自分より二枚も三枚も上手(うわて)と言われるし、
きっとそれは正しいから。

本物でも贋物でも、
瞭らかに自分より格上の相手もいて、
その真贋はわからない。

2011年12月27日

夜の夢こそまこと

「先週月曜19日から、今日火曜27日まで色々のことが起きたな」と
思いながら図書館から戻り、寒くて毛布にくるまると眠っていた。

夢をみた。
ハードボイルド小説のような、依頼者が降りても自衛や感情で動く探偵として、バーのカウンタにいた。
神聖な樹を守るとか倒すとか、そんな事柄でいま事件の渦中であり敵がいて、その樹の影響で敵のここまでの経緯を追体験していた。
敵の立場からみたときには自分のこれまでの行動も筋が通らないとしり、敵もまた自覚はしつつやむにやまれぬ経緯で筋の通らないことをしてきたと感情も思考も追体験して。
樹の影響によるSFじみた体験から、精神をバーの身体に戻そうとする夢の中の「私」、夢の思考から目覚めようとしている現実のわたし。どちらも同じくただひとつの思い「敵も自分も互いに矛盾しているのだから飲み込んで講和できるはずだ」という意志だけを持ちかえるために懸命に考えて、追体験の思い出の個々の細部は忘れながらも戻って。

毛布にくるまっている自分のからだを見つけた時には、それでもやはりロジックでは許すことはできないことを発見していた。

「清濁併せ飲む」か。
夢の中の、さらに夢のようなできごとの内では正しいことが、日常の自分の筋・ロジックでは選べない行為であることを実感したとき。
江戸川乱歩の愛した「夜の夢こそまこと」という言葉が身に沁みた。

夜も遅いが、今日も乱歩を愛する人の集うバーにでも行くかね、リツイートもしたしな。

2011年11月30日

XX君は神話が嫌い

承前

探し物があって、散らかった部屋をさらにひっくり返しているうちに、XX君は神話が嫌い てフレーズが頭を離れなくなった。

じっさいは XX君 ではなく私の名前 なかがわ君 だし、べつに本名を隠したこともないのだが。題名に書くのもなんだか目立ちすぎな気がする。かといって 私は神話がきらいだ と一人称で正面から切り込むのでなく、少し醒めた感じに気がついちゃったというニュアンスなので、これもまた致し方ない。

読みかけの本より

昨日から読み始めている 現代霊性論 という本がきっかけだ。

春の震災のあとの twitter で内田樹氏の名前に馴染んでいなかったら、書店でアヤシゲな新宗教のコーナーに並んでいたこの本 を手に取ることはなかっただろう。宗教や都市伝説の対象について、実体として存在の有無を措き、人の心を左右する噂・力学として把握し認識した対談は読み応えのある本だ。

三章 : シャーマン、霊能者、カウンセラー ーー民慣宗教者のお仕事 より、ある歯医者について内田氏の語ったはなし。

そこに行ってすぐに、mこの人は名医だ って思いました。

それまで、どんな歯医者に行っても、まず僕を叱るんです。ブラッシングが足りない、食生活が悪い (略)

要するに 歯を悪くする邪悪な霊 みたいなものを想定して、僕がその無辜なる被害者で、E阪先生と二人で悪と闘うっていう、そういう物語に巻き込んでしまうんです。

p.77 より


先日からあちこちで 日本のスピ文化は嫌いだ と言っている。

また、親しくしたつもりの友人の何人かに、唐突に見放され、敵視されることが近年続いている。

そこに結びついて腑に落ちた気がした。


もちろん私は民俗学・昔話・神話が好きだ。人の心がどう動いてしまうものかと、教訓を得るつもりもあって読んでいるし、純粋に楽しい。

ユングの有名な台詞に 人はみな、自分の人生の物語/神話を見つけていくものだ というものがあり、私もそうだろうと思う。

だが、悪役を探す手伝いができないのだよね。

悪役を押し付けるのは嫌いだ。

娘に世界史のはなしをしていて、ナチス・ドイツはなぜ高い得票率を得たか、それは良くないかという説明をした。あいつらユダヤ人が悪い、あいつらさえいなくなれば国は良くなる として、少数派 = ユダヤ人以外の票を集めたのだと。

外部に敵を作り、そこに悪を投影するのをカルトという。

私は人の心を安らがせる物語はつくれない。

その苦しみのもとも、自分のなかにあって受け入れるものだ、という言い方をする。

そして相手によっては苦しみの素、 の化身として弾劾されるわけだ。そのほうがマシ。

外に仮想敵をおいて 自分は味方だ と言い募るくらいなら、悪役を引き受けるほうがまだ、その善悪の神話においては納得がいく。

善悪二元の神話は嫌いだ。そう考えがちな、克服すべき対象として興味深いが、自分にも許さない。ひとにも認めない。

2011年11月17日

ぼくのミステリな非日常

自分が管理人でもない mixi のコミュニティで、商売の広告をしてはいけない。許してはいけない。乗ってはいけない ……はずなんだが。前日にタロットのコミュニティで見つけた広告にはふらふらと惹かれてしまった。

耽美系モノトーン画家、江戸川乱歩の諸作品をタロットに見立てて22枚の画を発表

限定18部のみ、デッキの形で頒布。2千円。

会場は新宿ゴールデン街、その名も 幻影城

親子二代に渡ってのミステリと幻想小説フリーク。六歳で少年探偵団を全巻読み終え、七歳から十一歳まで、まだ日本語の書籍の買える場所が少なかったフランスで、父が本棚から貸してくれたのはハトロン紙に包まれた江戸川乱歩全種が一番はじめ。(そのほかエラリー・クイーン, 横溝正史 , アイザックアイモフ がもっとも多く。当時珍しかったブラックウッドもサキも )。

オカルトとしてのタロットカードに出会ったのは十一歳 (1979年) 、最初に本格に学んだのは十二歳~十六歳。そこに並行して中井英夫も竹本健治も読んでいたし、十八歳で親元を離れてからはそちらの小説趣味のほうがメインだったのだから、こらごめん。ファン度が違う。

そんなこんなで。限定十八部の残り五部から #16 を入手してきました。幻影城・城主、明神さんのお酌でお酒飲んできました。

すみません、耽美としての乱歩が題材ならばミーハーにもなります。今日はオカルトを確率や心理学からまじめに考察するタロットの中川じゃありませんでした。

明神さんパイプ喫煙者で、営業中なのにつきあってくれるし。オカルト・幻視方面で夏に を買ってから、知り合い何人かの視覚と同じだと伊藤三巳華、立原透耶、加門七海(←エセイ限定。デビュー当時の伝奇小説は読んでいたのが、まさか……) 諸氏の作品を読み出した、そのあちこちでお世話になっている , ビーケーワン の仕掛け人東さん がカウンタの奥に座っているし。やー。うきうきしてました。

  • 0 : 地獄の道化師
  • 1 : 魔術師
  • 2 : 妖蟲
  • 3 : 黒蜥蜴 (ネタバレ ? )
  • 4 : 恐怖王
  • 5 : 目羅博士
  • 6 : 人でなしの恋
  • 7 : 芋蟲
  • 8 : 心理試験 (マルセイユ採番)
  • 9 : 人間椅子
  • 10 : ペテン師と空気男
  • 11 : 人間豹 (マルセイユ採番)
  • 12 : 十字路
  • 13 : 白髪鬼
  • 14 : 陰獣
  • 15 : 蜘蛛男
  • 16 : 幽霊塔
  • 17 : 暗黒星
  • 18 : 月と手袋
  • 19 : 黄金仮面
  • 20 : 大暗室
  • 21 : パノラマ島奇譚

2011年11月16日

Android ← USB → FreeBSD

Android 携帯 IS03 の SD カードを取り外さずに、ケーブル経由で FreeBSD 8.2-STABLE のマシンからマウントすることができた。

前に kernel をコンパイルし直して、umass が使えるようにはしていた。だがそれだけだと /var/log/messages の表示は以下のようであり、マウントにエラーが出る

Nov 16 13:35:25 bouon-an kernel: ugen7.2: <SHARP Corporation> at usbus7
Nov 16 13:35:25 bouon-an kernel: umass0: <au IS03 SD Storage> on usbus7
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
Nov 16 13:35:25 bouon-an kernel: da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Nov 16 13:35:25 bouon-an kernel: da0: <SHARP au IS03 microSD 2.31> Removable Direct Access SCSI-0 device 
Nov 16 13:35:25 bouon-an kernel: da0: 40.000MB/s transfers
Nov 16 13:35:25 bouon-an kernel: da0: Attempt to query device size failed: NOT READY, Medium not present
-------------------------
Nov 16 13:36:53 bouon-an sudo:   yaemon : TTY=pts/2 ; PWD=/home/yaemon/music/chanson ; USER=root ; COMMAND=/sbin/mount /dev/da0 /mnt/note/
Nov 16 13:36:53 bouon-an kernel: GEOM: da0: partition 1 does not start on a track boundary.
Nov 16 13:36:53 bouon-an kernel: GEOM: da0: partition 1 does not end on a track boundary.

au IS03 てトライした初期のころに FreeBSD のカーネル・ソースいじって書き足したような…… 記憶はあるのだが。どこに足したのだったか。最新ソースに同期してパッチは充てていないから、いまは本家でも入れているのかもしれない。

私のデスクトップの名前は、bouon-an.nakagawa.local


man umass をみて、次のようにして成功した。

Nov 16 13:38:39 bouon-an sudo:   yaemon : TTY=pts/3 ; PWD=/home/yaemon ; USER=root ; COMMAND=/sbin/camcontrol rescan 0:0:0
Nov 16 13:39:44 bouon-an sudo:   yaemon : TTY=pts/3 ; PWD=/home/yaemon ; USER=root ; COMMAND=/sbin/mount -t msdosfs /dev/da0s1 /mnt/note

日本語ファイル名

バックアップをとろうとすると、ls でも cp でも、そのほか何をやってもコマンドが受け付けないファイルが存在する。

まずは $> sudo kldload msdosfs_iconv あかん。

2枚ある SD カードの、使っていないほうを ufs , ext2 , ext3 でそれぞれフォーマットしてみたが電話機から mount できない。

MSDOS FS ならばということで、この検索結果 から 昔のメールアーカイヴ を発見して、/etc/fstab に以下の行を追加して妥協。

/dev/da0s1  /mnt/phone msdosfs rw,noauto,-u=yaemon,-g=wheel,-L=ja_JP.eucJP,-D=CP932 0 0

ls | nkf -w とか面倒くさいし、PC から日本語ファイル名のまま cp できないのも鬱陶しいが。それ以上の手間をかけるのも不合理というものだ。

悪役がほしいのはわかる

twitter のタイムラインに、こんなアジテートが流れてきた。

福島に残る人…戻る人…福島から避難する人…同じ土地に暮らしていたのに、原発事故から意識や見解の違いで、福島県民同士が助け合うことが難しくなっている…。家族や夫婦間に亀裂が生じている人たちもいる。原発事故は放射能を撒き散らして生命を脅かすだけでなく、人と人の繋がりを引き裂いている。

引用元

地震で離散した町ならば、住みつづけることを選んだ人と逃げる人の不和は本人たちの問題とみなされることが多いだろう。

戦争が原因ならば戦争が悪いとみなす人がいて、原発事故ならば原発が悪いとみなす人がいる。原発事故で原発が悪いなら、戦争で悪いのは国家という制度になるだろう。

私だって悲劇の当事者ならば、きっかけになった事件やその原因に罪をかぶせて自分は悪くないと一度は思うかもしれない。それはわかる。

巻き込まれちゃいけないよ。巻き込まれて、さらに他人まで巻き込もうと目論んじゃいけないよ。

2011年9月14日

白露巳の日、鎌倉銭洗い弁天に訪れる / 9月14日 , 11月6日 記載

今日は、飼っている猫が望むので闘猫に出したら、なぶり殺し寸前の目にあって帰ってきた夢をみた。

対戦相手の猫に教えられたダンボール箱の中から救いだし。まだ息があった。こんなに黒くて小さい猫だったかと思いながら心臓のあたりをマッサージしつつ、もう片手で獣医を探ししているシーンで目が覚めた。

妙な夢だ。


週末の話を書く。

金曜日の夜から、麻雀で天和の起きる確率をコンピュータに計算させはじめたら寝食と排泄を忘れた。

夕方には気持ちが悪くなった。昔は仕事でもよくあったことだし、昔なら注意して集中しないようにするようにしていたのだが、久しぶりで警戒を忘れていた。

気絶するように眠ったのは、夜も更けてから。二連続の気絶するような入眠だった。


起きたら7時。

先月末29日に、陽灼けの皮を剥くように全身の皮を自分で剥く夢をみた。たしか mixi の voice にはこう書いた。

ひと皮を剥ぐ (「もっけ」)とかひと肌脱ぐ(「戯言/ネコソギラジカル」) て感じの夢をみたが、人皮を脱ぎ捨ててもやっぱり人だろう

連想して蛇にちなんだ伝承をひょっこり調べた。

宇賀神という神様の言い伝えが一部にあるそうな。

古事記にある食べ物関係の神様が似た名前なので上書きされ、さらに蛇と水の神様ということで弁天と混同されて説話も石像もほとんど残っていないが。銭洗い弁天の名で有名な鎌倉の神社にみることができるという。

白露巳の日にお祭りがあるらしい。

白露というのは二十四季のひとつで秋。調べると今年は9月8日からの15日。

暦を計算することができるページも探しだし、そのあとの巳の日は10日日曜日と判明。

せっかくだから、見にいくならばその日だと決めていた。

とくに夢と神様を結びつけはしない。だが、夢をみるような古い心の動きは、昔からいろいろの人が体験してなにかを残しているものだとは思っている。

だが、神社のサイトにも鎌倉の観光案内にも、きちんと9月10日と書いてあるものはなく賭けになるという思いもあった。

それゆえスケジュールにメモはしていたが、あくまで備忘。確定させてもいなかったが、行こうという気になった。

どうしようかと迷っていたのを、朝起きて行く気になっていたなんて体験は、去年の3月以来だ。


小田急で経堂から藤沢に向かい、窓の外を見ながら考えた。

今年になってから、信仰に近い思い入れを込めて神社巡りを好む友人が幾人かできた。だが私は信仰深いとも思っていない。神社が好きというほどのものもない。この確たる目的も探し物もなく「行ってみよう」という気持ちはなんなのだろう。

結論は出ない。楽しいから行くとか、これを勉強したいから行くというわかりやすい動機がなくても行動して良いのだろう。動機を自分で納得できなくとも動いて良いのだろうし、めったにないことだから素直になることにしよう。


藤沢から JR に乗り換え、大船で乗り換えて鎌倉へ。

駅のホームから大きな石像がみえると、存在を忘れていたらまぁぎょっとする。

乱歩の怪人二十面相、ほかにもひとつ、ふたつ。大船観音の中をくりぬいて悪党がアジトにするという設定の小説があったな。

街を見下ろしている感じの大きな石像、悪党のアジトにして最後は壊れるという空想くらいしか使いみちもないだろう、当然という気がした。それくらいぎょっとする。


と、ここまで書いたところで一度中断。先週の木曜日からいきなり忙しくなった。(14日9時5分)

以下、11月6日未明に補足

鎌倉の駅を降りたところで驟雨。ある本には 水神のところに行くのに雨が降るのは、神様と会えるということと昔から言われる とあったな。

もっとも私は、寺社仏閣に訪れたくなるようなときは、低気圧で心がそっちに向くのだろうと理解しているので、これはまぁ余談。コンビニで傘を買い求めて歩き出す。


民家の中をとおり、丘を上がりかけた途中に洞穴があり、その向こうが宇賀神・銭洗弁天。境内を歩き回るうちに、あと30分でお祭りと奉納神楽があるというアナウンスが流れた。

境内に舞台があり、その前に長椅子が何列か置いてある。だが、私はわきの茶店にこしを落ち着けた。

……なんだろうね。

奉納神楽そのものを観るより、わきで人のざわめく気配を肌で感じる方が好きだと気づく。友人や恋人も、そんなひねった嗜好の持ち主ばかり選ぶくせに、自分が企画して人を連れていくと、つい神楽そのものを観せたいと椅子に座ってしまう。それでは、ロクなことにならないよな。

しばらくして席を立ち、茶店で手に入れた観光地図を頼りに、南鎌倉の駅に向けてハイキング道を登った。俯瞰して人の流れをみるのも素晴らしい。

遠景

帰りの電車から、雲がジェットコースタの軌道のように、360°の円環を描き、出発点よりずれたところで下の大きな雲に合流しているのをみた。

ちかごろ雲の流れをみるのがおもしろい。電車の中での読書が、もったいなくて進まない。

それは私の視覚が。いや、視覚の処理をして得る情報が、鮮明に三次元になってきたせいだ。

はじめは何事が起きたのかと思った。正直疲れる。だが、疲れ以上に美しさを感じるので、やめられない。

2011年9月10日

麻雀の確率 ( vol.2 天和の確率が定説と違う )

前の記事 を書き終わった瞬間、通常の麻雀の天和の確率もそれほど面倒くさくないと思えた。しかしデバッグしながらプログラムを書いたら、それでも半日かかった。

最初の6時間で書いたプログラムでは、およそ2千万回に一度という数字が出た。ここで定説を調べる。33万回に一回と言われているようだ。む、おかしい。別の数字が出るのは期待していたが、定説より頻繁に出るという予想をしていたのに。  ……清一以外の面子手は、3面子1雀頭で牌姿を出すという大ポカをしていた。道理で両盃口チェックがほとんど必要なかったわけだ。

ほとんど作り直して、やはり5時間経過。


牌姿は1412万6636 通り。大雑把に24万回に一回という答が出た。母数が4.25×10の18乗、和了形はそのうち1.74×10の13乗。

(七対子・国士を考慮に入れないときの牌姿は875万4027通り、出現率はだいたい27万回に一回だ)

このプログラムは私の貧弱な環境でも2秒足らずで計算ができた。

#!/usr/bin/env perl
#
#   OneColor.pm      2011-09-10 yaemon
#
package MahjongCalc::OneColor;
use strict;
use warnings;
use Carp;
use Exporter;
use vars qw( @ISA @EXPORT_OK );
@ISA = qw( Exporter);
@EXPORT_OK = qw( pairs  paishi cases );
# 面子の数 , 雀頭の有無をもらい数を返す外部インタフェイス sub pairs( $$ ); sub paishi( $$ ); sub cases( $$ );
sub _init; # 牌姿の配列から計算した値を返す内部関数 sub _cases( @ );
# 牌姿を作成する内部関数 sub _calc( $$ ); sub addMentz( $ ); sub addHead( $ ); sub pai2str( $ ); sub merge( $$ );
# static な変数 my $cache; my @mentz; my @head;
sub new() { my $self = bless {} , shift; return $self; }
sub _init() { if ( exists( $cache->{ 'init' } ) ) { return; } $cache->{ 'init' }=1; push @mentz , [ 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 3 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 ]; push @mentz , [ 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 ];
push @head , [ 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 ]; return; }
sub pairs( $$ ) { if ( ! exists( $cache->{ 'init' } ) ) { _init(); } my $MentzNum = shift; my $WantHead = shift;
if ( ! exists( $cache->{ $MentzNum }->{ $WantHead } ) ) { _calc ( $MentzNum , $WantHead ); } return $cache->{ $MentzNum }->{ $WantHead }->{ 'pairs' }; }
sub paishi( $$ ) { if ( ! exists( $cache->{ 'init' } ) ) { _init(); } my $MentzNum = shift; my $WantHead = shift;
if ( ! exists( $cache->{ $MentzNum }->{ $WantHead } ) ) { _calc ( $MentzNum , $WantHead ); } return $cache->{ $MentzNum }->{ $WantHead }->{ 'paishi' }; }
sub cases( $$ ) { if ( ! exists( $cache->{ 'init' } ) ) { _init(); } my $MentzNum = shift; my $WantHead = shift;
if ( ! exists( $cache->{ $MentzNum }->{ $WantHead } ) ) { _calc ( $MentzNum , $WantHead ); } return $cache->{ $MentzNum }->{ $WantHead }->{ 'cases' }; }
sub _calc( $$ ) { my $wantMentz = shift; my $wantHead = shift; if ( exists( $cache->{ $wantMentz }->{ $wantHead } ) ) { return; }
my $paiHash = getPaishi( $wantMentz , $wantHead );
if ( $wantMentz % 2 ) { $cache->{ $wantMentz }->{ $wantHead }->{ 'pairs' } = 0; } else { $cache->{ $wantMentz }->{ $wantHead }->{ 'pairs' } = scalar( grep( /^[02]+$/ , keys( %$paiHash ) ) ); } $cache->{ $wantMentz }->{ $wantHead }->{ 'paishi'} = scalar( keys( %$paiHash ) ); $cache->{ $wantMentz }->{ $wantHead }->{ 'cases' } = _cases( values( %$paiHash )); return; }
sub getPaishi( $$ ) { my $wantMentz = shift; my $wantHead = shift; my %answer = ( "000000000" => [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ); for ( ; $wantMentz > 0 ; $wantMentz-- ) { %answer = addMentz( \%answer ); } if ( $wantHead ) { %answer = addHead( \%answer ); }
return ( \%answer ); }
sub _cases( @ ) { my $ret = 0; foreach my $paishi ( @_ ) { my $this = 1; foreach my $num ( @$paishi ) { if( $num == 4 || $num == 0 ) { next; } elsif ( $num == 1 || $num == 3 ) { $this *= 4; } elsif ( $num == 2 ) { $this *= 6; } else { die( "num = $num" ); } } $ret += $this; } return $ret; }
sub addMentz( $ ) { my $src = shift; my %ret;
foreach my $paishi ( values( %$src ) ) { for ( my $i = 0 ; $i < @mentz ; $i++ ) { my $new = merge( $paishi , $mentz[ $i ] ); if ( $new ) { my $str = pai2str( $new ); if( ! exists( $ret{ $str } ) ) { $ret{ $str } = $new; } } } } return %ret; }
sub addHead( $ ) { my $src = shift; my %ret;
foreach my $paishi ( values( %$src ) ) { for ( my $i = 0 ; $i < @head; $i++ ) { my $new = merge( $paishi , $head[ $i ] ); if ( $new ) { my $str = pai2str( $new ); if( ! exists( $ret{ $str } ) ) { $ret{ $str } = $new; } } } } return %ret; }
sub pai2str( $ ) { my $src = shift; my $ret = ""; for ( my $i = 0 ; $i < @$src ; $i++ ) { $ret .= $$src[$i]; } return $ret; }
sub merge( $$ ) { my $a = shift; my $b = shift; my @ret; for( my $i = 0 ; $i < 9 ; $i++ ) { my $tmp = $$a[$i] + $$b[$i]; if ( $tmp > 4 ) { return undef; } $ret[$i] = $tmp; } return \@ret; } 1;
#!/usr/bin/env perl
#
#   Tenho.pl      2011-09-10 yaemon
#
use strict;
use warnings;
use bignum;
use lib( "../lib" ); use MahjongCalc::OneColor qw( pairs paishi cases);
# 和了形一覧 # 4面子 1雀頭 # 清一 # 一色で4面子 , 残り25種のどこかで雀頭 # 一色で3面子1雀頭 , 別の一色で1面子 # 一色で3面子1雀頭 , 字牌が1刻子 # 一色で3面子 , 別の一色で1面子1雀頭 # 一色で3面子 , 別の一色で1面子, 残り16種のどこかで雀頭 # 一色で3面子 , 字牌で刻子1,雀頭1 # 一色で2面子1雀頭 , 別の一色で2面子 # 一色で2面子1雀頭 , 別の二色で各1面子 # 一色で2面子1雀頭 , 別の一色で1面子 , 字牌刻子1 # 一色で2面子1雀頭 , 字牌刻子2 # 一色で2面子 , 別の一色で2面子, 残り16種のどこかで雀頭 # 一色で2面子 , 別の一色で1面子1雀頭, みっつめの色で1順子 # 一色で2面子 , 別の一色で1面子1雀頭, 残り16種のどこかに1刻子 # 一色で1面子1雀頭 , 別の二色で1面子ずつ , 字牌刻子 # 一色で1面子1雀頭 , 別の一色で1面子 , 字牌2刻子 # 一色で1面子1雀頭 , 字牌時3刻子 # 三色で1面子ずつ , 字牌で雀頭 # 二色で1面子ずつ , 字牌2刻子1対子 # 一色で1面子 , 字牌3刻子1対子 # 字一色 # 上記を出す過程で、二盃口形の数を数える
# 七対子の牌姿をすべて数えて、二盃形の数を引く # 国士無双
#############################################################
my $RyanPeiko = 0; my $Paishi = 0; my $Cases = 0;
# 清一 $RyanPeiko += MahjongCalc::OneColor::pairs( 4 , 1 ) * 3; $Paishi += MahjongCalc::OneColor::paishi( 4 , 1 ) * 3; $Cases += MahjongCalc::OneColor::cases( 4 , 1 ) * 3;
# 一色で4面子 , 残り25種のどこかで雀頭 $RyanPeiko += MahjongCalc::OneColor::pairs( 4 , 0 ) * 3 * 25 ; $Paishi += MahjongCalc::OneColor::paishi( 4 , 0 ) * 3 * 25; $Cases += MahjongCalc::OneColor::cases( 4 , 0 ) * 3 * ( 25 * 6) ;
# 一色で3面子1雀頭 , 別の一色で1面子 $Paishi += MahjongCalc::OneColor::paishi( 3 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * 2; $Cases += MahjongCalc::OneColor::cases( 3 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 1 ) * 2;
# 一色で3面子1雀頭 , 字牌が1刻子 $RyanPeiko += MahjongCalc::OneColor::pairs( 3 , 1 ) * 3 * 7; $Paishi += MahjongCalc::OneColor::paishi( 3 , 1 ) * 3 * 7; $Cases += MahjongCalc::OneColor::cases( 3 , 1 ) * 3 * ( 7 * 4);
# 一色で3面子 , 別の一色で1面子1雀頭 $Paishi += MahjongCalc::OneColor::paishi( 3 , 0 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 1 ) * 2; $Cases += MahjongCalc::OneColor::cases( 3 , 0 ) * 3 * MahjongCalc::OneColor::cases( 1 , 1 ) * 2;
# 一色で3面子 , 別の一色で1面子, 残り16種のどこかで雀頭 $Paishi += MahjongCalc::OneColor::paishi( 3 , 0 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * 2 * 16; $Cases += MahjongCalc::OneColor::cases( 3 , 0 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * 2 * 16 * 6;
# 一色で3面子 , 字牌で刻子1,雀頭1 $Paishi += MahjongCalc::OneColor::paishi( 3 , 0 ) * 3 * ( 7 * 6 ); $Cases += MahjongCalc::OneColor::cases( 3 , 0 ) * 3 * ( 7 * 4 ) * ( 6 * 6 );
# 一色で2面子1雀頭 , 別の一色で2面子 $RyanPeiko += MahjongCalc::OneColor::pairs( 2 , 1 ) * 3 * MahjongCalc::OneColor::pairs( 2 , 0 ) * 2; $Paishi += MahjongCalc::OneColor::paishi( 2 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 2 , 0 ) * 2; $Cases += MahjongCalc::OneColor::cases( 2 , 1 ) * 3 * MahjongCalc::OneColor::cases( 2 , 0 ) * 2;
# 一色で2面子1雀頭 , 別の二色で各1面子 $Paishi += MahjongCalc::OneColor::paishi( 2 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * MahjongCalc::OneColor::paishi( 1 , 0 ) ; $Cases += MahjongCalc::OneColor::cases( 2 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * MahjongCalc::OneColor::cases( 1 , 0 ) ;
# 一色で2面子1雀頭 , 別の一色で1面子 , 字牌刻子1 $Paishi += MahjongCalc::OneColor::paishi( 2 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * 2 * 7; $Cases += MahjongCalc::OneColor::cases( 2 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * 2 * 7 * 6;
# 一色で2面子1雀頭 , 字牌刻子2 $Paishi += MahjongCalc::OneColor::paishi( 2 , 1 ) * 3 * ( 7 * 6 / 2 ); $Cases += MahjongCalc::OneColor::cases( 2 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * 2 * ( 7 * 6 / 2 ) * 4 * 4;
# 一色で2面子 , 別の一色で2面子, 残り16種のどこかで雀頭 $RyanPeiko += MahjongCalc::OneColor::pairs( 2 , 0 ) * 3 * MahjongCalc::OneColor::pairs( 2 , 0 ) * 2 * 16; $Paishi += MahjongCalc::OneColor::paishi( 2 , 0 ) * 3 * MahjongCalc::OneColor::paishi( 2 , 0 ) * 2 * 16; $Cases += MahjongCalc::OneColor::cases( 2 , 0 ) * 3 * MahjongCalc::OneColor::cases( 2 , 0 ) * 2 * 16 * 4;
# 一色で2面子 , 別の一色で1面子1雀頭, みっつめの色で1順子 $Paishi += MahjongCalc::OneColor::paishi( 2 , 0 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 1 ) * 2 * 7; $Cases += MahjongCalc::OneColor::cases( 2 , 0 ) * 3 * MahjongCalc::OneColor::cases( 1 , 1 ) * 2 * 7 * 64;
# 一色で2面子 , 別の一色で1面子1雀頭, 残り16種のどこかに1刻子 $Paishi += MahjongCalc::OneColor::paishi( 2 , 0 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 1 ) * 2 * 16; $Cases += MahjongCalc::OneColor::cases( 2 , 0 ) * 3 * MahjongCalc::OneColor::cases( 1 , 1 ) * 2 * 16 * 4;
# 一色で1面子1雀頭 , 別の二色で1面子ずつ , 字牌刻子 $Paishi += MahjongCalc::OneColor::paishi( 1 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * 2 * 7; $Cases += MahjongCalc::OneColor::cases( 1 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * 2 * 7 * 4;
# 一色で1面子1雀頭 , 別の一色で1面子 , 字牌2刻子 $Paishi += MahjongCalc::OneColor::paishi( 1 , 1 ) * 3 * MahjongCalc::OneColor::paishi( 1 , 0 ) * ( 7 * 6 / 2 ); $Cases += MahjongCalc::OneColor::cases( 1 , 1 ) * 3 * MahjongCalc::OneColor::cases( 1 , 0 ) * 2 * ( 7 * 6 / 2 ) * 4 * 4;
# 一色で1面子1雀頭 , 字牌時3刻子 $Paishi += MahjongCalc::OneColor::paishi( 1 , 1 ) * 3 * ( 7 * 6 * 5 / 3 ); $Cases += MahjongCalc::OneColor::cases( 1 , 1 ) * 3 * ( 7 * 6 * 5 / 3 ) * 4 * 4 * 4;
# 三色で1面子ずつ , 字牌で雀頭 $Paishi += MahjongCalc::OneColor::paishi( 1 , 0 ) ** 3 * 7; $Cases += MahjongCalc::OneColor::cases( 1 , 0 ) ** 3 * 7 * 4 ;
# 二色で1面子ずつ , 字牌2刻子1対子 $Paishi += MahjongCalc::OneColor::paishi( 1 , 0 ) ** 2 * ( 7 * 6 / 2 ) * 5; $Cases += MahjongCalc::OneColor::cases( 1 , 0 ) ** 2 * ( 7 * 6 / 2 ) * 16 * 5 * 6;
# 一色で1面子 , 字牌3刻子1対子 $Paishi += MahjongCalc::OneColor::paishi( 1 , 0 ) * ( 7 * 6 * 5 / ( 3 * 2 ) ) * 4; $Cases += MahjongCalc::OneColor::cases( 1 , 0 ) * ( 7 * 6 * 5 / ( 3 * 2 ) ) * 64 * 4 * 6;
# 字一色 my $tzuiso = ( 7 * 6 * 5 * 4 / ( 4 * 3 * 2 * 1) ) * 3 ; $Paishi += $tzuiso; $Cases += $tzuiso * 4 * 4 * 4 * 4 * 6; undef $tzuiso; # 出力 my $mentzCases = $Cases; print "Check: 七対子, 国士を含まない 和了形の牌姿 : " , $Paishi , "\n"; print "Check: 七対子, 国士を含まない 和了の数 : " , $Cases , "\n";

# 七対子の牌姿をすべて数えて、二盃形の数を引く
my $sevenpairs = ( 34 * 33 * 32 * 31 * 30 * 29 * 28 ) / ( 7 * 6 * 5 * 4 * 3 * 2 * 1 ); $sevenpairs -= $RyanPeiko; print "Check: 二盃口でない七対子の牌姿 : " , $sevenpairs , "\n"; $Paishi += $sevenpairs; $Cases += $sevenpairs * ( 6**7); undef $sevenpairs; undef $RyanPeiko;
# 国士無双 $Paishi += 13; $Cases += 13 * ( 4**12) * 6;

my $all = ( 136 * 135 * 134 * 133 * 132 * 131 * 130 * 129 * 128 * 127 * 126 * 125 * 124 * 123) / ( 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 ) ;
my $tenhoP = $mentzCases * 100 / $all; my $tenho = $all / $mentzCases; print "Check: 七対子, 国士を含まない"; printf( "天和の確率、およそ %.3g%% , つまり %.3g回に一回\n" , $tenhoP , $tenho);
$tenhoP = $Cases * 100 / $all; $tenho = $all / $Cases;
printf( "天和の確率、およそ %.3g%% , つまり %.3g回に一回\n" , $tenhoP , $tenho); print "牌姿の数は: " , $Paishi , "\n"; printf( "計算式は %.3g ÷ %.3g\n" , $all , $Cases );

麻雀の確率 ( vol.1 一色麻雀で天和の確率を )

麻雀を覚えた 1986年、当時出ていた関連の書籍を新刊・古本あわせて45冊集めて読んだ。

その中に、コンピュータで14枚の牌姿をすべてのケースを示すと 何通り。そのうちに和了の形がいくつ。よって天和の確率はいくつ、と書いてある本があった。

署名は忘れた。既に手放したから、私が読んだときに理解を間違えて、そのまま20年以上を過ごしてきたのかもしれない。


最近、清一にしようとやみくもに 13枚同じ色を集めたときに、聴牌である確率はどれくらいかと考え出した。頭の体操にほどよい問題と思った。

9種類4枚ずつの牌から13枚抜き出して、その形から、聴牌のものを抜き出してケースを数えたら良いのかと思い、数えるプログラムを二、三日考えていた。


ちょっと待て。違うではないか。すべての牌姿は、同じ確率では出現しない。

一色36枚から 4枚を抜き出したときに、たとえば 1111 である確率は、1234 である確率の 256 分の 1 だ。

詳しく言えば、ある牌姿のなかに同じものが4枚あるとしたら、その部分については 1通りしかない。3枚だとしたら 4通り。2枚だと 6通り、1枚だと 4通り。


上記の本を読んだ18歳のときに、麻雀を考える時には、量子力学のように、ふたつの同種の牌を同じに確率計算するのかと感じて、感じながらなぜかそのまま受け入れていたのよね。

そんなバカなわけはない。一筒四枚に花・鳥・風・月と書いてあれば、2枚が手の中にある場合の数は 花鳥・花風・花月・鳥風・鳥月・風月の6通りで間違いない。

バカだねぇ。> 18歳のわたし


一色9種36枚の麻雀牌から14枚を取ったときの確率を計算するためのすべてのケースは、( 36 × 35 × 34 × ... × 23) ÷ ( 14 × 13 × 12 × ... 1) 通り。だいたい2.66 × 10の11乗 ( 266億 ) として間違いはない。

ここで Perl スクリプトをでっち上げて計算してみた。とりあえず一色手を計算するには十分というだけの、汚いコードならば 90分でできた。実行時間は 0.5秒。

和了の牌姿は、 13277 通り、 445632532 ケース。

2.66 × 10 の11乗 のうちの、4.46×10の9乗だから、一色麻雀だとだいたい 60回に一回の天和になるのか。うん、昔一色手の練習で二人麻雀をしていた時の感覚とだいたいあってる。


同じロジックで、力技で 34種類の牌を使ったふつうの麻雀の天和の確率も計算は可能。力技のコード書くのは面倒くさいし汚いから省略。

もうちょっと綺麗に書いたコードを公開するときがきたら、結果の照合に書いてしまうかもしれないが。

そして、この一色手のすべての和了形を出力したものから、一枚引いて重複を省くことで、清一の聴牌形をすべて抜き出そうと思っている。

参考 : 使用したコード

!/usr/bin/perl
#
#   allcaasecount.pl      2011-09-10 yaemon
#
use strict;
use warnings;
use bignum;
my $all = ( 36 * 35 * 34 * 33 * 32 * 31 * 30 * 29 * 28 * 27 * 26 * 25 * 24 * 23) / ( 14 * 13 * 12 * 11 * 10 * 9 * 8 * 6 * 5 * 4 * 3 * 2 * 1 ) ;
print $all , "\n";
#!/usr/bin/perl
#
#   OneColorMahjongCases.pl      2011-09-10 yaemon
#
use strict;
use warnings;
use bignum;
sub merge( $$ ); sub cases( $ );
my @mentz;
push @mentz , [ 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 3 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 ]; push @mentz , [ 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 ]; push @mentz , [ 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 ];
my @head; push @head , [ 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 ]; push @head , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 ];
my %answer;
my $test = 0; for ( my $i = 0 ; $i < @mentz ; $i++ ) { for ( my $j = $i ; $j < @mentz ; $j++ ) { my $twomentz = merge( $mentz[$i] , $mentz[$j] ); if ( $twomentz ) { for ( my $k = $j ; $k < @mentz ; $k++ ) { my $threementz = merge( $twomentz , $mentz[$k] ); if ( $threementz ) { for ( my $l = $k ; $l < @mentz ; $l++ ) { my $fourmentz = merge( $threementz , $mentz[$l] ); if ( $fourmentz ) { for( my $m = 0 ; $m < @head ; $m++ ) { my $hand = merge( $fourmentz , $head[$m] ); if ( $hand ) { my $tmp = join( "" , @$hand ); if( ! exists( $answer{ $tmp } ) ) { $answer{ $tmp } = cases( $hand ); } } } } } } } } } }
# 七対子を忘れていた。ここは手抜きする my $sevenpairscase = 6**7; for ( my $i = 0 ; $i < 9 ; $i++ ) { for ( my $j = $i + 1 ; $j < 9 ; $j++ ) { my @hand; for ( my $k = 0 ; $k < 9 ; $k++ ) { if ( $k == $i || $k == $j ) { push @hand , 0; } else { push @hand , 2; } } my $tmp = join( "" , @hand ); if( ! exists( $answer{ $tmp } ) ) { $answer{ $tmp } = $sevenpairscase; } } }

my $num = keys( %answer ); print "All cases is $num\n"; my $cases = 0; while ( ( my $hand , my $case ) = each( %answer ) ) { $cases += $case; print $hand , "\n"; } print "\nall cases is $cases\n";

sub merge( $$ ) { my $a = shift; my $b = shift; my @ret; for( my $i = 0 ; $i < 9 ; $i++ ) { my $tmp = $$a[$i] + $$b[$i]; if ( $tmp > 4 ) { return undef; } $ret[$i] = $tmp; } return \@ret; }
sub cases( $ ) { my $u = shift; my $case = 1; for ( my $i = 0 ; $i < 9 ; $i++ ) { if ( $$u[$i] == 0 ) { next; } elsif ( $$u[$i] == 1 ) { $case *= 4; } elsif ( $$u[$i] == 2 ) { $case *= 6; } elsif ( $$u[$i] == 3 ) { $case *= 4; } elsif ( $$u[$i] == 4 ) { next; } } return $case; }

2011年9月9日

本日づけの vim でコンパイルエラー

kikansah.jp を再開できそうなめどが立って、古いサーバの手入れで昨日に vim の最新版 (表示は 7.3.107 )を hg で取ってきてコンパイルした。ふつうに入った。

昨日はそのとき、自宅 PC の ruby も更新した。それゆえ、ruby と perl , python が vim のスクリプトから使えるほうの拡張版が動かなくなった。gvim に使っていて、ないと困るので今日再コンパイル。

再コンパイル時にまた最新ソース (これも表示は 7.3.107 )に更新したら、コンパイルエラー。Undefined routine ExtUtils::ParseXS::error だったかな。

perl の version は 5.14.1。cpanp コマンドを起動して ExtUtils::ParseXS モジュールを入れて、コンパイルは通った。

警告がいくつか流れていたし、perl が動くかテストするためだけの vim script が手許にないので、コンパイルできたってところまでしか確認していないが。とりあえず。

2011年8月23日

カラスの愚行、人間の思想

手許にないので第何話、第何巻収録だかわからないが、動物のお医者さん に、カラスの怒りの対象が拡散する話があった。

白衣で眼鏡の教授、漆原氏は永遠のいたずら者。野外ジンギスカンの肉を攫うカラスに復讐を仕掛ける。カラスは怒って仕返しをする。漆原氏はさらにしっぺ返しを続け、カラスの群れはさらに荒れ狂う。

ところが不思議なことに、漆原氏への怒りがあまりに強くなると、カラスは似たように白衣で眼鏡の教授をも攻撃対象とするようになった。抗争が進めば、最後は白衣のものが軒並み狙われる。

おかげで漆原氏の被害は、戦力が拡散したことでむしろ減った。

こんな話だったと思う。カラスはばかなことをすると笑ってほのぼのする、そんなエピソードだ。


だが本当にカラスはばかなのか。

罪を憎んで人を憎まず という諺がある。

誰かの行いに立腹したとき、たとえば 俺が食事をしているときに横で騒いでいたあの家族は許さん から ある程度の格式のあるレストランで五月蝿いのは良くないよね さらに 公共の場ではマナーを守ろう となり、怒りは拡散し、友人・知人が似たことをしたときに、にこやかにたしなめることができる程度に行動が柔らかくなる。カラスと同じではないだろうか。

怒りやトラウマを、対象となる個人に収めずに、汎化することで法律やマナーが生まれ自らをも律する。それを人は文化と呼ばないだろうか。

怒りを分析して背景となる相手の行動原理を否定することで、個人を怒りの対象から分け、腹の虫を収めることができるだろう。

そうありたいと望む。そうあれかし、と願う。

2011年8月10日

8月10日短信

このところ、夕刻と夜明け後の二回に4時間ずつの睡眠というおかしなペースになっていた。とりあえず、日・月と6時間以上の睡眠をまとめて摂ることができた。ただし陽が昇ってから。

火曜日。整えた役所の書類を出すべく、正午に目覚ましをかけて朝また眠る。11時に起きた。睡眠4時間。きちんと動くことができた。温熱効果で肩こりがほぼ治るほどの陽射しであった。

夕暮れのまえ、キャロットタワーの近くで用事がすみ、展望台に。西にみえるのは遠くの大きな平野かと思えば、すぐ近く、砧公園の緑であることに感嘆。いくら近くでも広い。近くにしては鬱蒼(うっそう)としてみえる。

西に夕暮れ、東は青空に白い月 19時前後は大崎の駅あたりで月見をしていた。前日の黄色、火曜日の白銀。きれいで安心を誘う月が続いている。世田谷では例年よりも星が夜空に多くみえる。節電要請で工場の稼働が悪いせいだろうか。

大崎では友人とおいしい店を一軒みつけた。ハレノヒ (畑) という。野菜の蒸し煮がウリの、廉価な店だ。

ぶらりと赤坂見附。かつてオフィスの近くで常用していたバール デルソーレ の、イタリアなコーヒーが恋しくなったせいだ。メンタロー ( menthe a l'eau. / ミント水 ) が飲めなかったのは残念だったが、満喫できた。赤坂から小田急線を経て帰宅。

睡眠が短かったので、きちんと夜のうちに眠れた。が、三時間も経たぬうちに悪夢で目覚める。

悪夢だが悪くなかった。怖いが、わかりやすく昼間の生活で何に注意すべきかが示唆されたということだ。とはいえ 陽気な音楽 を聴き、外があかるくなったので公園に煙草をふかしに出る。

猫、カラス、雀。そして誰ぞの鳥かごから逃げたものが増えたと思える、オウムのような緑の小鳥が三羽戯れるのと、東の空が明るくなるのをみてぼんやりと時間を過ごす。

近所のスーパーで、ミントのハーブティがあったのを仕入れて7時前に帰宅。今日は、このまま一日を有意義に過ごせそう。気分の良い朝だ。

2011年8月4日

マイ・ストーリ

あいつのモノガタリ = his story とかいて history (歴史) と読む 、どの著作だったか忘れたが、故・河合隼雄さんの言葉だ。

河合氏は 自分のモノガタリ、自分の内的現実をつくれる力がみなにありますよに と願っていた。他人から借りてきた history ではなく、My story

たとえば講演会に行く、勉強会に行く。ふんふんと頷いて、絶対不変の真実としてメモをとっているようでは、個が弱い。講師の内的な動機はなにか。なにを求めてこの説を主張するに至ったのか。そこに注目するとみえてくるものがある。言っている内容への理解も深まる。

講師の内的現実を聞き取り、理解しようとすることで、同時に客観的にもなれる。巻き込まれない。ある程度の大人ならばできる。

唯一無二の真実がどこかにあるはずで、自分がしらないだけ と思い込んでいる幼稚なひとに危険思想と罵られるだろうけれどね。


じつはこの記事、どこまでが河合さんの著作からの受け売りで、どこからが私のオリジナルだかあまり自信がない、正直なところ。

よくいえば、河合さんの書籍が血肉になってしまっている。悪く言えば区別がなくなっている。

だが、少なくとも、これが唯一の生きる正しいみちだとも思っていないし、河合さんの著作に感心した人ならばみな同じことを言うだろうといった期待もしていない。私が自分で選んだ、自分の納得のいくことば。

2011年7月30日

掛け算の順序について燃えている人がいる

承前

箸休めに、昨日 mixi で友人限定に公開したものを推敲してあげてみる。

twitter をみてのものだ。

本文

夕刻、ふだんは冷静な知人の何人かが「文章題から式に落とすとき、掛け算の順序を規定するな」とtwitter で燃えていた

言い出しっぺの方のまとめがあるようだ。

【かけ算】便宜的に「1当たりの数×幾つ分」の順序でかけ算を導入すること自体は否定していません。

その順序の流儀を覚えたかどうかを繰り返し確認するなどの行為によって従わなければいけないルールだと誤解させることには強く反対しています。

http://bit.ly/pKcnBQ

http://twitter.com/genkuroki/status/97005190686834688 より

ひとに何かを任せるって、自分のロボットになってもらうことじゃないんだけどな

子供を学校に任せるなかで、もっと譲れない部分はたくさんある。それくらい譲っておいたらどうだろう。

まとめの文章を拾い読みした感じ、子供にそれ間違ってると言われたときに、正しさには学校基準と実社会基準があり、学問としての基準もまた違うと説明できなくてキレているように思える。

ローカルルールというものがこの世にあると教える、機会をみすみす逃してどうするのさ。

と、車のこないことをきちんと確認して信号無視をする姿を積極的にみせ、また以下のような不謹慎な内容を繰り返し娘に伝えた不良オヤジは思う。

嘘をつくなとは言わない。説得力があってばれない嘘をつけ。

逆に私や母親が指摘しないからといって疑っていないとも思うな

嘘をつく能力と、建前と本音の使用、場所に応じたマナー、自分の責任で行動する覚悟、他人には他人の正義があるかもしれないという想像力は、すべて同根

付記

今日は別の記事を書いている合間にはさんだわけだが、意図や関連がまったくないかというと嘘になる。

2011年7月26日

三峯神社

出発

三峯神社 に週末いってきた。

あまり人がいないときが良いと、思いついた翌日の19日に颱風の接近をしりながら行ったら、西武池袋線の特急が雨で飯能から先に行けません と停まり、しばらく待ったが各停含めて動きようがなく、飯能でご飯食べて国分寺・三鷹・吉祥寺と回って帰ってくるにとどまった。外食がすべて当たりだったから悪くはない。

子供の頃から、一度は予行演習しないとうまくいかないというジンクスがあって。大学受験などは高校に入った年から何度も、季節を外してホテルから大学まで歩いたっけな。以上は余談。

遭難しかねない場所と聞いていたので、mixi の日記で 行ってくる。連絡が途絶えたら遭難届け出しておいて と書いていたら、午前10時ころに友人から もう出ました ? という連絡があり、それで目が覚めて出発。

12:30 に池袋を発つ特急に乗ったら、行楽日和で電車は人でいっぱい。集団での観光のようになってしまうかと心配した。が、飯能でほとんどの人が降り、電車が逆方向に動き出したときには7裲編成のうち私の乗った車輌にはほかに二人だけ。駅前で見つけた、本社までの急行バスに乗ったのは私だけであった。

道理で、mixi で告知したときのコメント。この神社のことを書いたときに反応したのはみな神社巡りを趣味として興味のあるひとばかりだったわけだ。観光としてはあまり知られていない神社らしい。

いや。私は神社・仏閣、西洋なら教会をみるのは好きだが、趣味として深く調べたことはない。去年から一年あまり三峯行ってみたいと言っていたのは、全国でも珍しい狛狼の神社だと聞いていたからだ。

西武秩父からバスで一時間あまりの道のり、狼は当然にいないが、猿の親子が道端に腰かけているのをみて仲々の田舎だと思った。本社の前の駐車場からの景色には、奈良の生駒を思い出す。

表の神社

17時まで30分ほど、昔からの佇まいをみせる鳥居の手前の茶屋、大島で腹ごしらえ、情報収集をして、ペットボトルに水を補給。鳥居から入って表のふつうの神社をまずは眺める。

土地がだだっ広い、ごくふつうの神社と思う。家族連れなど五組ほどの参拝者、観光客ともすれ違った。買うならば道の両脇に狼の控える、5千円とか8千円とかの掛け軸が面白いだろう。御守も、観光客向けの狼を模した細工も、地酒も興味がないではなかったし。出発前にサイトでみた日帰りの温泉 にも惹かれたが。茶店で 足速な人ならば30分で着く と教えてもらった奥宮に向けて出発。お土産を買うにしても帰りだ。

奧宮

奧宮は、地図の上では妙法ヶ岳というらしい。山を登る手前、第一の鳥居を入ったところには、埼玉県警の 登山届けを書いてここに入れてください という表示と机、鉛筆などがあった。

長袖のシャツも着ているし、電話の電波も通じる。非常食に黒砂糖をもってきて、水も補給してある。私一人ならば問題はないだろうと、届けだけを書いてなかに入った。仲々険しい。動物の気配などまったくない。

西武秩父の駅までは何度か、家族や友人ときたら楽しかろうと思った。表の神社の境内でも多少は考えた。だが、この登山はひとりで来てこそ、ほかに参拝客がいなくてこそ面白いだろう。山は一人で登るもの。いま中学生の娘が、何歳になったとて、連れていっしょに歩くことなど想像もできない。ひとりで行きたいと言い出せば止める気もないが。

まぁ、歩きながら思い出していたのは、大学のバス旅行で何人もで歩いた高野山の山道であり。一人で歩きたいのは、あのとき峯を歩くのに高所恐怖の気がある私は遅々と進まず、回りに迷惑をかけたから、なのですがね。

写真は途中の休憩所。行こか、戻ろかと考えながら日没までの時間を考えたのが、16:53。

登山・ハイキングの道から、いよいよ本当の参拝になる鳥居の手前より撮った写真。17:28。

人里 = バス停に戻って あー、面倒くさかった と大声に呟く。18:45、19時までの温泉には入れないし、きっと表の神社でお守りなど売っている人も帰っただろう。写真は、向かいの雲取山を撮ったもの。名前のとおりに雲がかかっている。

山裾の参道口までの山道、携帯のナビによると 2km 強だという。そこから本社までくる、往路のバスは、16時に私が乗ってきたのが帰るのが今日の最後。本社まで再度あがり、奧宮と反対に抜けるのが参道への正式のルートとわかってはいたが、なんとかなるさと歩き出した。携帯の電源は、外部バッテリ含めて切れている。

夜道

何度か、あきらかに参道と思える、人だけの道でショートカットしたのだけれどな。気がつけば秩父湖から迂回する、14km のバス道に戻っていた。

県道だというのに、街灯もない。今年の地震の影響、節電で灯いていないのではない。本当に元からないのだ。一時間に一度ほど、車が通るときには、轢かれないかと心配になった。

手がかりは、車線分離の白線だけ。人間の目は、暗くなると白黒モードになるというのを実感した。車が通り過ぎると、しばらくまた目が馴れずに、なにも見えなくなる。

まだ暗くなる前、鹿が出てきて驚いて逃げていった。ぶつからなくて良かった。

途中、熊が出るという看板も見かけた。蛇にももちろん注意しないといけない。怪我をしたときの応急措置にと、多数もってきた煙草の葉をパイプにいれ、火種や灰を落とさぬ歩き煙草とする。風流でも、煙草中毒でもない。熊が向こうから避けてくれないかと、自然界にはなさそうなアヤシイ匂いをたてるという方策だ。

何度も奇声が聞こえ、道の横で梢を揺らしながらこちらを伺っていたのは猿だろう。うかつに食事などしたら襲われても不思議はない。猿の声に合わせ、こちらも同様の声をあげて存在を明示しながら、ひたすらに先を急ぐ。

21時頃に二瀬ダムに出て、やっと人里。ここから先も街灯のほとんどない道。22時過ぎに道の駅・大滝温泉 に出て、道の駅も夜は閉まっているのに落胆。バスの待合所が ご自由にお入りください と書いてあるのをみて、中に休み眠ろうかと思ったが、寝袋の先客が三人。ふだん眠る時刻でもないし、うるさくて迷惑だろうと先を急ぐ。

午前零時前に、30分ほど、街灯から近い資材置場が、屋根だけがあるところで地面に体を休める。妙な夢をみた 気がする。夢ではなく空想かもしれない。神社好きのみなが、狼の気配が残っていないかと羨ましそうに言っていたからね。

零時に半月が東に出て、また歩き始める。参道口を経て、秩父鉄道の三峰口駅にたどり着いたのが3時。屋根はあるが吹きさらしのベンチで、しばらく眠る。悪い夢をみたのは、夜明け前があまりに寒かったからだろう。運動しなければ体温が下がる。

秩父鉄道に沿って二駅歩き、やってきた始発に乗ってまっすぐに東京に戻った。

総括

まぁよほどの物好き、数奇者でなければ、行く場所ではないね。

とはいえ新しい社を建てたい、金がないという看板もあったから。文化遺産を守るために、神事に合わせて境内の宿 に予約をとり、観光をするのは楽しいとは思う。たとえば 9月、10月は月読祭。神事・一泊、二食つきで1万2千円と書いてある のを読めば、安いと思うもの。

2011年7月2日

人の心の

承前

珍しく占いについての考えから発展した文章をこちらにあげてみる。ふだん、そちらの話題は隣の 夜の逆説 へあげているが。

前日に、mixi で占いを同じく嗜む相手のみに限定公開したものだ。そのときの題名は走り書き 。単に思ったことをそのまま吐き出しただけで、まったく文章構成を無視した文章なのに。なぜか評判が良かったので、つい図に乗った。

走り書き

たとえばふたりは幸せな結婚をしました。目出たし、目出たしで終わる小説しか読んだことがなくて、恋ってそんな結論しか思い浮かばない人が。

いくらカード引いたって、そんな占断結果しか思い浮かぶわけがないよね。もしくは運命の人じゃありませんでした、あなたには別の運命の相手が見つかりますか、どっちか。

喧嘩をすることで、より一層に絆が深まるかもって発想のない人、体験のない人、みたこともない人に喧嘩はできない。できるのは我慢か絶交だけ

正しいことをしたら誰からも褒められるて固定観念がある人には、正しさの蔭で傷つくひとがいるとはわからない。世界には対立する正義があって戦争が起きてることもわからない。

努力だけが報われると思ってるうちは、動かないほうが良いときは読めない。

だれかに罵倒されるだろうと予想しながら責任と覚悟に裏打ちされた決断をしたことがない人は、間違いと正しいのモノサシでしか自他を計れない

自分が変わったと自覚したことがない人は、他人が変わることも想像できず、他人を理解しようとすれば蜃気楼を追うように迷い続ける。