<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>数奇な因子 &#187; programming</title>
	<atom:link href="http://www.numericalfactor.org/wp/tag/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.numericalfactor.org/wp</link>
	<description>Numerical Factor</description>
	<lastBuildDate>Sun, 02 May 2010 09:50:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>初めてのRuby（続き）</title>
		<link>http://www.numericalfactor.org/wp/archives/295</link>
		<comments>http://www.numericalfactor.org/wp/archives/295#comments</comments>
		<pubDate>Sun, 19 Oct 2008 15:16:16 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/?p=295</guid>
		<description><![CDATA[「初めてのRuby」の残りを読んで，新たに知ったことなど．

ヒアドキュメント．Stringの%メソッドを合わせることで，
長い文字列もすっきり．
今まで何と無駄で読みにくいコードを書いていたのかと．

変数が保持するも [...]]]></description>
			<content:encoded><![CDATA[<p>「初めてのRuby」の残りを読んで，新たに知ったことなど．</p>

<p>ヒアドキュメント．<code>String</code>の%メソッドを合わせることで，
長い文字列もすっきり．
今まで何と無駄で読みにくいコードを書いていたのかと．</p>

<p>変数が保持するものは，オブジェクトへの参照．ラベル付け．
どこからも参照されなくなるとGCのときに回収される?</p>

<p><code>nil/false</code>は偽であること，
変数は大体初期値が<code>nil</code>であること，
論理演算子が真偽値ではなくオペランドを返すことを利用して，
次のような初期化イディオムが使える．</p>

<pre><code>  @instance_var ||= some_value
</code></pre>

<p><code>if/for/while/case</code>は値を返す制御文なので制御式と呼ばれる．
ていうか値を返すのか．</p>

<pre><code>some_var = if some_cond then
  value
else
  another_value
end
</code></pre>

<p><code>case</code>制御式のために<code>case</code>比較演算子<code>===</code>がある．</p>

<p><code>catch/throw</code>でネストしたループを脱出．
自分はたまに再帰で構文解析とかやるとC++の例外でほぼ同じような事を…．</p>

<p>コードブロックをオブジェクトとして扱う．
確かにイテレータメソッドは幾度も使って慣れてきたけど，
<code>Proc</code>でコード片をオブジェクトにして渡し，
あとで使うなどということを意識してやったことはなかった．</p>

<p><code>attr_accessor</code>メソッドで属性定義が簡単にできる．
以下のように書くと，<code>Student</code>クラスに<code>name/student_id</code>の
getterとsetterが自動で定義される．</p>

<pre><code>class Student
  attr_accessor :name, :student_id

  def to_s
    "#{@name}, \##{@student_id}"
  end
end

student = Student.new
student.name = "line"
student.student_id = "1234cs567"
puts student    #=&gt; line, #1234cs567
</code></pre>

<p>特異メソッド，特異クラス，メタクラスの関係がまだ把握できていない．
ここでいう「特異」は&#8221;singleton&#8221;と訳すと知った． singularかと思ってました．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/295/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>セッション+リバースプロクシで悩んだ</title>
		<link>http://www.numericalfactor.org/wp/archives/267</link>
		<comments>http://www.numericalfactor.org/wp/archives/267#comments</comments>
		<pubDate>Sun, 20 Jul 2008 17:44:32 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/?p=267</guid>
		<description><![CDATA[Apache モジュール mod_proxy を使ってリバースプロクシを掛けているwebサーバとの間で，cgiからセッション情報をやり取りしたかったのだけど，さっぱりうまくいかず，なぜかクッキーファイルが量産されていた… [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html">Apache モジュール mod_proxy</a> を使ってリバースプロクシを掛けているwebサーバとの間で，cgiからセッション情報をやり取りしたかったのだけど，さっぱりうまくいかず，なぜかクッキーファイルが量産されていた…つまり常に新しいセッションが作られていた．</p>

<p>答えは，クライアントが見ている（と思っている）サーバと実際にcgiが動いているサーバが違うとかそんな理由で，サーバ側とクライアント側でクッキーのドメインとかパスが食い違っていたせいと思われます．
というわけで，ProxyPass/ProxyPassReverseディレクティブだけでなく，以下の二つも設定してやり（上のリンク先参照），双方の齟齬を埋めてやらないといけないのでした．</p>

<pre><code>ProxyPassReverseCookieDomain internal-domain public-domain
ProxyPassReverseCookiePath internal-path public-path
</code></pre>

<p>これでおk．一仕事終えたので，寝よう．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/267/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frameworks for Ruby</title>
		<link>http://www.numericalfactor.org/wp/archives/261</link>
		<comments>http://www.numericalfactor.org/wp/archives/261#comments</comments>
		<pubDate>Sun, 25 May 2008 14:50:14 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/?p=261</guid>
		<description><![CDATA[某所で作っている自作cgiがいい加減gdgdなのです．


先のことを少しは考えて書いたけど，やっぱり混沌としてしまってる
自分が書くより既製品を使う方が絶対良い部分がある．認証とかセッションとか．


Rubyには慣れ [...]]]></description>
			<content:encoded><![CDATA[<p>某所で作っている自作cgiがいい加減gdgdなのです．</p>

<ul>
<li>先のことを少しは考えて書いたけど，やっぱり混沌としてしまってる</li>
<li>自分が書くより既製品を使う方が絶対良い部分がある．認証とかセッションとか．</li>
</ul>

<p>Rubyには慣れてきた(Ruby的にモノを書いてるかは疑問だけど)ので，ここはフレームワークに乗っかろうと．
探してみたところこんなのがある．</p>

<ul>
<li><a href="http://merbivore.com/">Merb</a></li>
<li><a href="http://ramaze.net/">Ramaze</a></li>
<li><a href="http://sinatrarb.com/">Sinatra</a></li>
<li><a href="http://www.nitroproject.org/">Nitro</a></li>
<li><a href="http://camping.rubyforge.org/">Camping</a></li>
</ul>

<p>まずはMerbを使ってみようかと思います．MVCについても勉強しよう．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/261/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>間違い</title>
		<link>http://www.numericalfactor.org/wp/archives/255</link>
		<comments>http://www.numericalfactor.org/wp/archives/255#comments</comments>
		<pubDate>Tue, 04 Mar 2008 10:42:40 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[daily life]]></category>
		<category><![CDATA[misc]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/255</guid>
		<description><![CDATA[計算結果の誤差を計算するルーチンを作ったら，どうしても変な結果が出るもんで困ってました．

何がおかしいのかと数時間悩んでいたけど，参考にした文献中の式が間違っていたことが判明．
なんだよもーと思ったけ]]></description>
			<content:encoded><![CDATA[<p>計算結果の誤差を計算するルーチンを作ったら，どうしても変な結果が出るもんで困ってました．</p>

<p>何がおかしいのかと数時間悩んでいたけど，参考にした文献中の式が間違っていたことが判明．
なんだよもーと思ったけど，そもそもちょっと考えれば分かるような間違いで，
そのぐらい式を見て気付けよ>自分．</p>

<p>とりあえずこれで，次にやることのインフラが一つ整ったようだ．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/255/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>134 Loglan &#8211; A Logical Language</title>
		<link>http://www.numericalfactor.org/wp/archives/253</link>
		<comments>http://www.numericalfactor.org/wp/archives/253#comments</comments>
		<pubDate>Sat, 12 Jan 2008 12:13:11 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[uva]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/253</guid>
		<description><![CDATA[UVA134 Loglan &#8211; A Logical Language．

構文解析やるだけ．

構文解析木の節・葉にあたるところを全て関数に仕立てて(DAとかNAMまで)書いてたので，
無駄が多数．

実装に [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&amp;Itemid=8&amp;category=3&amp;page=show_problem&amp;problem=70">UVA134 Loglan &#8211; A Logical Language</a>．</p>

<p>構文解析やるだけ．</p>

<p>構文解析木の節・葉にあたるところを全て関数に仕立てて(DAとかNAMまで)書いてたので，
無駄が多数．</p>

<p>実装にだいぶ時間かかってしまってもいて，ダメだ…．</p>

<p>UVAは，URLの示す問題がどれなのかさっぱり分からなくなってしまっていて，
使いづらくなった．</p>

<p>という現実逃避でした．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/253/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アジア地区予選の復習</title>
		<link>http://www.numericalfactor.org/wp/archives/248</link>
		<comments>http://www.numericalfactor.org/wp/archives/248#comments</comments>
		<pubDate>Mon, 19 Nov 2007 11:19:16 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[algorithm]]></category>
		<category><![CDATA[icpc]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/248</guid>
		<description><![CDATA[一度解法聞いてるのに，まだ解けてない問題がある…．

問題とサンプル入出力は公式サイトで公開されてます．

以下ネタバレのため省略されました．続きを読むには(ry

おおよそ復習に手を付けた順に．

slimな全域木]]></description>
			<content:encoded><![CDATA[<p>一度解法聞いてるのに，まだ解けてない問題がある…．</p>

<p>問題とサンプル入出力は<a href="http://www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/">公式サイト</a>で公開されてます．</p>

<p>以下ネタバレのため省略されました．続きを読むには(ry</p>

<p>おおよそ復習に手を付けた順に．</p>

<p>slimな全域木は，解説の通り．全域木を構成する辺のうち最軽辺をループ毎に重くして，全域木を作れなくなるまで繰り返す．</p>

<p>バックギャモンの問題は，メモ探のテーブルをゼロ初期化してたために確率ゼロと見分けがつかずTLE状態だった．安易にmemsetしたのが間違いのもと…．なんで気付かないかなー．
-1で初期化して普通の速さに．</p>

<p>構文解析してバグを見つけるという問題は，<a href="http://fxp.hp.infoseek.co.jp/arti/parser.html">10分パーザ</a>のおかげで書けた．Syntax errorは無いということで気が楽．配列名→サイズのmap，(配列名とインデックス)→値のmapが大域にあれば良い．</p>

<p>海から最も遠い点の問題は，ライブラリの重要さが身にしみた．人のライブラリを使うなら，最低でも使い方を把握しろ>自分．
使った解法は，凸多角形を縮小する（クリッピングというのか）長さについて二分探索．</p>

<p>幽霊の問題．両側探索するのにpriority_queueを使っていたせいで無駄に悩んだ．queueに直してあっさり終了．問題文のサンプルで3秒弱，<a href="http://www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/">公開されたサンプル入出力</a>で23秒程度だった．さすが両側探索．</p>

<p>折り紙の体積（違）を求める問題は，とりあえず展開図の頂点を列挙するとこまで書いた（ここまで書いて思い出したけど，頂点を一つ決めた後，残りの頂点が格子上に乗ってるかチェックしていない気がする）．これで展開図がかけるので，あとは展開図から高さを求めれば良いんだけど…．</p>

<p>最短路の問題と最後の問題はまだ手付かず．最短路のは，グラフに落とすのが面倒そう．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/248/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACM/ICPC アジア地区予選</title>
		<link>http://www.numericalfactor.org/wp/archives/246</link>
		<comments>http://www.numericalfactor.org/wp/archives/246#comments</comments>
		<pubDate>Sun, 04 Nov 2007 10:49:39 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[icpc]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/246</guid>
		<description><![CDATA[またもやIP unreachableな3日間をオリンピックセンターで過ごし，やっと帰宅．

Excursionで江戸東京博物館に行き，最後は秋葉原へ．
歩き回って疲れた…．相変わらず不思議な人が多い街でした．


Tal [...]]]></description>
			<content:encoded><![CDATA[<p>またもやIP unreachableな3日間を<a href="http://nyc.niye.go.jp/">オリンピックセンター</a>で過ごし，やっと帰宅．</p>

<p>Excursionで<a href="http://www.edo-tokyo-museum.or.jp/">江戸東京博物館</a>に行き，最後は秋葉原へ．
歩き回って疲れた…．相変わらず不思議な人が多い街でした．</p>

<ul>
<li>TalesOfCodersのチーム紹介が秀逸だった</li>
<li>優勝したechizen.bat，二位のUnknownは素晴らしい</li>
<li>順位は去年より良かった．チームメンバーに恵まれてるなぁ</li>
<li>練習会とは違いスムーズな流れ（一度もWA無し!）．だが，あと一問解きたかった</li>
<li>NHKが取材にきてた．あとでニュース見たら極一部に写ってた</li>
<li>パーティではケーキが瞬殺</li>
</ul>

<p>全体的な知識不足はもちろんのこと，幾何系のライブラリの整備が必要．
焦って勉強してたフロー系のアルゴリズムは，今回活躍せず．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/246/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最近の活動</title>
		<link>http://www.numericalfactor.org/wp/archives/237</link>
		<comments>http://www.numericalfactor.org/wp/archives/237#comments</comments>
		<pubDate>Wed, 03 Oct 2007 15:06:17 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[icpc]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/237</guid>
		<description><![CDATA[Akismetというspam対策プラグインをWordPressで使ってるけど，
最近は引っかかったものを何の断りもなく削除していくようでちょっと不安になった．

一旦止めてみたけど，結局spamしか来てなかったのでまた使 [...]]]></description>
			<content:encoded><![CDATA[<p>Akismetというspam対策プラグインをWordPressで使ってるけど，
最近は引っかかったものを何の断りもなく削除していくようでちょっと不安になった．</p>

<p>一旦止めてみたけど，結局spamしか来てなかったのでまた使っている．</p>

<p>夏合宿で出された問題の復習がちょっと進んだ．
何てことはないバグだったけど，これのせいでここ数日悩んでいたことを考えると自分にガッカリ．
しかも直っても遅いし．</p>

<p>元々遅すぎたので，これはキューに突っ込む状態数が多すぎるんだろうとは思ってたけど，
それは枝刈りで対処するべき事柄だと思い込んでいた．
実際には今の状態から次の状態を生成する部分が腐っていたため，
重複する状態を量産していて，それのせいで時間切れになっていた．</p>

<p>やっと他の問題に移れる…．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/237/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>夏合宿終了</title>
		<link>http://www.numericalfactor.org/wp/archives/236</link>
		<comments>http://www.numericalfactor.org/wp/archives/236#comments</comments>
		<pubDate>Tue, 25 Sep 2007 15:04:50 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[icpc]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/236</guid>
		<description><![CDATA[月曜まで三日間まるっとIP unreachableな環境でコンテスト三昧な日々@東大でした．疲れたー．
力不足で，合宿でのコンテスト結果は残念だったけど，勉強になりました．

とりあえずまずは復習ということで，最後のFr [...]]]></description>
			<content:encoded><![CDATA[<p>月曜まで三日間まるっとIP unreachableな環境でコンテスト三昧な日々@東大でした．疲れたー．
力不足で，合宿でのコンテスト結果は残念だったけど，勉強になりました．</p>

<p>とりあえずまずは復習ということで，最後のFree Solvingと帰ってから家でそれぞれ1問ずつ解いた．
前者は審判サーバが生きてたけど，合宿が終わった今となっては審判入力の公開をワクテカしながら待つのみ．</p>

<p>OB/OG会の皆さんには大変お世話になりました．
またライブラリ交換会では他のチームの素晴らしいライブラリを頂いて，感謝しています．</p>

<p>同じ部屋になったechizen・TalesOfCodersの中の人達が
それぞれの研究の話をしているのを横で聞いていたけど，大分ついていけなかった．</p>

<p>あとUnknownツヨス…．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/236/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TCCC07 Round2</title>
		<link>http://www.numericalfactor.org/wp/archives/235</link>
		<comments>http://www.numericalfactor.org/wp/archives/235#comments</comments>
		<pubDate>Sun, 09 Sep 2007 04:56:22 +0000</pubDate>
		<dc:creator>line</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[topcoder]]></category>

		<guid isPermaLink="false">http://www.numericalfactor.org/wp/archives/235</guid>
		<description><![CDATA[ダメだったー!

落ちましたよ…250点問題しか送信できず，それもすぐ撃墜されて0点．
ということで，戦果はTシャツとストレスボール．

250点のは，leftとrightが与えられてleft&#8806;xk&#880 [...]]]></description>
			<content:encoded><![CDATA[<p>ダメだったー!</p>

<p>落ちましたよ…250点問題しか送信できず，それもすぐ撃墜されて0点．
ということで，戦果はTシャツとストレスボール．</p>

<p>250点のは，leftとrightが与えられてleft&#8806;x<sup>k</sup>&#8806;rightを満たすような
最大のkを求めるという話．その場で手が思いつかなかったので，
愚直に積をとっていくコードを投げましたがダメでした．</p>

<p>y = rightから始めてleftまで減らしつつ，x = pow(y, 1.0/k)を整数値にしてx<sup>k</sup> == yならkを返す，というコードにすれば良かったか? と思って書いてみたけどWAとTLEのテストケースがあってダメだった…．</p>

<p>500点のは，RLE圧縮された数字列が二つの和の指定された桁の数字を言えという話．
数字列を復元したら10<sup>18</sup>桁未満ということでlong longも不可．
地道にstringから和を計算する実装系…ちょっとだけ手を付けて諦めた．</p>

<p>1000点は，m人の労働者がいてn種類の仕事があり，i番目の人がt種類の仕事をしたときcost[i]*t<sup>2</sup>の給与が支払われる．ただし労働者には担当できる仕事とできない仕事がある．
このとき支払う給与の総和を最小化するには，という話．</p>

<p>500点を諦めて以降これをずっとやってました．
結果できたのはひたすら仕事と労働者の組み合わせを作ってコスト計算というコード．
終了後に送信してみたら案の定System TestであるテストケースがTLE．</p>

<p>Ratingの変動が意外で，1だけ下がっていた．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.numericalfactor.org/wp/archives/235/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
