最終更新: 2012-01-20T00:09+0900
穴埋め。解ける問題がはやなくなってきたから……(完全になくなってはいないはずっ)。
時間コストを空間コストに置き換えて。
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
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 }
ゴールから攻めようとか小賢しいことは考えずに。
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
面倒なだけ。
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] }
問題文が難しかった。閏年の条件として "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
愚直に(←これしか書いてなくない?)。
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) }
そのまま(←愚直にを言い換えただけ)。
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-17T01:44+0900
自分の稼働中の 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-12-06T20:50+0900
今のは2足目(ローカットのバリエイションも含めたら3足目)で、通算7、8年くらい履いてるような。GORE-TEX. 一万円で買えるのがよい。
ブルックス サハラXCR
ブルックス
¥ 11,550
アマゾンの画像と違い赤っぽくはない。不満はないけど同じモデルがもう売ってないので新規開拓。今の靴を買ったときに月星のやけどどうやとすすめられた靴の、足を両手でがっちり包み込むようなホールドとフィット感を今になって探してみたくもある。
韓国企業らしい。そういうところに目がとまるほどここ数年で偏見がすり込まれてきた。韓国のプレゼンスが上がってることの裏返しかね。
[トレクスタ] TrekSta NEST NET-01
TrekSta(トレクスタ)
¥ 18,375
好みよりはカットが浅いけれど、このなかなか見ない色(DKグレー, DKブラウン)と形が気に入った。人工的というか生物的・有機的というか。……正反対だけど。つま先のでこぼこは見なれないけど Vibramの five fingersほどは奇抜じゃないでしょ。正中からずれて内へ向かって縫い合わせたような甲の合わせ目も特徴的で気に入った部分だけど、ここには二つの問題を発見した。ひとつ。防水性能。甲の合わせ目の一番先まで切れ目が入っていて、着物のように左右を重ねてるだけ。間をつなぐ袋状の部分がないのでおそらく水が流れ込む。カットが浅くて足首から流れ込む雨を心配していたが足の甲からも流れ込むとあればもはや雨には無力。GORE-TEXのタブはかざりです。ふたつ。べろの問題。(自分が浅い靴をはき慣れないだけかもしれないけど) べろが短く、左右の甲部の延長として存在しているために、折り返す力につっぱって抵抗する。つまり、足首が痛い。自転車をこぐように足裏を水平に保ったまま膝を上げると足首に腱が持ち上がるのが見えるが、この部分を押しつぶそうとする。わりと致命的な気がするけど他が気に入ったので何とかなることに期待してる。
サイズ。25.5は履けるけどピチピチ。コンプレッションタイプの Tシャツであればこれが適正サイズということになるんだろうけど、余裕が欲しい。26.5はがばがばではない適正な余裕がある。ただ、この靴の性格からするともう少し絞って 26.0cmがよいかもしれない(だが在庫がなかった)。今履いてる 26.0cmの靴と同じサイズということになるが余裕は .5cm分ほど少ないだろうと思う。
インソールとミッドソール。指のアーチ部分に入り込むように、つかみたくなるようなふくらみがある。土踏まずにもふくらみがあるから、歩行時に母指球にかかる力を受け止めて支えるようにくぼんでるとも言える。足がずれる不安がなくてすごく良い。これを知ったから、次のサルティスの足先のホールドに不安を感じた部分もある。
ひも。引っぱればわりと先の方まで締まる。一回折り返すとその先にはまるで力が伝わらない、どうやって締めたものか困るものが少なくないが、これは違う。ひもを通す部分がファブリックなのは耐久性に大いに不安を感じる。
この靴に向けたものか一般的な注意か判断できなかったけど、ポリウレタンソールに対する注意書きがあった。
べろの当たりは全く問題なし。いい具合にくたびれたのかな。足の方が勝った。ソールは日常使用には硬すぎるかも。接地面積が確保できないうえグリップもいまいち。雨の日の階段では相当気をつかう。足の甲はやはり靴下が濡れてる。あとは、汚れやすい(汚れが目立つ)。爪先部分がまだら模様だ。石けんでは落ちなかった。洗ったときに確認したが水漏れはなし。大きな問題はなく概ね満足。
文句のつけどころがない。見ためだけで決めたらいい。
[アシックス] asics サルティス ウォーキングシューズ
asics(アシックス)
¥ 22,050
あえて気になる点を挙げると、足先部分に高さがありすぎる。素材(牛革)が柔らかいから設計段階での余裕は必要なかったかも。.5cm今より小さい 25.5cmでも足先のホールドに若干の不安があるから、25.0cmも検討対象に入る。防寒のための厚手のウールの靴下を重ね履きしたらジャストフィット。春夏秋にはどうしようかなあ。縮まないかな。逆に伸びたり?
ZLOKZ(ジロックス)カッパーブロンズ(ZL1-CB)
-
¥ 1,260
気付いたこと。ZLOKZでどれだけ足を締め上げられるか、脱ぎ履きのために紐の長さにして何cmのゆるみを生み出すことができるかは、紐を通す穴の左右の間隔またははしごの最上段と最下段の距離で決まる。TrekStaの方は最初から適さないとわかっていたが、サルティスに関しても、どちらの長さも足りなかった。足が抜けるほどには緩まない。片足に2個使えば抜けはしたが、もうひとつ気付いたこと。紐は締め上げるのに適している。足を締め上げるのと同じか少し余分な力が ZLOKZを紐に引っかける時にも必要になるが、これはなかなか難儀だ。俺を満足させてくれるのはスキー靴のようなバックルしかないかもしれない。結局どうしたか。つま先に近い方の脱ぎ履きに影響しない部分だけを一度締め上げて本結びをつくった。そこより上の部分のひもを締めて結ぶ*手間は受け入れよう。ZLOKZの使い所は模索中。やっぱり、最上段がフックになってる靴だと結びっぱなしのひもをぎゅうっと引き絞って手首を返して引っかけるだけで済むから楽だしよく締まる。難点はひもが傷みやすいのと手袋をしてるとそちらも人差し指に穴が空きやすくなること。
* ねじってねじってちょうちょを作ってその羽をまた結んで。