2011-10-01から1ヶ月間の記事一覧

unite.vim でコマンドのランチャー

vim

元々、よく使用するコマンドはキーマップに設定して呼び出しを行なっていたのですが、流石に覚えきれなくなってきたので unite.vim を使用してみました。 まぁこういう風に使っている人は多そうですが。 [プラグイン] unite.vim open-browser.vim URL をブラ…

C++ でセミコロンを使わずに FizzBuzz

C++

元ネタ:セミコロンを使わずにFizzBuzzが書きたーい!!(某Eテレ風に) - うなてっくろぐ まぁ実は上記のサイトには C言語で簡単に出来る方法が書いてあるんですが、せっかくなので Boost.Phoenix を使って書いてみました。 [ソース] #include <iostream> #include <string> #</string></iostream>…

constexpr で FizzBuzz

C++

ひねくれたやり方です。 そこら辺に転がっていたソースを色々と詰め込んだので無駄に長いんですが…。 出力結果を配列にしています。 [ソース] #include <cstddef> #include <limits> namespace ce{ template<std::size_t... Indices> struct index_tuple{}; template< std::size_t Start, std::size_t </std::size_t...></limits></cstddef>…

vim script で FizzBuzz

そういえば、やったことがなかったので。 [コマンド] :echo map(range(1, 100), 'v:val% 15 == 0 ? "FizzBuzz" : v:val % 3 == 0 ? "Fizz" : v:val % 3 == 0 ? "Fizz" : v:val') 流石に短いですね。

コンパイル時 FizzBuzz

C++

なんか Twitter で話題になっていたので、Boost.MPL を使った FizzBuzz でも。 mpl::print を使用して、コンパイル時に出力も行います。 [ソース] #include <boost/mpl/int.hpp> #include <boost/mpl/modulus.hpp> #include <boost/mpl/equal_to.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/if.hpp> #include <boost/mpl/transform.hpp> #include </boost/mpl/transform.hpp></boost/mpl/if.hpp></boost/mpl/and.hpp></boost/mpl/equal_to.hpp></boost/mpl/modulus.hpp></boost/mpl/int.hpp>

Vimで対話コマンドを起動する

vim

vimshell を使用して、ghci のような対話環境を Vim 上で使用します。 [プラグイン] vimshell vimproc [コマンド] :VimShellInteractive ghci [SS] [注意] vimshell プラグインを使用する場合には vimproc プラグインも導入する必要があります。 詳しくは :h…

Vim でコードの保存時にシンタックスチェックを行う

vim

コードを実行(コンパイル)しないで、ファイルの保存時にシンタックスチェックを行います。 [プラグイン] syntastic [外部ツール] 使用するツールは各言語によって違います。 例: C++ -> gcc Python -> pyflakes 詳しくは、syntastic/syntax_checkers 内の…

各プラグインの言語対応表

vim

作りました。 neocomplcache、quickrun.vim、SingleCompile、syntastic の各プラグインが対応している言語の対応表です。 [対応表] neocomplcache quickrun.vim SingleCompile syntastic Ada ○ ActionScript ○ Apache ○ AppleScript ○ awk ○ bash ○ ○ C ○ ○*…

constexpr atof

C++

書きました。 一応、文字列の最後の位置も返すようにしたのですが、strtod と比べて挙動が違ってしまっているので、ぐぬぬ…。 ここら辺は一度、設計を見直す必要がありますねぇ(´・ω・`) 文字列の位置を保持するのは難しい…。 [ソース] #include <cstdlib> #include <iostream></iostream></cstdlib>…

constexpr atoi で最後に処理した文字列の位置を返す

C++

atoi 関数には元々そんな機能はありませんが、ちょっと実験的に試してみました。 具体的にいうと strtol 関数の第二引数に当たる処理ですね。 [ソース] #include <cstdlib> #include <iostream> namespace ce{ template<typename Char> constexpr int ctoi(Char c){ return Char('0') <= c && c </typename></iostream></cstdlib>…

Vim の C++11 Syntax

vim_dev にあったものをベースに作成。 一部のキーワードがなかったので追記しました。 [syntax/cpp.vim] *** cpp.vim Sun Feb 27 10:42:40 2011 --- cpp11.vim Sun Oct 2 20:50:54 2011 *************** *** 33,38 **** --- 33,46 ---- syn keyword cppNumb…

constexpr itoa

C++

書きました。 constexpr なので、配列のポインタを渡して文字列を代入する事は出来ません。 処理した結果の文字列は固定長配列として返します。 [ソース] #include <cstddef> #include <limits> namespace ce{ template<typename Char, std::size_t N> struct c_string{ Char elems[N ? N : 1]; constexpr Ch</typename></limits></cstddef>…

各型の桁数を取得

C++

std::numeric_limits::digits10 で取得出来るみたいですね。 ただし、桁落ちしているらしいので +1 する必要があるみたい? ここら辺はよく分かっていない。 [ソース] #include <iostream> #include <limits> int main(){ std::cout << std::numeric_limits<int>::digits10+1 << std</int></limits></iostream>…