Voxはじめ
October 28th, 2006 | Published in Uncategorized
October 28th, 2006 | Published in Uncategorized
October 26th, 2006 | Published in Uncategorized
最近コードを貼り付けることが多くなってきました。 単にpreタグでコピーしてただけなので、とてもみづらかったのです。
なんとかしようと思い、ふとVimには2htmlなんてプラグインがあったなぁと思い、探してみたら 名無しのVIM使い::2html.vim なんていう記事があり、ふむふむと。
このblogはTypo on Railsなので、Rubyから2html.vimを使いたいなぁと思い、再び探してみると、Code Snippets::Using VIM as a syntax highlighting engine from Ruby なんてものがあり、うまく使えないかなといろいろやってみました。
Code Snippetsのものをそのままコピペして実行してみたところ、作成したTempfileを開くところでpermission deniedになってしまいました。#{expr}
でevalしているところで刺さっているようです。
んー、といろいろやってみたところ、system()にしてみたらうまくいきました。
1 require 'tempfile' 2 3 def vimsyn(text, filetype) 4 synfile = Tempfile.new('synfile') 5 synfile.close 6 7 codefile = Tempfile.new('codefile') 8 codefile << text 9 codefile.close 10 11 # vim = '/Applications/Vim.app/Contents/MacOS/Vim' 12 vim = '/usr/bin/vim' 13 14 system(vim, '-f', '-n', '-X', '-e', '-s', 15 "-c", "set filetype=#{filetype}", 16 "-c", "syntax on", 17 "-c", "set background=dark", 18 "-c", "let html_use_css=1", 19 "-c", "let html_number_lines=1", 20 "-c", "run syntax/2html.vim", 21 "-c", "wq! #{synfile.path}", 22 "-c", "q", 23 "#{codefile.path}" 24 ) 25 html = IO.readlines(synfile.path).join 26 body = html.match(/
)[0]
28 css.gsub!(/pre/,'pre.code')
29 css.gsub!(/^body.*$/,'')
30 body.gsub!(/^ systemに渡す引数がえらいことになっています。ugly hackだなぁ。 あとはうまくまとめてRailsのプラグインにでも仕立てあげたいところです。 これでblogにコードを載せやすくなりました。 オリジナルの作者さんに感謝です。 October 22nd, 2006 | Published in Uncategorized プログラマの日々の鍛錬として、小さな関数を書く練習というのが有効だと思います。あちこちから探してきてちょこちょこと書いてみるつもり。 今日は p.p.181: 5 . 文字列の中で同じ文字が一番長く続くところを見つける をやってみます。 文字列の終端まで最初から1文字ずつ読んでいって、状態を記録していくという単純なアプローチで。 状態は、 だけあれば十分そう。 アルゴリズムを描くのに5分くらい。 コードは10分くらいで書けました。 初期化と、ループを抜けた後の処理 (update)に重複があるのが美しくありません。どう改善したらよいかな。 October 17th, 2006 | Published in Uncategorized なんのことやらなタイトルですが、最近びしびしとそう感じます。 自由に動けるプロジェクトを任されて、うんうんとデザインしていたり。 毎日少しの時間も零して落としたくないくらい、目標に向かって努力を積み重ねてみたり。 一歩踏み出してみたことで、世の中がめまぐるしく動き出しています。 朝起きて夜眠りにつくまで、うんうん唸って頭を捻ってきゅうきゅうに絞られるけれども、わくわくするようなところにに自分を放り込んでいるみたいです。 死んだように生きるよりも、生きてるようにぎっちりと生きていたい。 どういう風に一日を過ごすかは自分が決めるしかないし、どういう風に一日を過ごすかで一ヶ月が過ぎて一年が過ぎて、人生が過ぎていくみたいです。 結局は自分次第なんだ。 October 7th, 2006 | Published in Uncategorized 帰ってきました。よかったー。 詳細についてはあとで書く予定。 October 2nd, 2006 | Published in Uncategorized 明日から5日間ほど南の方へ行っています。 たのしみ。 October 1st, 2006 | Published in Uncategorized 勢いでやってみた。1.5時間くらい? Levelも20くらいを越えたら、あとはもう落ちたブロックをずらすだけしかやることなすになります。それでもLevel100くらいでテトリス2連発決めたりしたときはスカっとしました。 宇多田さんにはまだ遥か遠く及ばないのです。
文字列の中で同じ文字が一番長く続くところを見つける
アルゴリズム
コード
/!
* 文字列の中で同じ文字が一番長く続くところを見つける
*
* [in] str 探索する文字列
* 一番長く同じ文字が連続する部分文字列へのポインタ
*/
char *find_max_continuous_part(const char *str)
{
/ A1. [init] */
char *cur = (char *)str;
char *max_from = cur;
int count = 0;
int max_count = 0;
char ch = cur[0];
/* A2. finish? /
for (; *cur != ''; cur++)
{
/ A3. continuous ? /
if (cur == ch) // continuous
{
count++;
}
else /* A5 discontinuous */
{
if (count > max_count) // update
{
max_count = count;
max_from = cur - count;
}
count = 1;
ch = *cur;
}
}
if (count > max_count) // update
{
max_count = count;
max_from = cur - count;
}
return max_from;
}
実行例
./find_max_length_part hhhhaaaaaaabbccceeeeffffffffffffeeeaa
=> ffffffffffffeeeaa
所感
生きてるみたいに生きる
国内
国外
テトリスDS:Lv 115,Score 3003996