TopCoder Arena plugin moj

mojというTopCoder Arenaのプラグインの紹介です。日本語でこれについて書いてある情報が無かったので書きました。因みにこの記事の内容の殆どは次のフォーラムの引用です。
TopCoder Forums moj (TZTester modification, new features)

mojについて

SRMのソースコードのスケルトンを生成するときに賢いテストコードを挿入します。問題に提示されている全テストケースを瞬時に正確に判定でき、時間を節約できます。
mojはTZTesterの修正版です。TZTester他のプラグインについてはぐぐってください。
機能要約:

  • 出力がかわいくなる
  • doubleの誤差1e-9まで許容
  • 簡単にカスタムテストを作れる
  • Javaと切り替え可能
  • 実行時間測定

他に特筆すべきこと:

  • gcc,VCに対応
  • テストコードがclassの外にあり邪魔にならない

出力はこんな感じにかわいくなります。

Test Case #0... PASSED (relative error 5.44969e-014)
Test Case #1... PASSED (relative error 5.68462e-012)
Test Case #2... PASSED (relative error 4.05691e-008)
Test Case #3... PASSED

使い方

フォーラムの “Download moj” のリンクからzipを落とします。CodeProcessorとFileEditも同梱されています。
基本的にmoj_instructions.txtに説明が書かれていますが、周りのプラグインの入れ方は先程のようにぐぐったほうが詳しく画像付きで説明されていたりするので、その方が間違いもなく楽です。TZTesterとの差分は、次のように読み替えるだけです。

  • TZTester.jar → moj.jar
  • tangentz.TZTester → moj.moj

既に他のプラグインを入れている方は、次の箇所を更新してください。

  • Common ClassPath
  • CodeProcessor Configuration > CodeProcessor Script
  • CodeProcessor Configuration > FileEdit Configuration > Code Template

雛形はzipにcpp,javaファイルがあるので、それに習って書き換えます。

PowerCommands for Visual Studio 2010

PowerCommands_Preview

PowerCommands for Visual Studio 2010というプラグインの紹介。何気に便利です。ソリューションエクスプローラから右クリックでコンソールやエクスプローラ,パスのコピーが出来るようになります。他にも色々機能がありそうだけどまあそれだけで十分便利。VS2010でしか使えないのが不思議。

使用しているとなぜかエディタで文字列を選択(反転)したときにVS自体のフォーカスが高速にチカチカと明滅(?)する謎の問題が発生。ウィンドウを強調しているわけでなく本当にフォーカスが当たったり外れたりを高速に繰り返します。もちろんエディタにマトモに文字が打てなくなります。

結果的にForumの方に解決法が載っていましたが英語でしか書いてなくてうまく検索にヒットせずちょっと間面倒でした。オプションからExtract Constantのチェックを外すと治ります。

Visual Studio Options

ブログソフト

ブログソフトWordPressを採用。重くてリッチなMySQL+PHP。

余計な時間を割きたくなかったので最もポピュラーな部類から選ぼうと思って、これとMovable Typeの二者択一。取り敢えず両方動かしてみようと思ったらMovable TypeがDL出来なかったのであっさりWordPressに決定。うちの鯖が王道LAMP構成なので動作に問題はない。

サイトの”インストール”に従ってそのまま問題なく設定、動かしてみると案外使い勝手が良い。ただやっぱり動作は重い。適当にググったらWP Super Cacheとか言う奴の説明があったからそのままreadmeに従ってインストール。面倒だったがこれで速く、なったのか分からない。

次に必須要件のコードハイライト、ググったら『ソースコードをハイライトしてくれるWordPressのプラグイン』って記事発見。コードハイライトプラグインの比較があるので参考にして、そこと同様にSyntaxHighlighter Evolvedに落ち着いた。C++,C#,bash辺りが対応してたらよろしい。それに割かし見た目も良いしコピーできて便利だ。

因みにGoogle ~ってのはGoogle codeにホスティングされてるsyntaxhighlighterを使ってるってだけっぽい。確かに名前がややこしいな。

最後にサンプル。n番目の素数を求める(prime(0)=2)。ちゃんと<iostream>とか出てるねw

#include <iostream>

typedef unsigned long long type;

int main()
{
	type n, p;
	std::cin >> n;

	if(!n--)
		p = 2;
	else
		for(type i = 3; ; i += 2)
		{
			for(type j = 3; j * j <= i; j += 2)
				if(i % j == 0)
					goto noprime;
			if(!n--)
			{
				p = i;
				break;
			}
			noprime:;
		}

	std::cout << p << std::endl;

	return 0;
}