No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 10 | 11 | 12 |...| 57 | 58 | 59 || Next»

C++で忘れがちなこと

__LINE__ で行番号が取れる.これ使えば行ごとに一意な静的定数を作れる.便利かもしれない.

typeid と demangle による型情報の出力.Expression Templates で頑張っている時には必須.操作対象が型なので型を出力できないと色々困る.

#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
 
template<typename T>
void showtype() {
  int status;
  std::cout << abi::__cxa_demangle(typeid(T).name(),0,0,&status) << std::endl;
}
template<typename T>
void showtypeof(const T&) {
  showtype<T>();
}

std::inner_product は色々計算できる.

PDFのページ番号振り?

ワークショップのプロシーディング作成の過程で各著者の作ったpdfに通しのページ番号を振るのが面倒だという話を聞いた.必要な作業は,ページ番号のあるやつには上から白をかぶせて消しておくことと,あとは連番を所定の位置に置くこと.で,これを手動で1時間でやったそうで(150ページ).

面倒くさがり屋としてはプログラムでバッチ処理したくなる.白をかぶせるのは手動でやらざるを得ないかもしれないが,少なくとも連番を置いていくところぐらいプログラムでやりたい.いくつかフリーのPDF操作ライブラリがあるはずだけど,iTextはJavaとか.NETとかから使えるらしい.今度機会があれば試してみよう.

http://www.atmarkit.co.jp/fjava/javatips/134java025.html とか参考になるのかも.

primitive配列のequalityチェックは?

JUnitでprimitiveの配列の比較が良くわからないので:

assert(java.util.Arrays.equals(expected, actual));

そしてTopCoderでJava使う人が少ない…

TCO Qualification Round 1

3ヶ月振りにTopCoderに参戦.

250点:安定ソートしろ.以上.

500点:平方数で割り切れる数をある区間内で数え上げろと.区間幅が1000000しかなく,区間の開始点が1000000000000なので,エラトステネスの篩よろしく区間分の配列に平方数の倍数でチェック入れるだけ.

1000点:最大50個の数字が与えられる.与えられた数を組にして,全ての組で和が素数になるように組を作れと.答えるのは,このルールを満たすように組を作ったときに,最初の数と組になりうる数全部.最初の数は固定でいいとして,足したら素数になる相手を全部試しつつその残りで完全マッチングできるかチェックする.和を素数にしなきゃならんので,グラフは奇数と偶数の二部グラフになる.おわり.マッチングの探索をナイーブに書きすぎてシステムテストで落ちた…

そして入試なんか消えてしまえ.

何とかならないか?

研究室のCVSに何でもかんでも突っ込んでおくと,ネットワークから切断された際に古いバージョンを復帰できない.普段使うマシンのローカルCVSで物を管理すると,今度は共有がうまく出来ない.どうにかこれを両立させる方法は無いのだろうか….ローカルにはsvnで管理して,全体としてsvnとcvsで二重に管理すれば何とかできるかなぁ? あほらしいよなぁ.

apple lines (あなごる)

130Bから縮まない.相変わらず数字をディクリメントする部分が長すぎる.入力に特化してしまえばもう少し縮まる気もするけれど… 負けだよなぁ.

それはさておきそろそろ帰る支度をするか.

«Prev || 1 | 2 | 3 |...| 10 | 11 | 12 |...| 57 | 58 | 59 || Next»
Search
Feeds

Page Top