syou6162先生が一行でやってくれました

昨晩TwitterでRとフィボナッチ数のことをぼやいていたら、id:syou6162先生が「一行で書けるよ」的なことを仰っていたので、早速例を見せてくれるようにお願いしました。
そして見せてもらった結果がこれだよ。

(function(n){ifelse(n>1,Recall(n-1)+Recall(n-2),ifelse(n==1,1,0))})(1:10)

おお、何かよく分からないけど一行カッコイイ!流石id:syou6162先生!!


さっそく実行してみました。

> (function(n){ifelse(n>1,Recall(n-1)+Recall(n-2),ifelse(n==1,1,0))})(1:10)
 [1]  1  1  2  3  5  8 13 21 34 55

ちゃんとフィボナッチ数列のからまでの値が返ってきました。


最初に見た時はRecall()がどういう関数なのか分からなかったのですが、Rのヘルプによると現在定義している関数を再帰呼び出し(recall)する関数だそうです。
なるほど、無名関数で再起を行う場合はRecall()を使えばいいのですね。メモメモ。


ちなみにRecall()のヘルプはRで以下のようにすれば見ることができます。

?Recall

Rでフィボナッチ数!

Rでフィボナッチ数を計算する関数を書いて遊んでみました。

フィボナッチ数

n番目のフィボナッチ数をで表すと、



と定義されます。一般項がひとつ前の項とさらにひとつ前の項の和になっています。
この漸化式で表わされる数列をフィボナッチ数列といい、最初の数項は以下のようになります。


書いてみた

とりあえずRの練習がしたかったので、試しにRを使ってフィボナッチを計算する関数を定義してみました。


漸化式の定義通りに再帰呼び出しを使って書いてみた結果がこれだよ。

fib <- function(n){
  if (n == 0) { return(0) }
  if (n == 1) { return(1) }
  fib(n-1) + fib(n-2)
}

うん、全然Rの練習にならなかった。
今すぐにC言語に落とせそうなコードですね。笑

VimM#2に参加してきました

http://wiki.livedoor.jp/biowithit/d/VimM%232


参加者の皆さんお疲れ様でした!
今回も相変わらず多くの収穫を得ることができました。


VimM#2のテーマは「Vimプラグイン特集」でした。
各発表についてのメモや感想を以下にまとめておきます。


第一部

  • kana - プラグインって何?おいしいの?
  • maedana - 初めてのCompiler Plugin
  • ukstudio - Rails.vim
  • yoshuki - project.vim
  • ujihisa - All About Metarw

第二部

  • kana - Vimプラグインを作ってみる
  • ujihisa - On Metarw
続きを読む

Vimperatorを無効化する

「Vimperatorをインストールしたけど、Firefoxがガラッと変わってしまって全然馴染めない!だから元に戻したいけど、メニューバーが消えてしまったせいでVimperatorを無効化できない!」という人は、以下のaddonsコマンドを使いましょう。


addonsコマンド(省略形はaddo)を実行すると、現在のタブにFirefoxのアドオンメニューが表示されます。

:addo


ここからVimperatorを無効化すればOK。

Vimperatorの基本

Firefoxの逸般的なアドオン「Vimperator」をインストールしてみました!
このアドオンをインストールすると、FirefoxでVimのようなキー操作やコマンドを扱えるようになります。Vimユーザ&Firefoxをキーボードだけで操作できるようにしたい人にお勧めのアドオンです。

https://addons.mozilla.org/ja/firefox/addon/4891


折角なので、Vimperatorの基本的な使い方を自分なりにまとめてみようと思います。

Vimperatorのインストールを検討している人へ

Vimperatorをインストールすると、Firefoxに以下のような大きな変化が起こります。

  • メニューバー、タブバー、ステータスバーなどが非表示になる
  • キーバインドが大幅に変化する

今までFirefoxの操作をメニューバーやタブバーに依存していた人は、Vimperatorをインストールした瞬間に環境がガラッと変わって戸惑ってしまうと思います。あらかじめVimperatorの扱い方について調べてからインストールすることをお勧めします。

基本的な操作方法

Vimと同じようなキーバインドでFirefoxを操作できます。


画面のスクロール

h左にスクロール
j下にスクロール
k上にスクロール
l右にスクロール
CTRL-F下に一画面分スクロール
CTRL-B上に一画面分スクロール
Gページの一番下に移動
ggページの一番上に移動


タブ関連

t {URL}{URL}を新しいタブで開く
t {keyword}新しいタブを開き、既定の検索エンジンを使って{keyword}を検索する
gt, CTRL-N次のタブを開く
gT, CTRL-P前のタブを開く
d, :q現在のタブを閉じる
u最後に閉じたタブを元に戻す
ページ遷移など
gh現在のタブでホームページを開く
gH新しいタブでホームページを開く
guひとつ上のディレクトリに移動する
H, CTRL-Oブラウザ履歴のひとつ前のページに戻る
L, CTRL-Iブラウザ履歴のひとつ次のページに進む
r現在のタブをリロード

ヘルプ&チュートリアル

VimperatorのヘルプはVimと同じくhelpコマンド(省略形はh)で表示させることができます。

:h

以下のコマンドを実行すると、Vimperatorのチュートリアルが表示されます。

:h tutorial

補完

Vimと同様、URLやコマンドの入力途中でTabキーを押すと補完することができます。

こんな感じで

以上のコマンドを覚えれば、ひと通りの操作はできると思います。


まだ.vimperatorrcを書いたりVimperatorのプラグインをインストールしたりしていないので、これから自分が使いやすいようにカスタマイズしてみようと思います。

Twitter Friends Mapで重大な事に気が付いた

昨日紹介したTwitter Friends Mapの件について。


私のTwitter Friends Mapの結果に関して、@bombtterの位置なんかよりも、もっとすごい突っ込みどころがあることを忘れていました。



アリアハンのすぐ近くにバラモスが!笑


これでは旅の扉に辿り着けませんね。笑



参考URL
Twitter Friends Map
http://c--v.net/prog/2008/twitter-friends-map.html

Twitter Friends Mapで遊んでみた - ぬいぐるみライフ(仮)
http://d.hatena.ne.jp/mickey24/20080819/1219149068