SRM171-DIV2-250

"3d18"みたいな文字列を二つのintに分けるのにfindとsubstrを使ったが、

string dice = "3d18";
int j = dice.find("d");
int rolls = atoi(dice.substr(0,j).c_str());
int num = atoi(dice.substr(j+1,dice.length() - j - 1).c_str());

そういう場合にはsscanfでよいらしい。

string dice = "3d18";
int n,s;
sscanf( dice.c_str(), "%dd%d",&n,&s);

それにしてもsplitがないのが不便だな。

TopCoderをやってみたヨ

c++を学ぶのによさげなのでTopCoderのpracticeを解いていたんだけど、ちょうど深夜1時にSRM402があったので、ふと参戦してみようと思った。

で、参戦した。

250点と500点問題を解いた。250点問題は問題の意図を間違えていて、あわてて修正したのでかなりロスった。500はやけに簡単ダナァと思ったら、ダブルデータという落とし穴があった(僕を含め、何人かはこれで撃墜されてた)。

チャレンジタイムとかいう、バグリそうなテストデータを突っ込んでみようタイムがやたらと楽しい。見てただけだけど、ヒトのコードを見ながら色々考えるので、この時間は結構勉強になるな。

初参加の僕は真っ先に標的にされてあっさり500点問題を撃墜されたけど、いわゆる念の洗礼というやつか。

それから今回、同じ組には、初参加は僕の他に3人いたけど、そのうち2人は1問も解いてなかった。みんなそんな感じで参加しにくるのかと。

というわけで、緑色だ。

sortした時に最大値を得るのにnums[nums.size()-1]とやったけど、*--nums.end()でもいいのかね。最小値はnums[0]でも*nums.begin()でわかりやすいのに。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main () {
  vector <int> vec;
  vec.push_back(4);
  vec.push_back(7);
  vec.push_back(6);
  vec.push_back(3);
  sort(vec.begin(), vec.end());
  cout << *--vec.end() << endl; // 7
}

高砂と楯野川

最近飲んだやつ

高砂「純米」

1211631804

静岡の酒米「誉富士」を使用。誉富士はなんか酸味が足りないっていうか緩い感じになる気がする。高砂なのにどしっとした感じがしない。高砂の山廃はちょっと濃すぎる感があるので、このくらいがいいかも。

楯野川

1211631807

島田酒店で購入。すっきりしている感じ。

Catalystの7章

最近Jemplateを使っているので、RESTとJemplateでAjaxの章をもう一度やった。

サンプルは一カ所修正。

#__PACKAGE__->config->{serialize}{default} = 'JSON';
__PACKAGE__->config->{default} = 'text/x-json';

ProductName Catalyst: Accelerating Perl Web Application Development
Jonathan Rockway
Packt Publishing / 3545円 ( 2007-11-30 )


本を論文に読み替えるといい

本は「欲しい」という前に買え

結局、本に興味をもつ目、本を選ぶ目って、その人の好奇心の広さ・深さであり、その人の問題意識の広さ・深さなわけですよ。自分がどれだけ普段問題意識をもって生活できているか。そこです。問題意識をもたずに過ごしてたら、そりゃ成長しないですよね。

たしかに。

僕が会社に入った時に一緒に仕事をしてたウェットのヒトが、常に論文を積んでいてちょっとでも実験の空き時間があるとそれらの論文を片っ端から読むというヒトだったので、僕もなんとなく感化されて面白そうな論文は積んどいて乱読する癖がついた。感謝してます。

あと、仕事が忙しくて論文を読む暇がない(ので読んでません)ってのは言い訳かな?自分のキャリアをどう考えてんだろ?なんて思う事があるけど、よくわからない。

c++で文字列の繰り返し

perlだと

say "abc" x 3 # abcabcabc

と書けるところをc++だと

string ret = "";
for(int i=0;i<3;i++) ret += "abc";
cout << ret << endl;

と書かないといけないのか?

template toolkit mode

最近また、Catalystで色々作っているので、昔のエントリを探してTT modeの設定をした。

;;tt
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist
      (cons
       '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist
      (cons
       '("\\.tt2$" . html-helper-mode) auto-mode-alist))
(require 'html-tt)
(add-hook 'html-helper-mode-hook 'html-tt-load-hook)
(add-hook 'html-helper-mode-hook '(lambda () (font-lock-mode 1)))

そして、Jonathan Rockwayのトークは聴いておくべきだったかなとスライドみながら思った。

catalystのE-Bookは本を買うと安く買えたので、ついでに買っておいたけど、本を見るまでもないときなんかに調べものができたりとか、検索できるので意外と重宝している。

YAPC::Asia 2008 二日目

今日の午前中はずっとDeNA room。すべて良かったので、メモもとらずにずっと聞いてた。

そのなかでも特にYuval KogmanのMooseが興味深かった。近いうちに触ってみようMoose。Mooseがヘラジカって知らなかったから、昨日の弾さんのスライドで、なんで変な角の仏僧が出てきたのかわからなかったけど、、、、

今ならわかる。

午後はIngyのjavascript話、今書き換えている職場のCatalystプロダクトでJemplateを使ってみる。講堂でリアルデバイスの話を聴いて、お芝居見た。で、ArcheType RoomでPOEとErlangの話を聞いて終了。Erlangわからん。

最後までいたかったけど、所用で泣く泣く帰宅。

今年も楽しい時間を過ごせて最高でした。スタッフの皆様おつかれさまでした。

YAPC::Asia 2008 一日目

ラリーウォールのトークにちょっと遅れた。 午前中は講堂。午後はArcheType Roomにいた。

  • perl5.10使おうと思った。
  • Atomとかそっちの話は面白い。
  • String::TTいいかも
  • Gainerでperlを使う場合はoutにGainerもってく場合がよい
  • Gainer over HTTPは楽しそう。
  • Danさんのcontext oriented languageはなるほどと思った。

したはメモ(内容はいい加減がところがあるかも)。あと、いつものようにmarkdownでメモを取っておけばよかった。

2008-05-15  kzfm  <kerolinq@gmail.com>

* YAPC2008: LT
- jrockway
String::TT
strip

- wakapon
すべてperlで
perlapi,XSUB
最終兵器

- cho45
Text::MicroMason
埋め込みのテンプレートエンジン

- clkao
prototype::signature

* YAPC2008: Yusuke Kawasaki
Gainerの話
DOM manipulation
三連星

wiimote over HTTP

wiimote in
Gainer  out

* YAPC2008: Kazutake Hiramatsu
Parrot compiler Tools
PCT
RkudoはPCTを使って実装
PCTを使えばParrotで動く俺言語を作れる

Register based VM
Register (In, Nn, Sn, Pn)
PIR
PASM

#30日OS入門をやる

I0 // Integer #0
PIRはPASMの構文糖衣

PGE,PAST,POST,NQP

svn co
cd parrot
perl Configure.pl
make
make test

perl tools/dev/mk_language_shell

NQP は Perl6を書くために必要なちっちゃいPerl6のようなもの
四則演算と括弧ができるやつはyaccを使うよりも短く出来る。

#parrotでschemeってのがあるのであとでみる

* YAPC2008: Takeru Inoue
Practical AtomPub Servers

AtomPub RFC5023
mixi station API

Collections and Members
Entry and Meta Resouces

強い権限
作ろうとするサービスがRESTに適しているか
データモデル

#AtomPubとS3の対比が分かりやすい。

methodのoverrideでuriを変えられる。

* YAPC2008; No REST for the Wicked
DTRT
X-Your-Header
Pretty URI not equal REST
pretty for computer not for you

Catalyst::Action::REST
Catalyst::Controller::REST::DBIC::Item
Use Case
example: soccer game 

my $data = $c->req->data;とかやれる
Catalyst::Controller::REST::DBIC::Itemを使うと
CUIで簡単に制御できる。

##コレクションのまとまり->controller
##Action->Chainedにすることでcontrollerと似たことが出来る。

* YAPC2008: dan kogai
perl as a second language
autobox
組み込みでないことを利点にするならば。
オブジェクト=自分が何をするか知っているデータ。
構文糖衣
context oriented language
printはリストコンテキスト

B::Deparseで空気を読む
DWIM = Do What I Mean

* YAPC2008: tokuhirom
5.10
Switch
~~
regexp: named captures
perl -E