2012/04/17(火)僕の .vimrc と .screenrc は、ここで進化していく(むしろgit使え

はてブ数 2012/04/18 23:57 計算機な日記::ボクと計算機つーさ

こういうのが便利とかあったら教えてください!

直接関係ないけど、コピペしたときに行番号がつかないようにするのってどうやるんだろう。
数字を画像で用意する! なるほど。そうじゃなくて。

# .bashrc # cygwin

## auto start screen
## if $STY is not set...
if [ -z "$STY" ]; then
    screen -dR
fi

## share history between screen sessions.
function share_history {
  history -a
  history -c
  history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend
export HISTSIZE=200000
export HISTFILESIZE=2000000
export HISTCONTROL=ignoredups
## exclude short command from history
export HISTIGNORE=?:??:???:exit:logout

export PS1="\\[\\e]0;\\w\\a\\]\\n[\\[\\e[36m\\]\\D{%m-%d %H:%M:%S}\\[\\e[0m\\]] \\[\\e[32m\\]\\u@\\h \\[\\e[33m\\]\\w\\[\\e[0m\\]\\n$ "
# .vimrc
syntax on
set smartindent
set number
set backspace=2
set laststatus=2
set mouse=a
set tabstop=8
set shiftwidth=4
set expandtab
set wildmenu
set ruler
set statusline=%<%f\\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
set showcmd
set incsearch
set hlsearch
set timeoutlen=250
inoremap ;; <ESC>
# .screenrc

autodetach on

startup_message off

defbce "on"

term xterm-color
shelltitle 'bash'

defscrollback 3000
hardstatus on
hardstatus string "%?%h%:%t (screen #%n on %H)%?"
caption always "%{= wb}[%02c] %-Lw%40L>%{=b bw}%n%f %t %{= wb}%+Lw %{= wb}%=@%H[$LANG] (%l)"

altscreen on

vbell off

2012/04/15(日)Google Code Jam 2012 Qualに参加して60点を取ったよ!

はてブ数 2012/04/15 19:03 計算機な日記::プロコンつーさ

問題: http://code.google.com/codejam/contest/1460488/dashboard

A 謎言語 Googlerese

Googlerese は、アルファベットを1対1で置き換えた新言語です。
たとえば、"a zoo"は"y qee"になります。
Gppglerese 表現が与えられるので元に戻してください。
この置換表はテストケースごとに変わったりしません。

謎問題というか斬新というか。
問題文中のヒントとサンプルインプットから推測すればよいのね。
q->z だけわからなかったので加えた。

続きを読む

2012/04/01(日)C# で BigInteger

はてブ数 2012/04/01 07:37 プログラミング::C#つーさ

とりあえず10進数で2300桁ぐらい扱える全然BigじゃないBigInt。負の値は扱えない。
256のとこを大きくしたら扱える桁数が増える。

割り算と剰余演算子作るのめんどくさくて作ってないけど、
たいてい必要になるのってその辺なんだよなー。もじゅろ10億7とかさー。
というわけで、longのもじゅろだけはとれるよーにしといた。

実戦で使える速度が出るかどうかは未検証。
まぁでもそういう問題は、たぶん、計算量的に無理なようにできてるでしょうね。

続きを読む

2012/04/01(日)C# で 素数表を得る。エラトステネスのふるい

はてブ数 2012/04/01 03:57 プログラミング::C#つーさ

素数表を得る

class PrimeTable {
    public List<int> Primes = new List<int>();
    public bool[] IsPrime;
    public PrimeTable(int max) {
        IsPrime = new bool[max + 1];
        for (int i = 2; i <= max; i++) IsPrime[i] = true;
        for (int i = 2; i <= max; i++)
            if (IsPrime[i]) {
                Primes.Add(i);
                for (int j = i * 2; j <= max; j += i)
                    IsPrime[j] = false;
            }
    }
}

public class Program {
    static void Main() {
        foreach (var p in new PrimeTable(100).Primes)
            Console.WriteLine(p);
    }
}

2012/03/31(土)C# で PriorityQueue を使いたいので

はてブ数 2012/03/31 22:51 プログラミング::C#つーさ

Dijkstra とか教科書通りに書きたいとき。コピペしていいプロコン用に。

public class PriorityQueue<T> {
    List<T> list = new List<T>();
    IComparer<T> comp = Comparer<T>.Default;
    class Comparer : IComparer<T> {
        Comparison<T> comparison;
        public Comparer(Comparison<T> comparison) { this.comparison = comparison; }
        public int Compare(T x, T y) { return comparison(x, y); }
    }
    public PriorityQueue() { }
    public PriorityQueue(Comparison<T> comp) { this.comp = new Comparer(comp); }
    public void Enqueue(T item) { int i = list.BinarySearch(item, comp); list.Insert(i < 0 ? ~i : i, item); }
    public T Dequeue() { T r = list[0]; list.RemoveAt(0); return r; }
    public T Peek() { return list[0]; }
    public int Count { get { return list.Count; } }
    public T this[int i] { get { return list[i]; } set { list[i] = value; } }
}

public class Program { // てすと
    class A : IComparable<A> {
        public int X;
        public A(int x) { this.X = x; }
    }

    static void Main() {
        PriorityQueue<A> Q = new PriorityQueue<A>((x, y) => y.X - x.X); // でかい順
        Q.Push(new A(1));
        Q.Push(new A(3));
        Q.Push(new A(2));
        Q.Push(new A(1));

        Console.WriteLine(Q.Pop().X);
        Console.WriteLine(Q.Pop().X);
        Console.WriteLine(Q.Pop().X);
        Console.WriteLine(Q.Pop().X);
    }
}

中の構造に単純な配列を使ってるのでPushとPopでメモリコピーが発生してO(N)なのがどうかなー。
状態数が多くなるならちゃんとヒープ作るべきなのかも。

SortedList は、キーが重複できないのでいやーんな感じ。
つーか、もうちょっとスニペットを充実させておきたいなぁ。

2012/03/19(月)Windows 8 CP 入れてみた

はてブ数 2012/03/19 23:23 計算機な日記::ボクと計算機つーさ

7はあまり使ったことがないのでXPと比較して、だけど(あれ? Vistaが忘れ去られている?)

標準で、Windows Mobileと同期できる。繋いだらなんか起動した。ActiveSyncとか要らない。

ISOイメージを標準でマウントできるようになった。

Metro側は、今までの操作方法が通用しないので、いまひとつ馴染めずにいる。
Office2007のリボンじゃないけど、使ってくと便利なんだろうか。

start.png

スタートメニュー(?)が残念なことになりがち

アプリは評価版だからかまだまだこれから。このままリリースされたら不便すぎる。
アプリの終了の仕方がわからない。

Ctrl CapsLockがいつものレジストリを使った方法で入れ替えられない。
http://technet.microsoft.com/en-us/sysinternals/bb897578.aspx

PCのスペックも変わりすぎてて、OSが早くなったのかPCが早くなったのかわからないけど、
Windows Updateも快適そのもの。なんのストレスにもなりはしない。

Windows Live アカウントでログインできるようになった。どこでも同じ環境を。
でも、C:\\Users\\とも を掘られた。げんなり。

スクリーンの左上にアプリの切り替えがついた。
これのおかげで、Windows 3.1時代からあるウィンドウの左上ダブルクリックが、ちょっとめんどくさくなった。

シャットダウンなどはスクリーンの右下にマウスを持ってって上に動かす、
とメニューが出てくるので、その中の設定から。
基本、放置で勝手にスリープする使い方なんだろうか。