2017/08/13 ~ 2017/08/16

c++のヘッダを探索パスに追加

毎回調べては忘れているのでメモ.
g++などのコンパイラのオプションとして渡せないときは環境変数を使う.


たとえば,deepnlのビルドにはeigenが必要である.
linuxbrewを使ってeigenをインストールしていた場合,
ヘッダファイルは $(brew --prefix)/Cellar/eigen/version_name/include/eigen3 にある.
よって以下のようにヘッダを指定してやればよい.

CPLUS_INCLUDE_PATH=$(brew --prefix)/Cellar/eigen/3.3.4/include/eigen3 python setup.py build

github.com

Vimでヤンクなしで一行を削除する

"_dというコマンドがあることを知った.
以下のようなmappingをすることでdでヤンクなし削除が実現できた.

github.com


stackoverflow.com

Recurring Decimals

繰り返す10進数 | Aizu Online Judge

 a_{k-1} の各桁の数値を持つベクターを作り,
ソートはベクターに対して行う.
ソート後に a_k を計算すればよい.
コードやや汚い.

//#define _GRIBCXX_DEBUG
#include <bits/stdc++.h>
# define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int make_number(vector<int> &a, int l) {
  int res = 0;
  for (int ll=l-1; ll>=0; --ll) {
    res += a[l-ll-1] * pow(10, ll);
  }
  return res;
}

int main() {
  int a0_raw, l, d;
  vector<int> a, a0;

  int i, j;
  int ak_raw;


  while (cin >> a0_raw >> l, a0_raw || l) {
    a0.resize(0); a.resize(0);
    bool reached = false;

    for (int ll=l-1; ll>=0; --ll) {
      d = a0_raw / pow(10, ll);
      a0_raw -= d * pow(10, ll);
      a0.push_back(d);
    }

    a.push_back(make_number(a0, l));

    while (1) {
      sort(a0.begin(), a0.end());
      int amin = make_number(a0, l);

      reverse(a0.begin(), a0.end());
      int amax = make_number(a0, l);

      a0_raw = amax - amin;
      a.push_back(a0_raw);

      i = a.size() - 1;
      rep (j_, i) {
        if (a[i] == a[j_]) {
          j = j_; reached = true;
          break;
        }
      }

      if (reached) break;

      a0.resize(0);
      for (int ll=l-1; ll>=0; --ll) {
        d = a0_raw / pow(10, ll);
        a0_raw -= d * pow(10, ll);
        a0.push_back(d);
      }
    }

    cout << j << " " << a0_raw << " " << i-j << endl;
  }

  return 0;
}
latexなどで利用可能なフォントの一覧を見る

XeLaTeX環境を作るとき,フォントの設定をどうすればよいかわからず色々調べた.
結果として,使用可能なフォントの一覧は fc-list というコマンドで確認できることがわかった.

Presentation with XeLaTeX

matplotlib.pyplot で日本語を使う

matplotlib.rcでフォントを指定できる.

from matplotlib import rc

font = {'family': 'YuGothic'}  # NOTE: use YuGothic for Japanese
rc('font', **font)

paper.hatenadiary.jp