夏の休暇のこと

僕の休暇はmetamorphoseにはじまりLL Futureでしめるという、一見なんとも豪華そうなスケジュールを設定したように見えるが、実は間の5日間は特になにもないという、あまりに雑なものだった。

台湾にいこうとか、奥飛騨にいこうとか、石垣島もいいねーとか、ここ一ヶ月以上いいね的な話はしているのだが、まだ何も決めていない。

そんなわけで、さすがに明日、明後日でスケジュールを確定させなきゃねーと話していたのであった。(先週もしてたけどな)

ProductName 高山・白川郷 (ことりっぷ)

昭文社 / ¥ 840 ()
通常24時間以内に発送

というより、僕は萩の陶器市にいってみたいのですよ。まったりと吞める酒器が欲しい。

SRM195-DIV2-500&1100

そろそろ1000点問題などもやりはじめる。

FanFailure

class FanFailure {
public:
  vector <int> getRange(vector <int> capacities, int minCooling) {
    int mfs=capacities.size();
    int mfc=capacities.size();
    vector <int> result;
    sort(capacities.rbegin(),capacities.rend());
    int rest = minCooling;
    for(int i = 0;i<capacities.size();++i) {
      rest -= capacities[i];
      mfs--;
      if (rest < 0) break;
    }

    sort(capacities.begin(),capacities.end());
    rest = minCooling;
    for(int i = 0;i<capacities.size();++i) {
      rest -= capacities[i];
      mfc--;
      if (rest < 0) break;
    }

特にこれといってはまるところはなし。

ChangePurse

class ChangePurse {
  int find_pos(vector <int> cointypes, int val){
    for(int i =0; i<cointypes.size();++i){
      if(val == cointypes[i]) return i;
    }
  }
public:
  vector <int> optimalCoins(vector <int> coinTypes, int value) {
    vector <int> cs = coinTypes;
    vector <int> mapped;
    vector <int> coins;
    vector <int> results;
    int num; 
    for(int i=0;i<coinTypes.size();++i) results.push_back(0);
    sort(cs.rbegin(),cs.rend());
    for(int k=0;k<cs.size();++k) mapped.push_back(find_pos(coinTypes,cs[k]));

    for(int j =0;j<cs.size();++j){
      if((value+1)%cs[j]==0){
    coins.push_back(value / cs[j]);
    value = cs[j]-1;
      }
      else {
    coins.push_back(0);
      }
    }
    coins.push_back(value);
    for(int z = 0;z<cs.size();++z) results[mapped[z]] = coins[z];
    return results;
  }

    result.push_back(mfs);
    result.push_back(mfc);
    return result;
  }

ベクタをソートする際にソート前のインデックスを覚えておきたい場合どうやるのがいいのかがわからん。

SRM413-DIV2-1000

InfiniteSequence

普通にメモ化するだけでいいのかなー、落とし穴でもあるんじゃなかろうか?なんて思ってたけどそんなものはなかった。

class InfiniteSequence {
  map<long long, long long> cache;
  long long acalc (long long n, int p, int q) {
    if (n == 0) return 1;
    if (cache.find(n) == cache.end()) {
      cache[n] = acalc(n/p, p, q) + acalc(n/q, p, q);
    }
    return cache[n];
  }
public:
  long long calc(long long n, int p, int q) {
    cache.clear();
    return acalc(n,p,q);
}
};

最初手元のテストが通らなくて悩んでいたらキャッシュをクリアーしてなかった。

cache.clear()

覚えた。

数学ガールのこと

あ、hyukiさんからスターをもらった。ありがとうございます。読むのが楽しみとか書いてたけど、週末に一気に読み切りました。

僕の場合はMAWPを読んだ際に悩んだという経験もあって、7章のmodの話にやたらと感動した。あと最後のオチも。

ProductName 数学ガール
結城 浩
ソフトバンククリエイティブ / ¥ 1,890 ()
通常24時間以内に発送

ProductName 数学ガール/フェルマーの最終定理
結城 浩
ソフトバンククリエイティブ / ¥ 1,890 ()
通常24時間以内に発送

中学、高校当時の私に『数学ガール』を読ませてあげたいという読者の声がありましたが、それはかなわないので、数学ガールの二冊は娘が大きくなったら贈る本にしようかと。

グラフィカルモデリング

最近、家に帰ると娘がyoutubeをせがむので、コードが書けない。あと部屋があちい。そんなわけで、寝転がって本を読んでいる事が多い。

今日も数年の間寝かせてあった、グラフィカルモデリングなどを読んで勉強中

ProductName グラフィカルモデリング (統計ライブラリー)
宮川 雅巳
朝倉書店 / ¥ 3,990 ()
通常24時間以内に発送

一通り読んだが、分からない事だらけ。数学ガールシリーズでパターン認識関連のやつをカバーしてくれれば楽しく読めるのになどと考えるのは暑いゆえの妄想か。

グラフィカルモデリングって遺伝子ネットワークみたいなのだけじゃなくて、活性構造相関みたいな研究でも役に立つとおもうんだけどなぁ。なんか適当なサンプルに適用して眺めてみたいところ。

あと、そろそろビショップ本読み始めないと。

For Lost Friends

いまさら感たっぷりだがJenna G

ProductName For Lost Friends
Jenna G.
Bingo Beats / ¥ 2,053 (2006-04-03)
通常3~5週間以内に発送

急に欲しくなった

沼津港前のタップルームでビール三昧

沼津のタップルームでビール三昧。行きはタクシー、帰りは風にあたりながらぶらりと歩いて駅まで。

1217759332

沼津港が見える。そして昼時のアンニュイな空間を楽しみつつ。

ビールは季節ものを中心に、飲む、飲む、飲む。

1217759334 1217759341

柑橘のフレーバーを入れてるのが好きだね。

1217759339

最後に黒い系で〆。夏の間に後一回くらいいく。

SRM412-DIV2-500

Problem Statement for BirthdayReminders

素直に書いたら、タイムアウトで撃沈された。システムテストの3個目でも落とされる。

class BirthdayReminders {
public:
  vector <string> remind(vector <string> friendNames, vector <int> birthDates, int currentDate, vector <string> occasions, vector <int> days, int k) {
    vector <string> rem;
    vector <int> times;
    stringstream ss;

    int fs = friendNames.size();
    int os = occasions.size();
    for(int l=0;l<fs*os;l++) times.push_back(0); 

   for(int i=1;i<1000001;++i){
      for(int j=0;j<occasions.size();++j){
        for(int m=0;m<friendNames.size();++m){
          int n = m*os+j;
          if(i-birthDates[m]>0 && (i-birthDates[m])%days[j] == 0) {
            times[n]++;
            if(i >= currentDate) {
              ss << i << ". " << friendNames[m] << " " << occasions[j] << " (" << times[n] << ")";
              rem.push_back(ss.str());
            if(rem.size() == k) return rem;
              ss.str("");
              ss.clear();
            }
          }
        }
      }
    }
    return rem;
  }
};

最初にテーブルを作っておいて最小の日を探しつつ更新していく。

教訓:安直にforをまわさない。

planet chemoinformaticsにdalkescientific.comを追加

Andrew Dalke's most recent diary entriesplanet chemoinfromaticsに追加した。

bioinformaticsもchemoinformaticsも一緒にやっているので、特に自分の仕事をインフォマティクスと読んでいたのだけど、最近はインフォマティクスがやりたいがために、インフラ整備ばっかりしているので、そろそろ仕事なんですか?と問われたら

インフラマティクスっす

と答えようかなと思っている。あと、IUPAC名をカバーする正規表現とか、テキストからIUPAC名を抽出するモジュールを探してるが見つかりません。誰か知ってたら教えください、プリーズ。

080801

と思ったら、Oscar3を調べれば良い感じだった。