Hatena::ブログ(Diary)

もうカツ丼でいいよな このページをアンテナに追加 RSSフィード Twitter

2009 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 12 |
2012 | 02 | 03 | 04 | 05 | 06 | 10 | 11 | 12 |
2013 | 01 | 02 | 04 | 06 |
2014 | 06 |

2009-06-25

[][] Problem 87 10:03  Problem 87を含むブックマーク  Problem 87のブックマークコメント

no title

素数の2乗+3乗+4乗で表わされる整数のうち5千万より小さい値の個数.

400ms.こういうのはRでも早い.

続きを読む

2009-06-24

[][] Problem 86 00:54  Problem 86を含むブックマーク  Problem 86のブックマークコメント

no title

クモとアリ,最短経路などでググると有名らしい問題がでてくるけど,それよりは単純.頂点から頂点への移動,その最短距離が整数になる場合を数えるだけ.なんとなく三角形作ればいいんだなってのはすぐ分かる.

しかしかなり手間取った.三角形を作れば必ず最短経路になるってわけじゃないし,天井とか壁とか床とか区別しないってことに気付くのも遅れた.

続きを読む

2009-06-21

[][] VC++ + Meadow 15:40  VC++ + Meadowを含むブックマーク  VC++ + Meadowのブックマークコメント

VC++Emacs風のキーバインドに設定できるけど色々中途半端なので、できたらMeadow使いたい。

とか思って調べてたらVC++からMeadow呼べることを知った。ならもうこれでいいや。

要るもの

やること

VC++で、

  • [ツール]→[外部ツール]→[追加]

で[新しいツール]を出現させ、それを

としてOK。これで何か編集中に[ツール]→[Meadow]を選択すればMeadowへ移る。

編集結果を自動で反映させるため、

の[保存する場合、変更を自動的に読み込む]をチェック。

また、ソリューションエクスプローラのファイル上で右クリックすると[ファイルを開くアプリケーションの選択]が出る。ここで[追加]をクリックし、

などとして追加したのち、それを選択して[既定値として設定]しておけば以降はソリューションエクスプローラのファイル名をダブルクリックするだけでMeadowが起動する。

参考

[][]OMakeが使えない? 08:13 OMakeが使えない?を含むブックマーク OMakeが使えない?のブックマークコメント

Windowsだからか,それとも何か勘違いしているのか.

次のファイル(hello.cpp)を用意した.

#include <iostream>
using namespace std;

int main(){
  cout << "こんにちは! \n";
  return 0;
}

omake --installした後に,OMakefileを次の様に編集した.

CXXProgram(test, test)

そうしてomakeすると次の様に出るだけでビルドされない.

*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.02 sec)
*** omake: done (0.03 sec, 0/0 scans, 0/0 rules, 0/32 digests)

うむむ….

ただこう書けばビルドされる.omake runで実行もされる.継続監視も大丈夫.

.PHONY: main
main:test.cpp
	g++-3 -o test test.cpp
run:
	./test.exe
.DEFAULT: main

XPVista共に同様.CygwingccじゃなくてMinGWを入れてやってみたけど同じ.C++じゃなくてCにしても同じ.

うーん.動くからいいか.

mzpmzp 2009/06/22 06:55 .DEFAULT: $(CXXProgram test, test)
にしたら、ビルドできました。

Rion778Rion778 2009/06/22 10:36 どうもです。
実はそれもやったんですが
*** omake: targets were not rebuilt because of errors:
<scanner scan-cxx-test.cpp>
depends on: test.cpp
というようなエラーが返ってきてしまって結局ビルドできないんです。
どうもCXXProgram(あるいはCProgram)が上手く動かないらしくて…
Windowsからgcc使ってるのが問題なんですかねえ。

2009-06-17

[][] Problem 85 22:40  Problem 85を含むブックマーク  Problem 85のブックマークコメント

no title

長方形の中に長方形を入れる方法がいくつあるのか、200万通りに最も近い入れ方を有す長方形の面積はどれだけか、という問題。

500msくらい。

続きを読む

[][][]SKKでの句点、読点変更 13:15 SKKでの句点、読点変更を含むブックマーク SKKでの句点、読点変更のブックマークコメント

SKKではデフォルトで「、。」が入力される。この組み合わせは、

M-x skk-toggle-kutouten

することによりトグルで切り替えができる。

デフォルトを変更したい場合は、~/.emacsもしくは~/.skk(SKK起動時に読み込まれる?)に次の様に書き込む。

(setq-default skk-kutouten-type 'en)

最後のシンボルにより組み合わせが指定できる。

  • 'jp → 「。、」
  • 'en → 「.,」
  • 'jp-en → 「。,」
  • 'en-jp → 「.、」

参考

2009-06-15

[][] Problem 84 02:13  Problem 84を含むブックマーク  Problem 84のブックマークコメント

no title

モノポリーでどのマスに止まる確率が高いのかを求める問題。

ルールは多少単純化されているけど、モノポリーやったことないので理解するのに苦労した。例えばゾロ目が連続して出るようなとき、振るごとに移動しマスの指示に従うのか、あるいはまとめて進むのかとか。

あとCHカードの指示で戻ったときにCCに止まるとき、再度カードを引くのかどうかもわからない(その状況に陥ってさらにカードが「当たる」確率は低いので引かないことにしてしまった)。

それで面倒なのでとりあえずモンテカルロで答だけ先に出してしまおうと思ったけれど、ルールを正確に把握してないのもあってなかなか苦戦した。

で、解いてみてスレッドのぞいてみると皆シミュレーションして答出してるのでどうもそういう問題だったらしい。

ところで未だにこの単語の意味がイマイチ分かってないのだけれど、こういうのをマルコフ連鎖と呼ぶんだろうか。

続きを読む

2009-06-14

[][] Problem 83 01:10  Problem 83を含むブックマーク  Problem 83のブックマークコメント

no title

またまた最短経路。

This problem is a significantly more challenging version of Problem 81.

と書いてあるけどProblem 81のに3行足すだけで終わってしまった…。

これ例えばダイクストラアルゴリズムを自分で実装したとしてもやっぱりProblem 81に3行足すだけで終わるような気がするんだけどどのあたりが挑戦しがいのある問題なんだろう。

続きを読む

[][] Problem 82 00:17  Problem 82を含むブックマーク  Problem 82のブックマークコメント

no title

引き続いて最短経路問題。

データはProblem 81と一緒だけど、開始ノードと目標ノードがそれぞれ複数候補を持っている。こういうときのアルゴリズムってあるのかな。

ちょっと無理矢理問いた感じはあるけどなんとか1分以内には終わった。40秒。

続きを読む

[][] Problem 81 21:55  Problem 81を含むブックマーク  Problem 81のブックマークコメント

no title

最短経路問題。

Rなんだしパッケージ積極的に使えばいいじゃないかと開き直ってigraph使って問いた。5秒。

続きを読む

[][] Problem 80 13:10  Problem 80を含むブックマーク  Problem 80のブックマークコメント

no title

平方根整数部含めて100桁計算し、桁の値の和を求めろという問題。

開平方ムズい。

gmpをまた使ってしまって13秒。

続きを読む

2009-06-13

[][] Problem 79 03:27  Problem 79を含むブックマーク  Problem 79のブックマークコメント

no title

長さは分からないパスコードの中から順番はそのままでランダムに3つの文字を抽出したリストがあるので、そのリストを元にパスコードを復元せよというような問題。

きっと色々な解き方がある。

続きを読む

[][] Problem 78 01:03  Problem 78を含むブックマーク  Problem 78のブックマークコメント

no title

引き続き分割数の問題。100万で割り切れる最初の分割数はなにか?という問題で、今度はすぐには答が出てこない。

15秒かかった。

続きを読む

[][] Problem 77 22:50  Problem 77を含むブックマーク  Problem 77のブックマークコメント

no title

分割数の様な問題。ただし支払いに使えるコインの額面は素数であると。

26秒かかった。

続きを読む

2009-06-09

[][][]Meadow+gccC++コンパイルとか 01:08 Meadow+gccでC++のコンパイルとかを含むブックマーク Meadow+gccでC++のコンパイルとかのブックマークコメント

VC++しか使ったことない&CもC++もそんなに書けない&Windowsくらいしか触れませんよheheheというアレ具合なので想像してたより苦労した。

Cygwinインストール

Cygwinからsetup.exeをダウンロード。c:\cygwin以下などにインストール。入れたのは

とその周辺。

インストールしたら環境変数のpathへC:\cygwin\binを追加。.emacsに以下の記述を追加。

;; cygwin
(setq explicit-shell-file-name "bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c")
(modify-coding-system-alist 'process ".*sh\\.exe" '(undecided-dos . euc-japan))
;; argument-editing の設定
(require 'mw32script)
(mw32script-init)
(setq exec-suffix-list '(".exe" ".sh" ".pl"))
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.:()-")

環境変数の変更をMeadowに教えるためにWindows再起動が必要。

参考

コンパイル

拡張子が.c, .h, .y, .lexのものをMeadowで開くとCモード、.C, .H, .cc, .hh, .cpp, .cxx, .hxx, .c++, .h++のものだとC++モードに移行する。どっちもcc-modeらしい。

たとえばこんなのを書いて

#include <iostream>
using namespace std;
int main(){
  cout << "こんにちは!!\n";
  return 0;
}

test.cppとかいう名前だったとする。

これを編集中にM-x compileすると、ミニバッファ

Compile command: make -k

と出る。MakefileがあればEnter叩くだけでコンパイルが始まる。あるいは、

Compile command: g++ -g -o test test.cpp

などとしてコンパイルしてもいい。-gオプションつけておけばgdb使ってデバッグできる。いちいちM-x compileするのが面倒だったら次の記述を.emacsに足しておくとC-c cでコンパイルできるようになる。

;; compileを楽に
(defun my-c-common-mode ()
  (define-key c-mode-base-map "\C-cc" 'compile)
  (define-key c-mode-base-map "\C-ce" 'next-error)
  (c-toggle-hungry-state 1))
(add-hook 'c-mode-common-hook 'my-c-common-mode)

参考

実行

(ここでつまづいてたとか恥ずかしくて言えない…)

Makefileでrunとかすると実行させられるような気がするけどよく分からない。何せ今ちょっとググった程度の知識なので…

Meadow上からだと、まずM-!してシェルを呼び出す。

Shell command:

例えばさっきコンパイルしたやつを実行したいとき、コマンドプロンプトのノリでそのまま

Shell command: test.exe

などとしてもダメ。shとかbashとかにはカレントディレクトリを"./"で教えないといけない。なので次のようにするのが正解。ミニバッファに実行結果が出力される。

Shell command: ./test.exe

もちろん拡張子は省略可。ウソつきました。拡張子要ります。

2009-06-08

[][] Problem 76 01:47  Problem 76を含むブックマーク  Problem 76のブックマークコメント

no title

アンチョコ見てしまったけれども今回は久しぶりに上手くできたと思う。

200msくらい。

そしてProblem 76はアレです。分割数! そう、数学ガール!

数学ガール (数学ガールシリーズ 1)

数学ガール (数学ガールシリーズ 1)

っても本に解答載ってるわけじゃないけど。

いやまあ載ってると言えば載ってる。分割数の一般項が。ただ読んだ人なら分かると思うけど、ちょっと試行錯誤で思いつくのは厳しい。

続きを読む

2009-06-07

[][] Problem 75 21:57  Problem 75を含むブックマーク  Problem 75のブックマークコメント

no title

30秒。どうもここのところ時間がかかってばかりいる。

続きを読む

[][] Problem 74 18:22  Problem 74を含むブックマーク  Problem 74のブックマークコメント

no title

15秒。どうも上手いやりかたが分からない。スレッドを良く読んでみるべきか。

というか、CやC++の人を見ていると結構brute forceなやり方でも常識的な時間で終わっている。Rでこの先生きのこるにはどうすれば…

続きを読む

[][][][] Problem 73 2回目 09:22  Problem 73 2回目を含むブックマーク  Problem 73 2回目のブックマークコメント

あきらめるか。

続きを読む

2009-06-06

[][] Problem 73 03:58  Problem 73を含むブックマーク  Problem 73のブックマークコメント

no title

3分かかる。ダメダメ。

続きを読む

[]『イヴと七人の娘たち』 01:37 『イヴと七人の娘たち』を含むブックマーク 『イヴと七人の娘たち』のブックマークコメント

イヴの七人の娘たち

イヴの七人の娘たち

酸素呼吸を行う細胞小器官であるミトコンドリアは独自のDNAを持っており、またそのDNAは常に母性遺伝となることが知られている。受精の際に精子に含まれるミトコンドリアは排除されてしまうため、結果として卵子細胞質のミトコンドリアだけが残るのだ。そのためミトコンドリアDNAには組換えも起こらず、DNAの多様性は突然変異のみによることになる。

その上ミトコンドリアDNA突然変異体細胞のそれに比べて起こりやすく、Dループと呼ばれる配列では、共通祖先が1万年前に生きていた2人の人間間に1塩基の違いが見付かる程度の速度で変異が蓄積していく。

このような特徴から、ミトコンドリアDNAは進化の歴史を測るものさしとしてぴったりの働きをする。そしてこの「ものさし」を手に入れた著者ブライアン・サイクスが人類の起源を次から次へと明かにしまくっていく!!

…と言えばたしかにそうではあるのだけれど、そんな一筋縄ではいかない。本書の舞台は分子生物学が急速な進歩をしているまっただ中。キャリー・マリスが彼女と一緒にハイウェイをドライブしてから数年といったころで、著者も手作りの装置でPCRしてたりする。「そもそもその手法は正しいのか」といったような突っこみがあっちこっちから入ってくる。

そんなこんなありながらもヨーロッパの人間から採取したミトコンドリアDNAをもとにクラスターを作ってみると、現代ヨーロッパ人の中に7つのクラスターがあることが明らかとなる。先に言ったようにミトコンドリアは母性遺伝なので、7つのクラスターはつまり7人の「母」が居たということを示している。

…といったところから著者の妄想爆発というかなんというか、それぞれの女性についてのちょっとした想像の物語が語られる。面白いっちゃ面白いけど、どこまでフィクションなのかあいまいな部分もあるしぶっちゃけこの部分いらな(ry

まあでも前半の色々な仮説がぶつかっては消えていくあたりは面白かった。

あと文庫が出てたので文庫で買えばよかったなと後悔している。

2009-06-04

[][]『ミミズと土』 23:39 『ミミズと土』を含むブックマーク 『ミミズと土』のブックマークコメント

ミミズと土 (平凡社ライブラリー)

ミミズと土 (平凡社ライブラリー)

今年はダーウィン生誕200周年で、『種の起源』出版150周年だそうだ(チャールズ・ダーウィン - Wikipedia)。そういやnatureで昨年あたりなんかやってたな。

ミミズはダーウィンが半世紀近い年月を費して研究した対象だ。『ミミズと土』はその集大成であり、そしてダーウィンの遺作でもある。そう、ダーウィンと言えばミミズだ。

本書の前半はミミズの習性、知性についての話題が中心になっている。ダーウィンによれば、ミミズは光を知覚できるし、ミミズは食べ物の味が分かるし、ミミズは葉っぱを穴に引き込む方法を考えることができるのだが、暖かさを求めて地表付近でボーっとしていると鳥に食われてしまうおっちょこちょいさんでもあるという。なんと愛らしい生き物だろう!!

後半はミミズが優れた埋め立て屋であることが語られる。ミミズにかかればローマ時代の建築物を地面の下に埋めておくことくらいなんてことない。そして、ダーウィンは実際に石ころだらけの原っぱが馬も自由にかけられるほど平坦な草原へとミミズの力によって生まれ変わる様を目撃している。

これらの驚くべき事実は、ダーウィンの脅威的な観察力と根気強さ、そして数多くの友人と、息子たちの助けがあってこそ明らかとなったものだろう。本書を通じてダーウィン自身と友人たちの手による観察事実が次から次へと提示され続ける。一気に読もうとするとちょっとうんざりするくらい。しかしその量に比例してダーウィンの推察の説得力は増して行く。

容易に原因を推定できる事実(ミミズが糞塊を地表面へ詰む)から、容易には原因を推定できないような事実(巨大な石が埋まっていく)の原因を演繹していく手法は『種の起源』同様に鮮やかで、現代の我々も十分参考にしうるものだと思う。

[][]『植物はなぜ5000年も生きるのか』 22:27 『植物はなぜ5000年も生きるのか』を含むブックマーク 『植物はなぜ5000年も生きるのか』のブックマークコメント

メインタイトルで「植物は」とは言うものの、動物の話題も比較的詳細に語られる。動植物、大きなものから小さなものまで、あるいは生物の誕生から進化の過程と話題は広い。

つまるところ、これは「時間」というものを中心に据えて語られる生物の教科書だ。もうちょっとぶ厚くして細かいところまで突っ込んでもいいかなと思ったけど、この話題の手広さはブルーバックスの「軽さ」あってこそかもしれない。

といっても割と細かくて興味深いネタもちりばめられている。

例えば、ヒノキはスギと比較すると耐久性に優れているにもかかわらず、国内で最長寿の樹木はスギであるのはなぜか?といったこと。

それはヒノキが建築材として非常に優れているから、寺院や都の建築ラッシュの際に山奥まで調べつくして切りまくった結果だそうだ。もしもこれほどまでに伐採されなければスギよりも長寿なヒノキがあったかもしれないと著者は言う。

そんな感じで案外知らないことが多く載ってたので面白かった。

2009-06-02

[]読んだ 14:08 読んだを含むブックマーク 読んだのブックマークコメント

『罪と罰』ノート (平凡社新書 458)

『罪と罰』ノート (平凡社新書 458)

罪と罰亀山訳は読んでない。読もうかどうしようか。

2009-06-01

[][][] Problem 4 21:13  Problem 4を含むブックマーク  Problem 4のブックマークコメント

no title

総当たりしたときのスピードが段違い。

続きを読む

[][][] Problem 3 17:05  Problem 3を含むブックマーク  Problem 3のブックマークコメント

no title

素因数分解するメソッドが用意してあるとかそんなのアリなの。

続きを読む