/ 最近 .rdf 追記 設定 本棚

脳log[2011-08-11~]



2011年08月11日 (木) [Ruby] 配列などコンテナとその要素をまとめて freeze! する freeze! メソッドが欲しい。

最終更新: 2011-08-20T02:11+0900

[ProjectEuler] Problem 96, Problem 97, Problem 99, Problem 93

 Problem 96

ナンバープレイス。30秒くらいかかります。数独ソルバは前にも書いたことがある(20100511)。その時とくらべてしたことといえば優先度を付けたくらい。場合によってそれが効果的なのは Problem 83のとき(20110325p01.03)に実感してる。

def main
	tl3digits = []
	numarr = ''
	DATA.each_line{|line| line.chomp!
		if /^\d{9}$/ =~ line
			numarr << line
			tl3digits << solve(numarr)[0,3].to_i if numarr.size == 9*9
		else
			numarr = ''
		end
	}
	puts "#{tl3digits.size} puzzles were solved."
	puts "The sum of 3-digit numbers is #{tl3digits.inject(&:+)}."
end

def solve(nums)
	pns = possible_numbers(nums) # [[index,X,Y,...],...]
	pns_shortest = 10
	pns_shortest_index = -1
	pns.each_with_index{|pn,i|
		if pn.size-1 < pns_shortest
			pns_shortest = pn.size-1
			pns_shortest_index = i
		end
	}
	if 10 <= pns_shortest
		return nums # solved!
	elsif 0 == pns_shortest
		return nil # false branch. no solution.
	else
		pn = pns[pns_shortest_index]
		index = pn.shift
		return pn.map{|n|
			nums_ = nums.dup
			nums_[index] = n
			solve(nums_)
		}.compact[0] # nil or solution
	end
end

def possible_numbers(nums)
	pns = []
	(0...9).each{|y|
		(0...9).each{|x|
			i = index(x,y)
			next unless nums[i] == ?0
			pns << [i] + ((?1..?9).to_a - determined_numbers(nums, h_indices(x,y)) - determined_numbers(nums, v_indices(x,y)) - determined_numbers(nums, b_indices(x,y)))
		}
	}
	return pns
end

def index(x,y)
	return x + y*9
end
def h_indices(x,y)
	return y*9 ... (y+1)*9
end
def v_indices(x,y)
	return (0...9).map{|y| x + y*9 }
end
def b_indices(x,y)
	i = index(x-x%3, y-y%3)
	return [i, i+1, i+2, i+9, i+10, i+11, i+18, i+19, i+20]
end
def determined_numbers(nums, indices)
	return indices.map{|i| nums[i] }.reject{|n| n == ?0 }
end

main;

__END__
content of sudoku.txt here.

 Problem 97

Bignumがある Rubyでは関係ないけど、64ビット整数を前提に小細工(ループ展開)。

ten = 56866
978807.times{
	ten = (ten * 256) % 10000000000
}
p (ten + 1) % 10000000000

 Problem 99

場違いに簡単な問題。

max_lineno, max_number = 0, 0
lineno = 0
DATA.each_line{|line| line.chomp!; next if line.empty?; lineno += 1
	base, exp = *line.split(",", 2).map(&:to_i)
	number = exp * Math.log(base)
	max_lineno, max_number = lineno, number if max_number < number
}
p max_lineno
__END__
content of base_exp.txt here.

 Problem 93

スクリプトは不完全。4つの数{1,2,5,8}と四則演算とカッコを使って 36を作る方法がわからない。

Ops = [:+, :-, :*, :/].freeze
Ops3 = Ops.product(Ops, Ops).freeze
max_fnxn = 0 # fnxn: first non-expressive number
max_fnxn_c4 = nil
(0..9).to_a.combination(4){|c4|
	xns = [true]
	c4.permutation.to_a.product(Ops3).each{|_| nums, ops = *_
		num = nums.last.to_f
		3.times{|i|
			num = num.send(ops[i], nums[i])
		}
		xns[num.to_i] = true if num.finite? and 0 < num.to_i and num.ceil == num.floor
	} # 24 * 64
	fnxn = xns.index(nil) || xns.length
	if max_fnxn < fnxn
		max_fnxn = fnxn
		max_fnxn_c4 = c4
	end
} # 210
puts "{#{max_fnxn_c4.sort.join(',')}} forms 1 to #{max_fnxn-1} numbers."

例えば、(5 - (1/2)) * 8 = 36。数字の順列 ABCDと演算子の順列___をそのまま連結して A_(B_(C_D)) を作るだけでは全ての式を網羅できてなかった。左右対称になるのを除いて、次の 3通りに順列と順列を組み合わせた。((A_B)_C)_D, (A_(B_C))_D, (A_B)_(C_D)

Ops = [:+, :-, :*, :/].freeze
Ops3 = Ops.product(Ops, Ops).freeze
Evaluate = lambda{|exp|
	s = []
	until exp.empty?
		h = exp.shift
		if h.kind_of?(Symbol)
			s[-2] = s[-2].send(h, s[-1])
			s.pop
		else
			s.push(h)
		end
	end
	return s[-1]
}
max_fnxn = 0 # fnxn: first non-expressive number
max_fnxn_c4 = nil
(0..9).to_a.combination(4){|c4|
	xns = [true]
	c4.map(&:to_f).permutation.to_a.product(Ops3).each{|_| nums, ops = *_
		[
			[nums[0], nums[1], ops[0], nums[2], ops[1], nums[3], ops[2]], # ((A_B)_C)_D
			[nums[0], nums[1], nums[2], ops[0], ops[1], nums[3], ops[2]], # (A_(B_C))_D
			[nums[0], nums[1], ops[0], nums[2], nums[3], ops[1], ops[2]]  # (A_B)_(C_D)
		].each{|exp|
			num = Evaluate.call(exp)
			xns[num.to_i] = true if num.finite? and 0 < num.to_i and num.ceil == num.floor
		} # 3
	} # 24 * 64
	fnxn = xns.index(nil) || xns.length
	if max_fnxn < fnxn
		max_fnxn = fnxn
		max_fnxn_c4 = c4
	end
} # 210
puts "{#{max_fnxn_c4.sort.join(',')}} forms 1 to #{max_fnxn-1} numbers."

2011年08月06日 (土) これまで何度も Operaを使ってみようとして 10分もせずに挫けた理由。Tabキーがフォームにしかフォーカスを移動しない。Ctrl+矢印だとつきとめたので半年後くらいにまた試す。■■■Opera. 画面内の要素に一発でフォーカスが当たるのはすごく良いんだけど、まさしく前々から望んでいた機能なんだけど、Ctrl+↓だと画面内の一番下、Ctrl+↑だと画面内の一番上の要素にフォーカスするのはいただけない。そんなんでは Ctrl+(↑↓↓↓……)とか Ctrl+(↓↑↑↑……)みたいな操作を常に要求されてしまうではないか。キーを押し直したくはない。■■■@2011-08-10 必ずしも一番上とか下とかではなかった。予測できません。


2011年08月05日 (金) 「○○する」と書かず「○○となる」と書く例を頻繁に見かける。ぎごちなくみえて好きじゃない。


2011年08月04日 (木) 戦闘機にとって人間は脆弱なパーツに過ぎない。


2011年08月03日 (水) はてブで『耳刈ネルリ』の文字をみかけた。売れるといいね。次作を待ってるんだけどファミ通文庫は『荒野の恋』や『暴風ガールズファイト』『カーリー』を最後まで出せなかった根性なしだからなあ。『ヒツギでSOSO!』の人も続刊がないし、森橋ビンゴの『ラビオリ・ウェスタン』も単発で終わっちゃった。売れる物を売るだけじゃ先細りするばかりなのに。もっと、俺好みのを。

最終更新: 2011-08-04T03:29+0900

[tDiary] PageDownキーによるスクロール量をごにょごにょするプラグイン。

日と日の境が行き過ぎてしまわないようにスクロール量を制限する。

うっとうしいかな? スムーズスクロールも効かないしな。でも AutoPagerizeの機能の一部としてあってもいいような気もする。

動作確認済み> Firefox 5.0, Internet Explorer 9, Safari 5.0.2, Opera 11.50

* この日記(tDiary-2.3.3.20091124)にはまだ js_urlメソッドとか enable_jsメソッドとか無いのです。


2011年08月02日 (火) [98][Vista] フォルダの、エクスプローラでの表示名を変える方法。フォルダに読み取り専用属性を付ける(=>中の desktop.iniを読ませるため)。[.ShellClassInfo](改行)LocalizedResourceName=あああ(改行) という内容のテキストファイル(文字コードはメモ帳のいう「Unicode」)を desktop.iniという名前でフォルダの中に作成する。こちらは Vistaになってからだと思うけどファイルの表示名も同じ方法で変えられる。[LocalizedFileNames](改行)Windows Media Player.lnk=Windowsメディアプレイヤー(改行) みたいなフォーマット。explorer.exeを再起動しないと反映されないかも。


2011年07月28日 (木) Amazon「持っている商品(2384)」「購入済みの商品(451)」これ、unique idの数かな? アマゾンは最近ウィッシュリストの表示設定のデフォルトを「未購入」にして、変更された表示設定を保存したりはしてないけど、定期おトク便を使わずに定期的に消耗品を買うための「消耗品」リストを作ってるのです。表示されてないことで買い逃したり、しましたがそれでいいの? ひとつ買えば足りるものに関しては買ったら削除という運用で間に合ってたから余計なお世話。■■■ (今の携帯電話を使い始めた) 2007年10月から、代引きを除いて、累計 48万1675円。月当たり 10471円。多くも少なくもない印象。数年前まではリアル書店がメインだった。今は本なら丸善&ジュンク堂のネット書店。■■■ 最初の注文は……、2003年3月18日!『花ごよみ』『ももいろさんご 2』(花見沢 Q太郎)! やはりエロは世界を変えるな。(参考) 2003年に買った本(※意図的に登録してない本があるんだけどちょっとだけ漏れてた。もういいか)。


2011年07月26日 (火) 「九電やらせメール」(※やらせっていうと不正の主体が番組にあるみたいだ) 今日の新聞でやっと近い意見を見かけた。いわく、アメリカ的な価値観では動員をかけること自体は否定されない。そうでしょうとも。俺は呼びかけが大した効果を持つとは思わないし、勤め先を守るために応じる人間がいたとしてもそれは自然なことだ。たまたま九電やその関連会社に勤めていて、原発を稼働させることが自分らの利益にかなうと考えたのなら行動すればいい。そういう人を含む多くの人間を雇用しているのならそれは九電の強さだし声が大きいのも当然の結果。まあ俺は、無批判に従うやつにも会社に属する自己の利益しか考えられないやつにも「社畜乙」と言ってやりたいが。やらせメールを問題にして、それを排除するようなバイアスをかけることで「正しい結果」(※そんなものが存在するかはさておき) が得られると信じるような人間は注意した方がいい。最近のお手軽な世論調査のたぐいにせいぜい振り回されないことだ。ネットだと調査手法や設問の穴がすぐに掘り出されてバランスを取りやすいんだけどね。一方的なメディアはもうダメ。### まわりの言うことを聞くいい子でいても評価はされない。辞めるまでに何をやったか(あるいは何をやらなかったか)が全て。評価されるのは首相だけではない国会議員も首相が替わるまでに(※替わってからでは断じてない)何ができたのかを問われるべき。立法はお前らの仕事だ。■■■@2011-08-01 くだんの番組って国の番組だったのね。なら「やらせ」で納得。最近になって説明会での自作自演に基づく、虚偽のアリバイ・実績作りも報道されたけど、そんなのは海堂尊のエンターテイメント小説にも出てきたわ。当事者にとっては驚くに値しない話でしょう。


2011年07月24日 (日) 一重まぶたと二重まぶたの見分け方を検索……たぶん ふたえだ な。


2011年07月23日 (土) [買] SAPPHIRE ATI RADEON HD6850. 6000シリーズには色々と微妙な点があるが、ミンサガとヴァルキリープロファイル2を高解像度でプレイする目の前の誘惑には勝てない。今の X1600では Direct3D9(Hardware)を選んでも CPUが 2コアフルロードなので GPUを変えただけで十分か不安。### [買] A-DATA DDR3 PC3-12800 4GB 2枚組。Vistaは 4GBだとページファイルが必要なので追加したかった。フライトシムをプレイするにも足りなかった。今差さってる Firestixの赤いヒートスプレッダに対応して黒いこれを。初めて見たときから 3000円も下がって 5000円で売ってるけど、パッケージが変わってるらしく。中身もまた。

最終更新: 2011-07-24T00:52+0900

[COSMOS] はじめての OC. それから、メモリと GPUのアップグレード。

 CPU倍率の上限を x14から x16へ。

PCSX2がコアを使い切ってるから CPUがネックになってる可能性もあるかと思って(ビジーウェイトかもしれんけど)。それに、半端な 3コア CPUとはいえ Black Editionでもあることだし。

FSBが 200MHzなので CPUの動作周波数の上限が 2.8GHzから 3.2GHzへ。CrystalMark2004R3のスコアの変化は以下の通り。

before(2.8GHz)after(3.2GHz)
総合126599139220+12621
ALU3338237922+4540
FPU3396139318+5357
MEM2664129932+3291
HDD104188864-1554
GDI90009961+961

D2D, OGLは CPUの管轄外なのか変化なし(表から省いた)。HDDが下がったのだけわからないけど MEMを含めて全体にスコアアップ。

アイドル時の消費電力は 2W増加。気のせい気のせい。

 メモリの転送速度を PC3-8500(DDR3-1066)から PC3-10600(DDR3-1333)へ。

使用中の FireStixの SPDが DDR3-1066(533MHz)の 7-7-7-20. オーバークロック向けということで DDR3-1333(667MHz)でも動く(らしい)。新しいメモリの SPDは DDR3-1066(533MHz)の 7-7-7-20から 685MHzの 9-9-9-25まで。XMPによれば 1.65Vまで盛ることで DDR3-1600(800MHz)の 9-9-9-24で動作する。電圧を盛る選択肢はないので、両方のメモリモジュールにそこそこ仕事をしてもらうためには FireStixの転送レートを引き上げなければいけない。

BIOSで FSB/DRAM Ratioを変更する。4枚とも 667MHzの 8-9-9-25で動いてる。どちらもレイテンシ 13nsecの、同じ程度に遅い DDR3メモリだ。同じ DDR3といえども下手すれば 2倍以上転送速度が違ってくることを今まで知らなかった。>DDR3 SDRAM - Wikipedia

アイドル時の消費電力は増えない。

 メモリ(DDR3-1333 4GB)×2を追加。

アイドル時の消費電力は 4W増えた。CrystalMark2004R3のスコアにメモリの量は関係なかった。

 SAPPHIRE ATI RADEON X1600Proから SAPPHIRE ATI RADEON HD6850に換装。

ドスパラで買った。DiRT3のクーポンコードが付いてたし、噂されてるように補助電源が 2個になってるということもなく 1個だった。

パッケージ。今まで使ってた SAPPHIREの RADEON X1600の箱はコルムオンラインとタイアップしたもので結構気に入ってる。すべすべの腹部とぷよんぷよんの二の腕と胸を持ち、そして口元から上が描かれてない(つまり想像上の美人にしかなりえない)女性のもの。それが同じ SAPPHIREなのに HD6850はなんだろう。あの年増は。

長さ。マザーボードは 790FX-GD70. 一番上の 2スロットに取りつけると右端が、使用中の SYSFAN1のファンコネクタに衝突するかしないか。危ないところだった。2番目の 2スロットに取りつけると JMicronの提供する青い SATAコネクタが使えなくなる。3番目の 2スロットに取りつけると SYSFAN2コネクタが使えない。X1600に取りつけてた VGAクーラー MUSASHIの方がこの HD6850より長かったよ。じゃあなんで SYSFAN1が使えてたかといえば「サウスブリッジのヒートシンクにぶつかり、SYSFAN1コネクタに 1-2mm干渉し(MUSASHIを少し下に曲げた)、IDEコネクタに被さりながら(M/Bから 1cmほどはみでてる)、とりあえず収まった。」ということだった。ケースは十分でも M/B上にも長尺グラボの敵が存在する。

ファンは外排気。外部コネクタ部分にスリットがあるが、アイドル時の回転数(33%)ではティッシュを揺らすこともできなかった。扇風機もケースファンもぶん回ってるので静音性はまだ確かめられない。

アイドル時の消費電力は、メモリ増設による +4Wを相殺してなお 8W減った。実質 -12Wということ。

 Windows Experience Indexの変化。

beforeafter
プロセッサVista5.85.9(上限)
76.76.7
メモリ(RAM)Vista5.9(上限)5.9(上限)
77.57.5
グラフィックスVista4.55.9(上限)
74.57.1
ゲーム用グラフィックスVista4.95.9(上限)
74.67.1
プライマリ ハード ディスクVista5.9(上限)5.9(上限)
75.95.9
本日のツッコミ(全1件) ツッコミを入れる

cipsitahjicheありがとう


2011年07月22日 (金) 電気式華憐音楽集団<http://www.denkare.net> 10周年記念10大ニュース。(赤盤聞かないうちに) 9月に 2枚組CDが発売!年末にはライブも。


2011年07月19日 (火) Firefoxの履歴は 4になって終わった。読んだと自分で記憶してるページがもう visitedでなくなってる。>20110412 次々くりだされる Google Chromeの猿まねに価値なんてない。なんとなれば俺は Chromeが登場しても Firefoxを使い続けてる人間だからだ。蓄積されたユーザーデータは財産ではないの? 取り替えがきかない部分は何かを考えることだ。


2011年07月16日 (土) 量産品の再現度ってどの程度?それが不安。

最終更新: 2011-07-18T00:09+0900

[] はちくじ まよい

一時(いっとき)よく見かけたものの、まだ発売されてないとは知らなかった。どころか三か月も先だ。ならば……。konozamaを食らわなければ初フィギュアということになろう。

目が良い。将来いい女になることを確信させる。ま、死んでるのでずっと小学生なんだけど。『傾物語』に一瞬だけ登場した「もしも」の横顔が目に浮かぶ。そういうセンチメンタルな感情に誘われてぽちり。