2013年2月4日月曜日

数独の問題の類似度を調べる

 数独の問題の類似度を調べるプログラムを作って、手持ち(約3万4千個余り)のデータを入力してみたところ類似した問題は一つも発見されなかった、ということを以前この欄で紹介した。
 これは予想通りの結果ではあったが、プログラムが期待通り動作したという実感が得られず少し残念な気もした。

 そこで、類似度を確認する方法をより高度なものにしたバージョン(V2.0)を作成した。そのプログラム(ホームページ上で紹介されている)を利用すると「類似している」とみなされる問題が1件検出された。ただ、これは偶然似てしまったものと思う。と言うことは、更なるアルゴリズムの改良が必要ということであろう。下記に示すので、読者の皆さんも自分で目で確認してみてください。

 

2013年1月23日水曜日

数独の問題を集める

 数独問題の“初出”を確認するプログラムを作ったが、それが実用的かどうか確認するにはもっと沢山の数独問題が必要となる。そこで、あるサイトからまとめて入手することを試みた。

 毎日定期的に新しい問題が出題されているらしいので、その各画面上からデータ部分だけを抜き出してくるのである。人手で一つ一つデータを書き写していたのでは時間が掛かり過ぎて現実的ではない。そこで、あらかじめデータの構造を調べておいて、それに対応する抜き出しプログラムを作ることにした。これを動作させすべて自動的に抜き出してしまおうという魂胆である(プログラム作りのネタはいたる所にあるものだ)。その結果、時間は掛かったが、34,125個の問題を一挙に手に入れることができた。

 “初出”を確認するプログラムにこのデータを入力してみたところ、重複した問題は一つも含まれていないことが確認できた。数独作りの立場からは「期待通りの結果」ではあったが、プログラム作りの立場からは「少し残念」な気もした。複雑な心境である。
 しかし、3万4千個余りの膨大な問題データが(文字通り)あっという間に処理されて、結果が表示されたのは痛快であった。良しとしよう。

 ところで、正式に公開さているものとはいえ、このようにデータ構造を調べて(プログラムで)データの一部だけを抜き出すという行為は倫理的に許される行為なのだろうか。いささか疑問が残る。(ブラックハットの)ハッカーになって犯罪を犯しているような気持ちになってきた。検査のために使うだけにして、終了後は破棄する方が無難であろう。こんな膨大な数独問題を持っていても、到底すべてを解くことはできないのだから。

2013年1月19日土曜日

「初出」の検出(「数独の問題について」の続き)

 先に、数独の問題で 同じ問題が重複して作られないようにするためのプログラムを作った話を紹介した。私は、それをPerlというプログラム言語で記述したのだが、もっと詳しく書くとハッシュ(hash)という記憶方式を利用したのである。これは人間の脳の記憶方法を真似たもので、実に使い勝手がよい。人間の脳は“初出”(めて現したものであるかどうか)を簡単に判別できる機能を持っている。

 受験勉強の時の経験だが、意味の分からない英単語に出会うと辞書を引いて調べる。そして辞書の中でその単語を見つけた瞬間、以前調べたことのある単語であることを思い出し悔しい思いをすることが多い。それが何度も繰り返されると、かなり落ち込むことになる。そして自分の記憶力に自信がなくなってきたりする。

 しかしよく考えてみると、以前一度調べたことがあるという“事実”の方は、しっかりと記憶されるていることに気が付く。忘れているのは、その“意味”の方なのだ。人間の脳は“初出”だけはしっかりと記憶していて、脳は素早く反応してその事実を教えてくれる。我々はこの機能を自信を持って活用した方がよい。

 年寄りが同じ話を繰り返すと、それを聞いた若者の脳は素早く「初出ではない」ことを感知できるから「その話は聞いたよ!」と返すことになる。中には「3回目だよ!」などと回数まで記憶している人もいる。
 人間は齢を取るとこの機能が衰えるから、同じ話を繰り返すようになるのかと了解したとすれば、それは少し違うのではないかと思う。年寄りでも初出はしっかりと覚えている。何度も同じ話をしていると、段々と話し方がうまくなってきて、話の展開も華々しくなり場合によっては誇張されていくものである。だから初出でない(その話をしたことがある)という事実は十分に理解しているのである。年寄りが忘れてしまうのは「誰に対してその話をしたか」ということの方である。

 これからは、年寄りはブログ上などでその話を一度だけ公開すればよい。そして“初出”のマークをしっかりと付ける。そしてすべての人に話したと理解し、もう誰にも話したりしないようにする。そうすれば、誰に話したかのデータを保存したりする必要もなくなるわけだ(どうせ忘れるのだし)。
 こうすれば、若者達も、年寄りの同じ話に悩まされることはなくなるだろう。

 ねっ! この話、いい話でしょ。
 今度、誰かに話してみようかな。

2013年1月16日水曜日

数独の問題の問題点

 今まで新聞や雑誌に紹介される数独パズルの問題を解いては、それを個人的に保存してきた。その問題の数が400件近くになった。そこで、かねてから気になっていたことに挑戦してみようと考えた。

 数独の問題の組み合わせは無限にある(約54億パターン以上あると言われている)が、実際に自分で問題を作るとなるとこれが結構難しい。“難しい”という意味は、既存の問題とは異なることを確認するのが大変だからである。したがって、誰も確認などしないでそのまま発表しているのが現実なのであろう。

 そうなると、偶然に一致した問題が作られて、誰もそれに気が付かないで新しい問題だと思い込んでいる可能性も十分にあり得るのではないか。沢山の問題を集めて“問題集”を持っているなどと威張っていても、かなり重複した問題が含まれているのかもしれない。

 そこで、この約400個の問題に対して同じものが含まれていないかどうか確認するプログラムを作ってみた。以前から Perl言語を使えば簡単にできるのではないかと考えていたからである。大学の授業も区切りがついたこの時期に、挑戦してみることにした。

 その結果は、自分でも驚くほどのものであった。
 ・同じ問題が3個見つかったケース(2回)
 ・同じ問題が2個見つかったケース(3回)
つまり、12個の問題が実際は5個になってしまったのである。

 しかし私の問題集に重複登録されてしまったのは、どうやら大半は私の方に原因があるように思われる。最初の頃は個々の問題に適当に命名していたので、データベース化する時点で別のものと判断されたのかもしれない。現在は統一した命名法で出典を辿れるようにしてある。
 もう一つの原因は、「例題-1」という名称の問題だったから、以前に発表した問題を「例」として取り上げたのであろう。偶然の一致と確認できたものは、今までのところ存在していない。

 数独の問題は、異なるものをほぼ無限に作れるから重複することは滅多にないが、新たに作って公表する際は、少なくとも自分が過去に作ったものの中に同じものが含まれていないことを確認してからにすべきではないかと思う。

2012年12月27日木曜日

大学の恩師

 大学時代の恩師、H先生が亡くなられた。ご高齢であったので、この寒い時季は特に心配していたところだった。

 先生に習ったコンピュータ関係の授業が契機となって、私は教師になる道をやめてコンピュータ関係の仕事へ進むことを決心したのである。大学卒業後もいろいろとお世話になってきた。コンピュータ関係から医用機器の仕事に転勤となった際はかなり落ち込んだが、報告がてら先生のお部屋を訪ねると、激励されるかと思いきや、意外にも「大学に戻らないか」と声を掛けられたのを覚えている。そんなことは無理であることを私は重々承知していたが、やはり救われたような気持ちになったものである。しかしその後も一度ならず声を掛けられたから、落ち込んでいる私を単に励まそうとされた訳ではなかったらしい。

 結局、先生の期待には応えられなかったが、大学のコンピュータ関係の科目で、指導教官がみつからない場合など、急遽先生から講師を頼まれることが多かった。負い目があったので、そういう時は必ず引き受けることにしていた。会社の了解を得て非常勤講師として学生を教えてきたのである。振り返ってみると、全部で6教科も担当したことになる。

 先生が定年で大学を退かれることになった時、先生が担当していた科目の「データベース論」も同じように引き継いでほしいと依頼された。しかしこればかりは任が重く、怖れ多いという気持ちもあってご辞退申しあげた。その後、お引き受けできなかったことが、ずっと悔いとして長く心に残っていた。先生逝去の報に接し益々その気持ちが強くなってきている。十分に職責を果たせたかどうか自信はないが、ここらで教師としての自分の仕事にも区切りを付ける時期にきたのではないかと思う。ご冥福をお祈りしたい。

2012年10月20日土曜日

変な日本語(7) 「真逆」

 先日、言葉の意味を間違って理解している人が多い例として、文化庁の調査結果からいくつかの例が紹介されていた。新聞のニュースなど読んだ方も多いと思う。
 「気が置けない
 「にやける
 「うがった見方
 「失笑
などである。
 その中に「正反対」の意味で「真逆」という表現を使う人が多いという記述があった。若い頃はまだ表現力が未熟だから、そんな間違いをしてしまうのかもしれない。もっと分かりやすい表現を覚えて、普通の言葉を普通に使うようになってほしいものである。
 こういうことを言うと「言葉は通じなきゃ意味がない。時代が変われば意味も変わっていく」などという反論をよく耳にする。「真逆」などという造語を作らなくても、「正反対」という言葉がある。それを使えばよいのである。そんなことを考えていたら、次のような新聞記事を発見した。


 いやはや、新聞記者ともあろう者が、記事の中でこんな表現を使うとは。多分、未熟な表現力しか持たない若者が、そのまま新聞記者に採用されてしまったのであろう。しかも「真逆」に「まぎゃく」などと 重箱読み のふりがなまで付けている。そんな表現法を使わなければならない必要がどこにあるのか。それをチェックしなければならない校閲やデスクも、その役割をはたしていない。彼等も同じように未熟な表現力しか身に付けていないのかもしれない。嘆かわしいことである。

2012年9月23日日曜日

スペード曲線を描く

 ハート曲線に続いてスペード曲線なるものを描いてみました。
 前提条件として、前作のハートマークの場合と同じように、円を出発点として作ることにしてあります(それに特別な意味はありませんが)。
かなり苦労しましたが、円からダイヤマークを作るのに比べれば、はるかに易しいと信じて取り組みました。これを“スペード曲線”と呼んでよいのかどうか分かりませんが、スペードの幹(?)の部分まで含めてスペードを描いたものは存在しないのではないかと思います。多分、世界初の完全な形(?)のスペード曲線を作成したのではないか、と愚考しているところであります。

 今年の夏休みは、ハート曲線とスペード曲線に取り組んで過ごしました。楽しい遊びは終りました。