カーソル位置の文字を取得 + Vim における文字列について

Vim

現在のカーソル行の文字列を取得するには getline('.') とすればよく,さらに現在のカーソル列は col('.') で取得することができる*1ので echo getline('.')[col('.')-1] とすればカーソル位置の文字が表示される. というのはシングルバイト文字の場合でし…

Visual Brainf*ck

こんなもの書きました.きっと俺しか得しないと思う. http://eagletmt.appspot.com/brainfuck/index.html Javascript しか使ってないので GAE 上に置くこともないのですが,他に適当な置き場所も持ってないのでとりあえず. これは何 おそらく最も有名な難…

if/else を選択

Vim

a{ とか i{ によって対応する {} を選択することはできる*1けど,カーソル位置の if/else 全体を選択したいときがたまにあるので. 実装方法に悩んだけど,結局カーソル位置から前方に { を探していき,それが if/else によるものの場合はそこで止まって,そ…

1376 -- Robot

PKU

http://acm.pku.edu.cn/JudgeOnline/problem?id=1376 概要 直径 1.6 メートルのロボットがグリッドの交点上を動く.グリッド 1 マスの一辺は 1 メートル. 障害物に触れてはいけない. ロボットは 左に 90 度回転 右に 90 度回転 前に 1 マス進む 前に 2 マ…

ここの型を知りたい

こんなかんじに使う. % echo 'length x' | ./hint [a] % echo 'x + 1' | ./hint (GHC.Num.Num a) => a % echo 'foldl x 0 [2,3]' | ./hint (GHC.Num.Num a, GHC.Num.Num b) => a -> b -> a % echo 'nub x' | ./hint Data.List (GHC.Classes.Eq a) => [a]元…

コマンドラインで bang をトグル

なんか最近 Vimperator のことばかり書いてますね… たまに欲しくなるので bang をトグルするキーマップを定義してみた. 例えば :mr hoogle map とかした後,やっぱり個別のページで見たいなと思って すると :mr! hoogle map に切り替わる. bang がついてい…

ChirpUserStreams が変わった

このポストで気付いた. http://twitter.com/YarmUI/status/13397162500 今まではここにまとめてあるように,各 event に対して id しか渡されていなかった. http://ssig33.com/blog/2010-04-25-1.html しかし,手元のログだとちょうど今日5月5日の5時くら…

アクセスキーと Vimperator のキーバインドが衝突するあれ

Firefox のアクセスキーの設定は ui.key.generalAccessKey ui.key.chromeAccess ui.key.contentAccess で行うことができ,chromeAccess は chrome の要素に,contentAccess はページコンテンツの要素に使われるアクセスキーを指定する. generalAccessKey が…

YouTube の新 UI に対応

YouTube の UI が変わり,これが早速動かなくなってました… http://d.hatena.ne.jp/eagletmt/20100322/1269225540 yt がなくなってしまったけど,flashvars を見ればよさそう. それと,g:yt_save_dir が設定されていなかったときの保存先を Firefox の設定…

Evaluate Haskell code anywhere

http://chrisdone.com/posts/2010-04-05-haskell-json-service-tryhaskell.html Try Haskell が eval する API を提供するようになったようなので,適当に Vimperator のコマンドを書いてみた. :hseval take 10 $ scanl1 (*) [1..]とすると [1,2,6,24,120,7…

なんかいろいろエンコード/デコードする operator を提供するプラグイン

Vim

~/.vim/plugin とかに入れて,例えば nmap <Leader>eu <Plug>encodeURIComponent vmap <Leader>eu <Plug>encodeURIComponent nmap <Leader>du <Plug>decodeURIComponent vmap <Leader>du <Plug>decodeURIComponent nmap <Leader>ej <Plug>encodeJSString vmap <Leader>ej <Plug>encodeJSString nmap <Leader>dj <Plug>decodeJSString …</plug></leader></plug></leader></plug></leader></plug></leader></plug></leader></plug></leader></plug></leader>

関数の arity を調べる関数

IncoherentInstances よくわかりません {-# LANGUAGE MultiParamTypeClasses , FunctionalDependencies , TypeFamilies , FlexibleInstances , ScopedTypeVariables , EmptyDataDecls , UndecidableInstances , IncoherentInstances #-} data Z data S a cla…

YouTube の動画をダウンロード

まぁ http://userscripts.org/scripts/show/25105 の Vimperator コマンド版のようなものです. let g:yt_save_dir = '~/Downloads' などと設定しておいくと,:ytdownload でそのディレクトリに今開いている動画を保存できる. オプションとして -fmt (省略…

:bmark が遅い

今まではこのように毎回 bmark するようにしていた. silent bmark -title='Google' -tags=vimp -keyword=gs http://www.google.com/search?q=%s silent bmark -title='Google Images' -tags=vimp -keyword=gi http://images.google.com/images?q=%s silent …

今現在自分が利用しているプラグイン

Vim

頻度別にまとめ+ちょっと紹介. 頻繁に使っているもの FuzzyFinder http://www.vim.org/scripts/script.php?script_id=1984 あいまいにバッファ,ファイル等を検索して,それを現在のバッファに開いたり新しいタブに開いたりできるプラグイン. Vim をずっと…

3255 -- Roadblocks

POJ

http://acm.pku.edu.cn/JudgeOnline/problem?id=3255 重み付きグラフが与えられて,2番目にコストが小さい経路のコストを出力する問題. 1番コストが小さいものなら普通のダイクストラ法でいいのだが,今回は2番目なので各頂点に対して2番目までのコストを覚…

subscldr.js をちょっといじった

フィードが見つからなかったときに Page2Feed のプレビューに遷移するようにしてみた subscldr.js の特徴である「ページ遷移なしで」を破るものなので微妙. しかしプレビューを見ずに Page2Feed で登録するはもっと微妙だと思ったのでこうした. diff --git…

関数内で関数を定義する

C++

つまりはクロージャが欲しい. C言語の場合は GCC 拡張でこれを実現できる. http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html #include <stdio.h> int main(void) { int x = 0; void f(void) { x++; } f(); printf("%d\n", x); return 0; } C++ の場合は C+</stdio.h>…

3615 -- Cow Hurdles

POJ

http://acm.pku.edu.cn/JudgeOnline/problem?id=3615 N 個の駅があり,M 本の一方通行の道が繋いでいて,それぞれの道には高さ H_i のハードルがあるとする. 駅 A_i から駅 B_i まで行くとき,途中で越えなければならないハードルの最大の高さの最小値を出…

昨日のプラグインの修正

微妙に間違っていたので修正. それとはてなに書くには若干大きいと思ったので gist にコードを移した. http://gist.github.com/320402 bookmark_user にもコマンド用意したほうがいいかな…

pixiv で楽にブックマークするためのプラグイン書いた

これを入れると liberator.plugins.pixiv に bookmark_illust, bookmark_user が追加され,pixivBookmark コマンドが定義されます. :pixivBookmark は引数をタグと解釈して,今開いているイラストをブックマークに追加するコマンド.bookmark_illust のほう…

2591 -- Set Definition

POJ

http://acm.pku.edu.cn/JudgeOnline/problem?id=2591 次のように定められた集合 S の N 番目(昇順)の要素を出力する問題. 1 は S の要素である x が S の要素ならば,2x + 1 と 3x + 1 も S の要素である その他は S の要素でない N の上限が 10000000 なの…

3014 -- Cake Pieces and Plates

POJ

http://acm.pku.edu.cn/JudgeOnline/problem?id=3014 整数 n, m (1 ≦ n, m ≦ 4500) が与えられて,m を n 個の整数の和に何通りに分割できるか答える問題. ただし答えは非常に大きくなりうるので,答えを 1000000007 で割った余りを出力する. DP で解いた…

よくわからない Map

なんかふと思いついたので書いてみた. http://gist.github.com/306554 insert, delete, lookup はできるけど,空間計算量も時間計算量も悪い上に key, value の列挙もできない Map のような何か.

C++ にも on が欲しい

C++

Haskell には Data.Function に on という関数が用意されている. http://haskell.org/ghc/docs/latest/html/libraries/base-4.2.0.0/Data-Function.html#v:on 関数 f, g から \x y -> f (g x) (g y) という関数を作る関数だ. これが地味に便利な場面があり…

Vim で POJ やりやすくする poj.vim を書いた

Vim

http://d.hatena.ne.jp/smly/20090719/1247974225 とりあえずはこれと同様のものを Vim script で書いた.http://github.com/eagletmt/poj-vim適当なディレクトリに置いて runtimepath を通して使ってください. .vimrc の設定例 set runtimepath+=~/.vim/po…

ふつうの純粋な型レベルプログラミング in Haskell

とりあえず fundeps で自然数編.続きはあるんですか? まず,おまじないとして {-# LANGUAGE FunctionalDependencies, MultiParamTypeClasses, UndecidableInstances, FlexibleInstances, EmptyDataDecls, ScopedTypeVariables #-} あたりが要る. 自然数の…

型レベル関数の inverse

元ネタ http://twitter.com/keigoi/status/7828062396 http://okmij.org/ftp/Haskell/PeanoArithm.lhs ようするにこの Inv は何をやっているのかというと,init から limit まで x をイテレートして,x と a に関数 clas を適用したの値と b が等しくなるよ…

Haskell で文字列処理

http://d.hatena.ne.jp/sakura-1/20100113 このへん見てたしかにこういうのがあると役立つなぁと思ったので. まず始めに,Haskell で文字列を扱う場合は主に String を使い,これは Char のリストになっている. もっと効率的に文字列を扱いたい場合には By…

modifySTRef year (+1)

あけましておめでとうございます. 2009年は Twitter と Haskell にかなりはまった年でした. 今年はまずはアルゴリズムやもっと基礎的な数学の勉強とかを進めていけたらなぁと思います.