鍋あり谷あり

テーマを決めずに適当に書いています。

あなたは n 個の同じサイズのボールを持っています。

id:torazuka:20130626:balls
の問題からヒントを得て。

「あなたはn個の同じサイズのボールを持っています。(n-1)個は同じ重さで、1つだけが他より少し重いです。秤をm回かそれ以下の回数使って、少しだけ重いボールを見つけるには、どうすればよいでしょうか?」という問題を B(n,m) と呼ぼう。

n, m は正の整数。

  1. B(n, m) が解を持つのはどんな時か。
  2. B(n, m) が解を持つ場合に、その手順を実装せよ。ただし、n<10000。ボールの重さ w は整数で 1≦w≦10000 としてよい。

1問目はある程度有名な問題だと思う。

2問目は有名かどうか知らない。

ちなみにどう書く( http://atnd.org/events/40389 )用の問題じゃないので、事前に解いたりはしてないよ。

それほど苦しまずに解けそうだとは思っているけれど。

チェスと将棋と計算機

wikipedia( Deep Blue ) を見ると、1996年に初めて Kasparov に勝利し、その翌年の Deep Blue は 11.38GFLOPS だったらしい。

一方先日三浦八段に勝った GPS 将棋は、同じく wikipedia( GPS将棋 )を見ると、iMac666台+その他 13台 らしい。
iMac の 計算能力がわからないわけだけど、Core i5-2400(デスクトップ)ぐらいだと思うと、一台あたり 80GFLOPS。深く考えずに (666+13) 倍すると、50TFLOPS ぐらい。Deep Blue の 5000倍。

いやもちろん FLOPS くらべてどうすんだとか思っていないわけではないんだけれども、まあ目安ということで。

コンピュータ GFLOPS *1
Deep Blue(1997) 11
GPS将棋クラスタ(電王戦 2013) 50000ぐらい
Core 2 Duo 3.33GHz 27
Core i7(Haswell/3.5GHz) 224
PlayStation3 450
Apple A6(iPhone5) 26

というわけで、Deep Blue と iPhone5 は、計算速度という面では大差ないということらしい。

*1: 最初の2件以外は Wikipedia( FLOPS ) にもとづく

南三陸町の写真を撮ってきたわけだけれど

先日の記事( id:Nabetani:20130331 )は南三陸町の 2013年3月の様子を伝える写真となっている。
のだけれど。

南三陸町の写真は、私が撮ったものよりももっと良い写真・記事がたくさんある。

など。
もっとたくさんある。

未来へのキオク( http://goo.gl/dfTkc )もとても良い。

と。
写真を紹介してみるものの。
破壊された家や車の大半が片付けられた、そしてすっかり更地になった今であっても、現地を訪れたあとで見ると写真から受ける印象がだいぶ変わった。

興味のある方は足を運ぶといいと思う。
地元の人も喜ぶよ。

南三陸町へ行ってきた

はじめに

3/29の金曜に会社を休み、長女と2人で南三陸町へ行ってきた。目的はポストマッピング( http://postmap.org/user/Nabetani/com )ではなく、津波の爪痕を目にしておくこと。

一年前ぐらいに訪れておきたかったと思ったものの、当時は旅行に行く時間が取れる状況ではなかったので仕方なく。無理を言えば震災の前にも訪れておきたかったと思うけれど、震災前には南三陸町という地名を聞いたこともなかったのでそれはもっと仕方がない。

ホテルでは「震災語り部ツアー」というものをやっていて、それが目的でそのホテルにした。バス4台分、150名が参加したとのこと。

ホテルの人は、遠慮せずに観光に来てほしいと言っていた。震災の後は従業員が辞めたりしてなかなか大変だったものの、今では問題ないとのこと。被災地で観光なんて不謹慎とかそういう気持ちになられても、被災地の人達は喜ばない。露天風呂も良かったよ。

以下の写真のとおり、すっかり元通りになったなんてことは全然ないわけだけど、今のうちに行っといたほうがいいとも言える。

壊れた水門とその脇にある小屋

撮影地の google map

この写真にあるような傾いた建物やひっくり返った建物はもうほとんどなかった。
大きな建物の撤去はほとんど完了し、津波で流された建物があった場所には建物の基礎が見える更地が広がっていた。

線路のなくなった気仙沼線

地図と航空写真が盛大にずれているが、航空写真の方を見てほしい。


上記2枚の撮影地の google map

線路は津波で流されたのではなく、人間が撤去したとのこと。上記の地点は津波に洗われてないと聞いている。

一方、下記の地点は完全に水没しており、橋が失われている。

DSC01058

DSC01059

上記2枚の撮影地の google map

わかりにくいかもしれないが、写真の上下方向に線路が走っていた。二枚目は橋が流されている。

流れてきた石碑を集めていると思われる場所

2013-03-29

素材もバラバラで7つ揃っていない七福神

石碑の上に広がる斜面は、津波を浴びて立ち枯れになった木を伐採した跡だと思う。

防災対策庁舎

震災当時については

南三陸町役場防災対策庁舎屋上から撮影した津波の状況写真(pdf)

という驚くべき写真がある。あれから2年経った。

DSC01029

DSC01038

屋上にある落下防止用の手すりに捕まって難を逃れようとした人は手すりとともに流され、非常階段の手すりに捕まった人は助かったと言われているとのこと。

我々のバスツアー以外にも多くの人が訪れていた。

遠くにあった建物

防災対策庁舎の辺りから海の方を見たら解体中と思われる建物が見えた。20倍ズームで捉えた。

DSC01043

壊れた堤防

DSC01020

上記写真の撮影地の google map

以前は 1〜2メートル程度の津波はこの堤防と水門で防いでいたんだと思う。

今は半ば素通しで水が入ってくると思うが、襲われるはずの街はそこにはない。

樹状の白いカゴ

木の上に白いカゴがかかっていた。

DSC00991

DSC00992

少なくともカゴの高さまでは水が来たということだと思う。(たぶん、もっとずっと上まで)

手前の木が白くなっているのはおそらく立ち枯れ。

更地・瓦礫・雀

陸前戸倉駅からちょっと南に行ったところに瓦礫が積んであった。

DSC01003

DSC00998

DSC01002

上記3枚の撮影地の google map

語り部ツアーの方の話や Google Earth の「過去のイメージ」機能を見ると、そこは小学校や保育所があり、家や畑があった場所らしい。

今は、海までの 300m ほどの間にあるのは建物の基礎やコンクリート片がころがっている更地と、分別されて高く積まれた瓦礫しかなかった。瓦礫の上には雀の群れがいた。

オフラインリアルタイムどう書くというイベントやっている

こちらは全然更新していなかったんだが、気が向いたのでこちらでも。

去年の夏ぐらいから「オフラインリアルタイムどう書く」というイベントをやっている。

次回は http://atnd.org/events/37587

概要はリンク先のとおり

  1. 私が用意したお題について制限時間1時間でプログラムを書く。
  2. 場合によってはちょっと延長する。
  3. どんなものが書けたのかみんなで発表する。発表者以外は質問する。

という遊び。

今まで出した問題は atnd からのリンクをたどれば見られるが、いずれも

  • 数学の素養を要求しない。たぶん、中学卒業ぐらい。
  • アルゴリズムの素養も要求しない。
  • 標準ライブラリのみの C 言語でも、1時間で書ける感じ。
  • 問題を解く方法が複数ある

を目指している(あまりうまく行っていないものもあるけれど)

普通の勉強会と違って、身も蓋もない勝ち負け(つまり、書けたか書けなかったか)が生じるので厳しい部分もあるが、いままで全員実装できたことは一度もない(一人も書けなかったことも一度もない)ので、負けてもみっともないということはないと思う。

次回は 4/6(土) 。

プログラミング言語と日本の歌手

プログラミング言語のリリース年と、その年にデビューした歌手の対応表を作ってみた。

当然その年にデビューした歌手はたくさんいるわけだが、そこから適当に選んだ。選び方についてのルールは適当だが、

  • 私の知っている人。名前だけでも。
  • できればソロ。
  • 歌手デビュー前に別のことで有名だったりしない方向で。
  • できれば生きていて、歌手をしている。

という方向で考えた。

言語のリリース年も歌手のデビュー年も wikipedia による。

言語名 歌手名
Pascal 1970 かぐや姫
C言語, Prolog 1972 郷ひろみ
Scheme 1975 岩崎宏美
C++, Objective-C, Ada 1983 大江千里
PostScript 1985 斉藤由貴
Erlang 1986 徳永英明
perl 1987 酒井法子
python, haskell 1990 槇原敬之
ruby, PHP 1995 平井堅
OCaml, Java, JavaScript 1996 PUFFY
C# 2000 氷川きよし
scala, groovy, 2003 平原綾香
Clojure 2007 青山テルマ

時代の感じがつかみやすくなったような、そうでもないような。

バケツ問題1

数年前に某へなちょこで出した問題。

水がいっぱい入ったバケツ一個と、空のバケツがいくつかあり、それぞれのバケツの容量は正確にわかっている。この状態から指定された容量を量りとる、最小手数の手順を求めよ。
ただし

  • バケツからバケツに水を移す操作を1手と数える。
  • バケツからバケツに水を移す際は、注がれるバケツがいっぱいになるか、注ぐバケツが空になるまで行う。
  • 従って、水は一滴も漏れない。

例えば。バケツが3つ。10リットル,8リットル,3リットル。10リットルのバケツが満タンで、あとは空っぽ。ここから4リットル量りとりたい。
最小手数の手順は

  1. 10リットルのバケツから、3リットルのバケツに注ぐ
  2. 3リットルのバケツから、8リットルのバケツに注ぐ
  3. 10リットルのバケツから、3リットルのバケツに注ぐ

の3手(要するに、10リットルから3リットルを2回減じている)となる。
表示を短くするために、バケツに順に 0, 1, 2 と番号を振ると、
0→2, 2→1, 0→2
と、表示することができる。

なお:

  • 解がない場合はその旨を表示して終了すること
  • 最小手数の解が複数ある場合はその内ひとつを出力すればよい
  • オーバーフローや不正な入力は考慮しなくてもよい
  • バケツの容量も目的の容量も正の整数とする。

#ちなみに。rubyで書いたら40行足らず

実行例を以下に示す:(最初の数が目的の容量。次が満タンのバケツ。残りが空のバケツ)

続きを読む