いもあらい。

プログラミングや哲学などについてのメモ。

双方連続王手による千日手について。

2008-06-25 01:58:22 |  Study...
やねうらおさんの双方連続王手の千日手は成立しないを見て、しばらく考えていたのだけれど、試行錯誤の末にやっと証明が出来た。

証明を書いたPDF

アイディアは、王手される方向というのにも気を向けてみよう、というもので、そうやって考えているで均衡方向とホットスポットというのを定義してやると上手くいきそうなことに気がついた。
すごくごちゃごちゃしてるけれど、たぶん大丈夫かと。。。

それにしても、証明をしている中で思わぬ穴があって、それを埋めて、、、というのがとても多かった。(まだ埋まりきってないかも? 多分大丈夫だとは思うんだけど。)
その度に、あぁぁぁ、、、と考えて構想の練り直しをしたりとか。

・・・それにしても、著者名、とりあえずハンドルネームで書いたけど、やっぱり本名の方がいいのかな?

(訂正)
コメントに詳しい議論は載っていますが、命題8の証明に穴がありました。
もう少しホットスポットの配置パターンについてつめて考える必要がありそうです。

閉鎖!?。

2008-06-14 02:04:00 |  Etc...
BLOCKBLOGが閉鎖とのこと。

さっきトップページからログインしようとしたら、なんとBLOCKBLOGが閉鎖とのこと。
最近、元気がないなぁ、とは思ってたけれど、まさか閉鎖にまで至ってしまうとは。

で、何が困ったって、バックアップ。
見た感じ、logをローカルにダウンロードするツールが(BLOCKBLOGに)ない。
せっかく書いたデータなので残しておきたいし、引越しをするなら引越し先においておきたいわけで。

どうしたものかと考えたのだけれど、とりあえずwgetで全部データが落とせれば問題ないので、学校のサーバから

 % wget -r -l 10 http://yamaimo.bblog.jp/


というふうにしてみたら、あっさりと落とせた。
データはどっか別のディレクトリ(とかデータベース)においてあって、CGIでそこから呼び出すとかだったら、wgetでは落とせないからめんどくさいなぁ、と思ってたんだけれど、そんなこともなく普通に落とせてとりあえず一件落着というか。
とりあえず最悪の事態は防げたんじゃないかな、と。

ただ、落としたデータを見てみたら、(プレーンの)テキストデータになっているわけじゃなくて、完全にHTMLで書かれていたので、引越しをするとなるとデータの抽出がめんどくさそう・・・(まぁ、Perlでちょこちょこっとスクリプト書きゃいいんだろうけど)

あと、時系列に関して、いつ投稿した記事なのか、という情報が消えてしまうので、それはちょっと悲しいかも。
要は、いつ頃にどういう考えをしていたのか、というのが消えてしまうわけだから。

何はともあれ、移転先を見つけないといけないかな・・・
(Googleとかはてなとかが妥当かな?)

追記:
そういえば、BLOCKGROUPの方も閉鎖とのこと。
失敗は、Subversionの需要が、とか社長は書いてたけれど、問題はそこではないと思った。
なんというか、「このサービスを使えば何が出来るのか」「このサービスをどういったふうに使えばいいのか」というビジョンが見えなかった、見せられなかったのが最大の失敗なんじゃないかなぁ、と。
だって、「これこれこういった機能がある!」というのはたくさん書いてあって、へぇ、とも思ったけれど、じゃあ、実際に使ってみようかな、と思ったときに、「それで、何を作ろう?」というのが最初に思ったことだったから。

ブログだったら、とりあえず作って、まぁ日記感覚で書き出せば済むけれど、BLOCKGROUPの場合は、ホームページを作る環境はとりあえず用意されるけれど、そこで「とりあえず○○してみようかな」と軽い気持ちで何かが出来るわけではない。
なので、「次に何をしていこう」というふうに、かなり能動的に自分で動いていかなくちゃいけない。
そりゃ、いくら機能があったとしても、使われないよなぁ、と。
(というか、何に使ったらいいのかが見えてこないし。)

最近、就活でとある人の話を聞いてから、マーケティングというのがすごい大切なんだということをしみじみ感じてたり。
つまり、「目標地点の明確化」。
こういうのがあるといいよね、とか、こういった機能が出来たんだけれど、何に使えるだろう、というアプローチをするのではなく、まずは「こういったことを達成する」という目標をしっかりと明確化させるのが大切。
そうしたときに初めて、こういったものがあるといいとか、こういった機能が必要だとかの議論が出来るわけで。

BLOCKGROUPの失敗は、マーケティングの失敗ともいえる。
「どういった層の人に使って欲しいのか」
「どれくらいの人数に使って欲しいのか」
「どういった用途で使って欲しいのか」
「サービスのコンセプトは何なのか」
というのが全然見えてこない。

サービスの持ってる機能だけ見れば、中小企業でホームページを新しく持ちたいと思っていて、ただ普通のレンタルサーバでは貧弱すぎ、かといって外注をするには資金が足りないというようなところが、Webの出来るような社員数人でチームを編成してホームページを作る、というのを想定したのかな、と思えるのだけれど、それにしては、宣伝対象がブログを書いているような個人ユーザで、しかも想定される使用人数からすれば採算が十分取れる価格設定でもなく(安過ぎる)、そしてサービスのコンセプトが見えてこない。

逆にいうと、宣伝対象を中小企業に絞り、広告を打つというよりは営業をして、価格帯をもっと高めに設定し、コンサルティング、作成代行のサービスをオプションでつける、というのが必要だったんじゃないかな、と。
あるいは、マーケティングの対象を個人ユーザにするのなら、いくつかの標準的な使い方を示したり、あんちょこパック(簡単に何かが作れる。例えばグループウェアとか)のオプションをつけたりが必要だったんじゃないかな、と。


双方連続王手の千日手。

2008-06-06 14:15:00 |  Etc...
やねうらおさんで話題になっている、双方連続王手の千日手が面白そうだったので。

まず、双方連続王手の千日手とはなんぞや、ということを書いておくと、「先手の王手に対して後手が逆王手をして、それに対して先手がさらに逆王手をして、・・・を繰り返して、同一局面が4回出てくる」のが、双方連続王手の千日手。
そのような手順(双方連続王手で千日手になるような手順)は存在しない、というのがやねうらおさんの主張。
ただ、証明はされていないらしく、いろんなところで(局地的に)話題になっている感じ。
で、面白そうだから、自分も考えてみようかなぁ、と。

とりあえず、この主張が正しいのか正しくないのかについては、おそらく正しいのだと思う。
やねうらおさんは、王手の掛け方とそれに対する逆王手の仕方に関していろんな場合を洗い出して、最終的に背理法に落ち着かせようとしている感じだけれど、もっと簡単に出来ないものなのかなぁ・・・?
まぁ、背理法を使うのは絶対なんだろうけれど。

で、最初に考えたのは、手数の長さを指標にして、矛盾を導き出すというもの。(グラフ理論だとよくある手法)
仮に双方連続王手の千日手が存在したとすれば、その中で最短手順のものが存在する。
最短のものを考えているから、ぐるっと回って同一局面が現れたときには、一番最初の局面が現れていなければいけない。
(もしそうでなければ、戻ってきたところの前の部分は全部はしょってしまっても問題がない。はしょったとき、最初の盤面の手番が後手だとしても、先手後手に対称性がある(←双方連続王手なので)ので、先手後手を入れ替えてしまえば問題ない。)
そうすると、一番最初の局面は、先手が後手に王手をされている局面からスタートすることになる。
・・・ということまではすぐに分かって、なんか矛盾してそうなんだけれど、分からない^^;
それに、これだけだと手順最短の仮定が何の役にも立ってないし・・・

それとは別に並行して考えていたのが反例。
で、残念ながら反例にはなっていなかったのだけれど、惜しい例を見つけたので、メモ。

後手の持駒:なし 
  2     1
┬──┬──┐
│▽香│▽香│一
┼──┼──┤
│▽玉│    │二
┼──┼──┤
│    │▽角│三
┼──┼──┤
│    │    │四
┼──┼──┤
│    │    │五
┼──┼──┤
│▲玉│    │六
┼──┼──┤
│▲香│▲香│七
┼──┼──┤
先手の持ち駒:金

図から、
▲1六玉、▽2四角、▲1二金、▽同玉、
▲2六玉、▽1三角、▲2二金、▽同玉、(繰り返し)
というのを考えたのだけれど、同玉が逆王手になっていないOTL
追記:コメントで、これだと金が無限増殖するという指摘を受けました。
確かにそうで、完全にうっかりしてました。
一応、金が無限増殖しない版(もともと考えていた手順)を書いておくと、
▲1六玉、▽2四角、▲1二金、▽同玉、
▲2六玉、▽1六金、▲同玉、▽2二玉、
▲1二金、▽同玉、▲2六玉、▽1六金、(以下、同様)
というのがあります。
ただ、やはり同玉が逆王手になっていないのでダメです。

同玉を王手にするためには、後手の玉を動かすことで、後手の駒の利きが先手の玉に利いてくるようにしなければならないのだけれど、それは無理っぽい感じで・・・
他にもいろいろ考えてはみたものの、やはりどこかで逆王手が途切れてしまう感じ。
工夫を考える中で、「(逆)王手に対する対処の仕方が、逆王手になっていなければならない」という制約がかなり効いていることが分かるので、そこらへんにこの問題の証明の核となる部分があるんじゃないかなぁ、というのはつかめるのだけれど。


単位変換(3)。

2008-06-01 01:10:00 |  Study...
単位変換(2)。の続き。

前回のエントリを書き終わってから気付いたのが、小学生向けの技術を書くのを忘れていたということ。
まぁ、前回のエントリも大分長くなっているので、こちらに。

小学生のための方法



前回の方法を使えば機械的に単位を変換できるわけですが、分数をバリバリ使うので小学生には結構難しいんですよね。
ということで、小学生には前回の単位変換の理論をもっと簡単にしたものを教えていたりします。

単位関係式からの変換



単位関係式とは、前回も出てきましたが、
 1km=1000m
とか、2つの単位の関係を書いた式のことです。
単位変換式はここから作ったわけですが、小学生の場合には単位変換式を使わないで、この単位関係式から直接単位変換をする方法を導かせます。

どうするのかというと、
 1、今どっちからどっちにしたいのか。
 2、そのためには、どういう計算をしているのか。
というのを考えさせます。

例えば、2kmをmにしたい場合は、次のようにします:
今どっちからどっちにしたい?
 →kmからm
(数字の部分に注目して)1が1000になっているわけだから、どういう計算をしたの?
 →1000をかけた
じゃあ、答えは?
 →2×1000=2000m

同様に、1200mをkmに直すことを考えてみましょう:
今どっちからどっちにしたい?
 →mからkm
(数字の部分に注目して)1000が1になっているわけだから、どういう計算をしたの?
 →1000で割った
じゃあ、答えは?
 →1200÷1000=1.2km

という具合です。
つまり、単位関係式の左辺と右辺の数字を見比べさせて、何倍すればいいのか/何で割ればいいのかを考えさせるわけです。

速さの変換



変換したい単位が分子の方にある場合はこれで問題ないのですが、変換したい単位が分母にある場合はちょっと困ります。
具体的にいうと速さで、例えば時速(km/h)を分速(km/min)に直すとかだと、変換しているのは分母の方の単位なので、先ほどの方法だと上手くいかないのです。

ではどうするのか、という話ですが、変換したい単位が分母に出てくるのなんて、小学生の場合は速さくらいです。
だから、速さ専用の変換方法を用意しておけばいいわけです。

具体的には、次のようにしています:
最初に、
 (小) 秒速 ⇔ 分速 ⇔ 時速 (大)
というふうに、秒速は小さくて、分速、時速となるにつれて大きくなると認識させておきます。
その状態で、
 1、大きい速さにすると、数は大きくなるのだから、60をかける
 2、小さい速さにすると、数は小さくなるのだから、60で割る
と教えます。

例えば、秒速120mを分速にしたいのなら、小さいのを大きいのに変えるわけですから、
 120×60=7200
となるので、分速7200mとなります。
(ここから、kmに直したかったら、さっきの単位関係式を使った方法を使います。具体的には、1km=1000mで、mをkmにすると、1000が1になるのだから、1000で割ればいいと分かります。)

同様に、分速72mを秒速にしたいのなら、大きいのを小さいのにするわけですから、
 72÷60=1.2
というふうに出来ます。

受験の子とかだと、ここでさらに時速km(km/hのこと)と秒速m(m/sのこと)の変換について教えたりします。
何かというと、この2つには
 1km/h=3.6m/s
という関係があるので、これを教えておくわけです。
なぜかというと、この変換は結構出るのですが、この関係を知らないと、計算を3回もすることになるので時間がかかるんです。

小数点移動法



ちょっと面白い方法で、小数点移動法(勝手に命名)なんていうのもあります。
この方法は10進の単位にしか使えない(=時間とかには使えない)のと、分数が出てくるとお手上げになってしまうという欠点はあるのですが、簡単なので便利です。

準備は、次のようにします:
まず、
 km   m  cm mm
1|000|00|0|
 |   |  | |
というふうに書きます。
次に、変換したい値を、小数点がその単位に揃うように書いてあげます。
例えば、720cmとかなら、
 km   m  cm mm
1|000|00|0|
 |  7|20. |
という具合です。
あとは、変換したい単位に小数点を移動するだけです。
例えば、mにしたかったら、
 km   m  cm mm
1|000|00|0|
 |  7.2| |
となるので、7.2mですし、mmにしたかったら、
 km   m  cm mm
1|000|00|0|
 |  7|20|0.
となるので、7200mmと分かります。

長さの場合は上のような感じでしたが、重さの場合は
 kg   g   mg
1|000|000|
 |   |   |
という感じですし、かさの場合は
 m^3       cm^3
 kℓ   ℓ dℓ  mℓ
1|000|0|00|
 |   | |  |
となります。(かさの場合は、ℓとcm^3の2つが必要です)

この方法が特に有効なのが、面積の単位変換です。
面積の単位は、大きい方からkm^2、ha、a、m^2、cm^2があるわけですが、これを先ほどと同じようにすると、
 km^2 ha  a  m^2    cm^2
1|00|00|00|0000|
 |  |  |  |    |
というふうに、きれいになります。
覚えさせるときには、「0が10個。2個ずつ区切って最後は4個。」というふうにしたりします。

面積の単位に関しては、「様子を書かせれば分かる」という声を聞くことが多いのですが、出来ない子には様子を書くこともそうですが、そのあとの「1mは100cmだから、100×100で10000。だから、1m^2は10000cm^2だ。」という思考が出来ません。
頭が使えないんなら、頭を使わなくて出来る方法を覚えさせる、というのが即時的には必要になってきます。
(もちろん、長期的に見た場合にはマイナスも大きいかもしれませんが。ただ、個人的な感想をいうならば、出来ない子は考えさせる訓練をさせても考えることが出来ません。すぐに思考停止してしまいます。ある時期までに、いろんなことに対して疑問を持ち、それに対して試行錯誤してみるという経験をしている必要があるもかもしれません。)

なお、単位関係式・単位変換式を使った方法については自分で考え出した方法ですが、小数点移動法については自分で考え出した方法ではなく、教えてもらった方法です。(だから、ホントは勝手に命名しちゃいけないんですけどね^^;)
一応、ここに明記しておきます。



単位変換に関しては、これでお終い。
今自分が持っている知識・方法に関しては全部書けたかと思います。

それにしても・・・自分が今回書いたような内容ってほとんど見かけないんですよねぇ。
単位って、分かる人からすれば当たり前で、「ちょっと考えれば分かるでしょ? 方法なんてないし、いらないでしょ。」というものなんですよね。
当然、答えも「想像してみたらどうですか」とかいうものがほとんどです。
けど、質問している人の多くは、その「ちょっと考えれば」の部分が分からなかったり、想像が上手く出来ないから、質問しているんですよね。
なので、そういった人たちに今回の一連のエントリが役に立てばなと思います。

それにしても・・・そもそもは単位についてしっかりと教える単元がないからいけないんですよねぇ。
物理とか、単位について知っていないと何も出来ないっていうのに^^;