/ 最近 .rdf 追記 設定 本棚

脳log[2012-01-19~]



2012年01月19日 (木)

最終更新: 2012-01-20T00:09+0900

[ProjectEuler] Problem 10, 12, 14, 17, 19, 21, 23

穴埋め。解ける問題がはやなくなってきたから……(完全になくなってはいないはずっ)。

 Problem 10

時間コストを空間コストに置き換えて。

arr = [true] * 2_000_000
sum = 0
2.upto(arr.size-1){|i|
	next unless arr[i]
	sum += i
	i.step(arr.size-1, i){|j|
		arr[j] = false
	}
}
p sum
p Process.times

 Problem 12

Rubyに頼った。prime_divisionのこと。

require 'mathn'

trinums = lambda{
	tri, n = 0, 1
	return lambda{
		tri, n = tri+n, n+1
		return tri
	}
}.call

loop{
	tri = trinums.call
	div = tri.prime_division.inject(1){|d,_| f,e = *_; d*(e+1) }
	if 500 < div
		puts tri
		p Process.times
		exit
	end
}

 Problem 14

ゴールから攻めようとか小賢しいことは考えずに。

number_of_chain = lambda{
	memo = {1=>1}
	this = lambda{|n|
		return memo[n] || (memo[n] = 1 + this[n%2==0 ? n/2 : 3*n+1])
	}
	return this
}.call

p (1...1_000_000).max_by{|_| number_of_chain[_] }
p Process.times

 Problem 17

面倒なだけ。

cc = lambda{
	return this = lambda{|n|
		count, num = 0, n

		digit1000 = num / 1000
		if 0 < digit1000
			count += this[digit1000] + 'thausand'.length
			num -= digit1000 * 1000
			count += 'and'.length if num != 0
		end

		digit100 = num / 100
		if 0 < digit100
			count += this[digit100] + 'hundred'.length
			num -= digit100 * 100
			count += 'and'.length if num != 0
		end

		digit10 = num / 10
		if 2 <= digit10
			count += {
				20=>'twenty'.length,
				30=>'thirty'.length,
				40=>'forty'.length,
				50=>'fifty'.length,
				60=>'sixty'.length,
				70=>'seventy'.length,
				80=>'eighty'.length,
				90=>'ninety'.length,
			}[digit10*10]
			num -= digit10 * 10
		end

		if num != 0
			count += {
				1=>'one'.length,
				2=>'two'.length,
				3=>'three'.length,
				4=>'four'.length,
				5=>'five'.length,
				6=>'six'.length,
				7=>'seven'.length,
				8=>'eight'.length,
				9=>'nine'.length,
				10=>'ten'.length,
				11=>'eleven'.length,
				12=>'twelve'.length,
				13=>'thirteen'.length,
				14=>'fourteen'.length,
				15=>'fifteen'.length,
				16=>'sixteen'.length,
				17=>'seventeen'.length,
				18=>'eighteen'.length,
				19=>'nineteen'.length
			}[num]
		end
		return count
	}
}.call

p (1..1000).inject(0){|sum,n| sum + cc[n] }

 Problem 19

問題文が難しかった。閏年の条件として "A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400." って書いてあったけど、centuryって XX01年から XY00年の 100年間を指す語だと思ってるから、"a century"が XY00年のことだけを示してるとは思わなくて、結果的に 100の条件を読み飛ばした上に 400の条件を逆にとらえてた。

days_of_month = lambda{|year,month|
	return 31 if [1,3,5,7,8,10,12].include?(month)
	return 30 if [4,6,9,11].include?(month)
	return 29 if year % 400 == 0
	return 28 if year % 100 == 0
	return 29 if year % 4 == 0
	return 28
}

dow = 1 # 日月火水木金土=0123456. 1=Monday. 1900-01-01 was a Monday.
(1..12).each{|month|
	dow = (dow + days_of_month[1900,month]) % 7
}
# Now dow indicates the day of 1901-01-01.

count = 0
(1901..2000).each{|year|
	(1..12).each{|month|
		count += 1 if dow == 0
		dow = (dow + days_of_month[year,month]) % 7
	}
}
p count

 Problem 21

愚直に(←これしか書いてなくない?)。

d = lambda{|n|
	divsum = 1
	t, tmax = 2, n
	while t < tmax
		q, r = *n.divmod(t)
		divsum += (t!=q ? t+q : t) if r == 0
		t, tmax = t+1, q
	end
	return divsum
}

p (1..10000).inject(0){|sum,n|
	dn = d[n]
	sum + (n < dn && d[dn] == n ? n+dn : 0)
}

 Problem 23

そのまま(←愚直にを言い換えただけ)。

class Integer
	def abundant?
		divsum = 1
		t, tmax = 2, self
		while t < tmax
			q, r = *self.divmod(t)
			divsum += (t!=q ? t+q : t) if r == 0
			t, tmax = t+1, q
		end
		return self < divsum
	end
end

expressible = [false] * (28123+1)
abundant = []
(1..(28123-12)).select(&:abundant?).each{|n|
	abundant << n
	abundant.each{|a|
		break if expressible.size <= a+n
		expressible[a+n] = true
	}
}
p (1..28123).inject(0){|sum,n| sum + (expressible[n] ? 0 : n) }

2012年01月15日 (日)

最終更新: 2012-01-17T01:44+0900

[tDiary] SourceForge.net: tDiary: TDiary::Plugin の多重初期化を減らしたい

自分の稼働中の tdiary.rbを見てみると該当部分はこうなっていた。

def load_plugins
	calendar
	@lazy_diaries.update( @diaries )
	if @plugin
		@plugin.diaries = @lazy_diaries
		@plugin.date = @date
		@plugin.last_modified = last_modified
		@plugin.comment = @comment
		return @plugin
	end
	@plugin = Plugin::new(
		'conf' => @conf,
		'mode' => mode,
		'diaries' => @lazy_diaries,
		'cgi' => @cgi,
		'years' => @years,
		'cache_path' => cache_path,
		'date' => @date,
		'comment' => @comment,
		'last_modified' => last_modified,
		'logger' => @logger
	)
end

if @plugin ... end部分はたしか kazuhikoさんのコードだったような……。

そうそうこれこれ*。>>脳log[2009-08-06-p01] tdiary.rbと plugin/navi_user.rbにパッチあて(plugin/recent_list.rbの分は使用してないのでスルー) + セクションごとの最終更新日時に一票 >>[tDiary-devel] all_filtersとかload_pluginsが呼ばれ過ぎで遅い件


@plugin.diariesと @plugin.dateと @plugin.comment、それとたぶん @plugin.last_modifiedに更新が必要なのはすでにわかってた話なんじゃないの、ってことなんだけど、このコードは tDiary-3.0.1になったときに失われてる。svn logは「Merge branch 'master' into svn」なので経緯は不明。


>>Re: [tDiary-devel] #194 blog-category.rbが動作しない

* 「@plugin」で引っかからなかったので「捨ておけぬ」でサイト検索して見つけた。


2012年01月14日 (土) ウィンカーのオートキャンセルが邪魔で邪魔でしょうがない。まだ必要なのに解除され再度出し直し、そういうときはロックがかからないからしばらく押さえ続けて、もう車の向きが変わったからとオートキャンセルを待たずに解除して、ということが常だ。まったく気に入らない。バイクのウィンカーが無音で、手動キャンセルだったことが影響してる。そんなんじゃあ忘れやしないし、交差点を直進するときや何でもないときにキャンセルボタンを押す癖がつく(関係ないがヘッドライトの点灯・消灯・LOW・HIGHもついつい確認してしまう)。そんなわけでオートキャンセルはいらんお世話でしかない。俺は、馬鹿な(思い通りにならない)機械を、憎んでる。冷静さを失うほどに。まして、そいつが自分のことを気がきいてると勘違いしていようものなら……(たたきつぶしてやる!)。


2012年01月13日 (金) なぜ C++で NULLチェックをするかといえば、そのパラメータが参照でなくポインタである時点で、省略可能な引数であることが示唆されているわけで(省略する場合は通例 NULLか 0を渡す)、その場合 NULLとは異常値ではなく想定された値。ぬるぽを回避する責任は受け取った関数側にあると考えてチェックしちゃう。


2012年01月09日 (月) どうでもいい話。call by valueと call by reference. 「参照(※)の値渡し」と「値の参照渡し」を区別する必要性が、まずない。(※ここでいう「参照」っていうのは「特定の言語において参照と呼ばれるもの」程度の意味しかないんでしょうね。そこからまた不毛な議論が……。) だから混同が起こるのだが、最初の定義にこだわっても得るものはない。だからどうでもいい。そこはコンパイラなど言語処理系の領域で、言語(利用者)の関知するところではない。不変オブジェクト(JavaScriptの文字列とか)であれば特に値(実体が遍在する)だ参照(実体がひとつ)だ値渡しだ参照渡しだと区別する必要がない。振る舞いは同じだ。だいたい参照って何?言語が用意したポインタ(メモリアドレスとその幅と値の解釈)の代替じゃないの?代替の行うことが値の追加の解釈だとすれば、それもポインタに含めうる。で、ポインタは値だ。参照が概念的な存在なのと、視点の存在するレイヤーによって同じものが値(と呼ばれるもの)だったり参照(と呼ばれるもの)だったりするからその対象が定まらないんだよ。■ 俺が JavaScriptと Rubyを使い始めた初期にそれらの言語を気に入った点には、扱いがどちらにもなりうる文字列の振る舞いがはっきりしていたことがある(JavaScriptでは文字列を変更することができない。Rubyでは明示的にコピーしなければ変更が伝播する)。C#も classと structの対比と boxingの説明で明確にしてた。いつのまにか関数呼び出しから話がそれてるが、結局、関数の外に影響するかしないかしか興味がないからだ。■ Wikipedia(ja):引数では値渡しと並記されてるのは変数渡しで、参照渡しは変数渡しの実装手段のひとつだという位置づけだなあ。■■■共有渡し。「参照渡しとの大きな違いは、関数内部での仮引数への新しい値の代入は、外側の対象には影響しない(参照渡しの場合は影響します)ということです。」そういう違いがあったのね。それは「ゴツいシンボル」が存在しない JavaScriptや Rubyと C++の、言語レベルの違いとして処理してる(ので意識してなかった)なあ。


2012年01月08日 (日) [正規表現][Ruby] \wと \bの話。俺は Takataさんが期待したように、Perlと Pythonに倣った動作が自然なものだと思う。正規表現の利用者として、正規表現にはカギ括弧付きで使われる「改行」と「単語」という言葉が一部のメタ文字の動作仕様に現れると思ってきた。$と ^と .と \wと \bのことだ。\wの意味を規定する「単語」と、\bの意味を規定する「単語」が別物だなんて事態は、事をややこしくするだけではないか。一体どれだけの正規表現利用者が Rubyに固有のこだわり仕様に気付くというのか。他の実装の利用経験から手探りで使う人間も多いだろうに、落とし穴を掘るまねはよせ。■「\b は \p{Word} に従う」というルールはいただけない。\p{Word}は知らなくても \wと \bは知ってるという人間は大勢いる。■もしかして、Ruby 1.8では /\w/sとか /\w/eが ASCII範囲外の全ての文字にマッチしてた?ドキュメントでは[0-9A-Za-z_0-9A-Za-z]のようなものだと言いながら? \dは全角数字にマッチしないままで?その精神がわからん。そして俺は(Rubyの) \wを知っていたとはいえないようだ。もはやどうにでもなれ。■(ドキュメントを読んだついで) 「\b 文字クラス指定の外では語境界 (\w と \W のあいだにマッチ)。文字クラス指定内ではバックスペース (0x08)。」


2012年01月06日 (金) 電球型蛍光灯を余っていた白熱電球に換えた。ベッドサイドの熱源として。小市民シリーズ・冬期限定はいつでる?


2012年01月04日 (水) 顔面が凍りつくかと思った。フェイスマスクかネックゲイター。


2012年01月03日 (火) うちにも掃除のおばちゃんがおるなあ。タップに何がつながってるか気にせず根っこから抜いてしまう雑な人が。電話の着信、できなくなるよ。■■■ 最近の佐川。「お近くの配達店まで輸送中です」のまま荷物が到着している。できないなら潔くやめろ。誤っているのは、わからないということを知っているよりなお悪い。

最終更新: 2012-12-06T20:50+0900

靴を買った(←20120101)。

 今の。BROOKS サハラXCR 4E 26.0cm 茶色 ¥10k

今のは2足目(ローカットのバリエイションも含めたら3足目)で、通算7、8年くらい履いてるような。GORE-TEX. 一万円で買えるのがよい。 ブルックス サハラXCR ブルックス サハラXCR

ブルックス
¥ 11,550
アマゾンの画像と違い赤っぽくはない。不満はないけど同じモデルがもう売ってないので新規開拓。今の靴を買ったときに月星のやけどどうやとすすめられた靴の、足を両手でがっちり包み込むようなホールドとフィット感を今になって探してみたくもある。

 新しいの1。TrekSta NEST NST-01 26.5cm DKブラウン ¥14k

韓国企業らしい。そういうところに目がとまるほどここ数年で偏見がすり込まれてきた。韓国のプレゼンスが上がってることの裏返しかね。 [トレクスタ] TrekSta NEST NET-01 [トレクスタ] TrekSta NEST NET-01

TrekSta(トレクスタ)
¥ 18,375
好みよりはカットが浅いけれど、このなかなか見ない色(DKグレー, DKブラウン)と形が気に入った。人工的というか生物的・有機的というか。……正反対だけど。つま先のでこぼこは見なれないけど Vibramの five fingersほどは奇抜じゃないでしょ。正中からずれて内へ向かって縫い合わせたような甲の合わせ目も特徴的で気に入った部分だけど、ここには二つの問題を発見した。ひとつ。防水性能。甲の合わせ目の一番先まで切れ目が入っていて、着物のように左右を重ねてるだけ。間をつなぐ袋状の部分がないのでおそらく水が流れ込む。カットが浅くて足首から流れ込む雨を心配していたが足の甲からも流れ込むとあればもはや雨には無力。GORE-TEXのタブはかざりです。ふたつ。べろの問題。(自分が浅い靴をはき慣れないだけかもしれないけど) べろが短く、左右の甲部の延長として存在しているために、折り返す力につっぱって抵抗する。つまり、足首が痛い。自転車をこぐように足裏を水平に保ったまま膝を上げると足首に腱が持ち上がるのが見えるが、この部分を押しつぶそうとする。わりと致命的な気がするけど他が気に入ったので何とかなることに期待してる。

サイズ。25.5は履けるけどピチピチ。コンプレッションタイプの Tシャツであればこれが適正サイズということになるんだろうけど、余裕が欲しい。26.5はがばがばではない適正な余裕がある。ただ、この靴の性格からするともう少し絞って 26.0cmがよいかもしれない(だが在庫がなかった)。今履いてる 26.0cmの靴と同じサイズということになるが余裕は .5cm分ほど少ないだろうと思う。

インソールとミッドソール。指のアーチ部分に入り込むように、つかみたくなるようなふくらみがある。土踏まずにもふくらみがあるから、歩行時に母指球にかかる力を受け止めて支えるようにくぼんでるとも言える。足がずれる不安がなくてすごく良い。これを知ったから、次のサルティスの足先のホールドに不安を感じた部分もある。

ひも。引っぱればわりと先の方まで締まる。一回折り返すとその先にはまるで力が伝わらない、どうやって締めたものか困るものが少なくないが、これは違う。ひもを通す部分がファブリックなのは耐久性に大いに不安を感じる。

この靴に向けたものか一般的な注意か判断できなかったけど、ポリウレタンソールに対する注意書きがあった。

 @2012-08-06 その後

べろの当たりは全く問題なし。いい具合にくたびれたのかな。足の方が勝った。ソールは日常使用には硬すぎるかも。接地面積が確保できないうえグリップもいまいち。雨の日の階段では相当気をつかう。足の甲はやはり靴下が濡れてる。あとは、汚れやすい(汚れが目立つ)。爪先部分がまだら模様だ。石けんでは落ちなかった。洗ったときに確認したが水漏れはなし。大きな問題はなく概ね満足。

 新しいの2。asics サルティス ウォーキングシューズ(WSR644) 3E 25.5cm 茶色 ¥13k

文句のつけどころがない。見ためだけで決めたらいい。 [アシックス] asics サルティス ウォーキングシューズ [アシックス] asics サルティス ウォーキングシューズ

asics(アシックス)
¥ 22,050
あえて気になる点を挙げると、足先部分に高さがありすぎる。素材(牛革)が柔らかいから設計段階での余裕は必要なかったかも。.5cm今より小さい 25.5cmでも足先のホールドに若干の不安があるから、25.0cmも検討対象に入る。防寒のための厚手のウールの靴下を重ね履きしたらジャストフィット。春夏秋にはどうしようかなあ。縮まないかな。逆に伸びたり?

 ZLOKZ

ZLOKZ(ジロックス)カッパーブロンズ(ZL1-CB) ZLOKZ(ジロックス)カッパーブロンズ(ZL1-CB)

-
¥ 1,260
気付いたこと。ZLOKZでどれだけ足を締め上げられるか、脱ぎ履きのために紐の長さにして何cmのゆるみを生み出すことができるかは、紐を通す穴の左右の間隔またははしごの最上段と最下段の距離で決まる。TrekStaの方は最初から適さないとわかっていたが、サルティスに関しても、どちらの長さも足りなかった。足が抜けるほどには緩まない。片足に2個使えば抜けはしたが、もうひとつ気付いたこと。紐は締め上げるのに適している。足を締め上げるのと同じか少し余分な力が ZLOKZを紐に引っかける時にも必要になるが、これはなかなか難儀だ。俺を満足させてくれるのはスキー靴のようなバックルしかないかもしれない。結局どうしたか。つま先に近い方の脱ぎ履きに影響しない部分だけを一度締め上げて本結びをつくった。そこより上の部分のひもを締めて結ぶ*手間は受け入れよう。ZLOKZの使い所は模索中。やっぱり、最上段がフックになってる靴だと結びっぱなしのひもをぎゅうっと引き絞って手首を返して引っかけるだけで済むから楽だしよく締まる。難点はひもが傷みやすいのと手袋をしてるとそちらも人差し指に穴が空きやすくなること。

* ねじってねじってちょうちょを作ってその羽をまた結んで。


2012年01月01日 (日) 靴底から浸水してくるほどソールが減ってきた。もはや GORE-TEXの意味がない。かかとには切り傷があり、ひもも外皮がむけて無残な姿をさらしている。アマゾンで3種5足注文。返品前提。■ ZLOKZなんて商品があるのね。最上部がフックになってない紐靴にはこれを使おうかな。がちがちに縛るのが好きだから金属製ってのがいい。だがひと組でも結構なお値段。いやいや Amazonでは全くそう書かれてないけど楽天市場では同じような値段で1ペアになってるな。2個買う必要は必ずしもない、のかな?■なかった(@20120103)。


2011年12月30日 (金) Yahoo! JAPAN IDは持ってません。

最終更新: 2011-12-31T11:16+0900

Q&A 「サクラエディタをインストールしたんですが……」

Q.サクラエディタをインストールしたんですが、「○○.f90」ファイルの関連付けが上手... - Yahoo!知恵袋

A.脳log[2006-03-21-p01] プログラムから開く->プログラムの選択->参照 で選んだアプリ(仮に hoge.exeとする)がプログラムの一覧に追加されなくて困ったときは

質問文にある「前デスクトップに置いたときにはうまく動作したんですが、Dドライブに移動してからこのようになってしまいました。」というのがポイントで、sakura.exeというレジストリキーの下の方にデスクトップにあった sakura.exeへのパスが値としてすでに設定されているのが原因ではないかと。


2011年12月28日 (水) Commit 9cfd23f75d93834edb628ac33c54de3647e6e9d7 to tdiary/tdiary-core - GitHub」 .gsubは気持ち悪くない? .chomp(ext)+".js" とかは?■■■って、次のコミットっ。■ちなみに、Windowsで「Dir["*.coffee"] #=> ["black.coffee", "KEY.COFFEE"]」 extは毎回 filenameからとるか iフラグをつけたパターンにしたい。■■■ (脈絡もなく) JavaScriptってわりと読み込み順番依存がある印象。SHJSはあるバージョンから依存をなくした(3行の初期化コードをばらまいた)けど、jQueryプラグインは?ソートしてから順に読み込んで大丈夫?


2011年12月27日 (火) さんばんそろばん。小学生だったか中学生だったか学校で一、二時間だけ授業があった。あれが未だにわからない。かけた時間が絶対的に少なすぎるのだろうけど、ちょっと読みにくいメモ代わりでしかなかった。玉と空中の数字を暗算して結果をパチパチとメモすることの繰り返し。いま想像するとあれは計算(玉と数と演算子の組み合わせ。掛け算割り算の分解のしかたはわからんが)を決まった手続き(玉の動き)に変換して手で計算する装置だったんじゃないかと。タイガー計算機!■■■@2014-07-29「忘れられた八算:「九九」より使われていた割り算版「九九」 | 雑学界の権威・平林純の考える科学」「八算は九九と同じくらい一般的でしたし、時には掛け算の九九より好んで使われることも多かったといいます。(中略) 八算とそろばんを使うと、「5(に限らずある数字)で割り続ける」という作業がとても簡単だったからです。」