Google DevQuiz 2011 解答例「スライドパズル」編

前回の「一人ゲーム」編に続き、今回のDevQuizの最難関であり、先週末の日本の消費電力量を数パーセント上げたと言われる(?)「スライドパズル」の解答を公開します。

「スライドパズル」のルールは、

  • 幅3~6、高さ3~6マスのボードが与えられる
  • ボードの各マスは、パネル、壁、空白のいずれか
  • パネルは1-9およびA-Z、壁は=、空白は0で示される
  • 空白は上下左右のパネルと入れ替えられるが、壁とは入れ替えられない
  • 空白を上下左右のパネルと入れ替えることをそれぞれ”U”,”D”,”L”,”R”で示す
  • 与えられた初期配置をゴール配置まで導く解を”U”,”D”,”L”,”R”の文字列で解答する
  • ゴール配置は、左上から右下に向かって1→Zのパネルが順番に並び、右下隅が0となる
  • 問題数は5000問で、一問解く毎に0.01点が与えられる
  • 解答に使える”U”,”D”,”L”,”R”それぞれの総数には上限がある

というものです。つまり、様々なサイズの15パズルに”壁”というルールを加えたもの。
Continue reading →

Google DevQuiz 2011 解答例「一人ゲーム」編

IT業界人、特にプログラマーにとっては恒例のイベントとなりつつある、GoogleのDevQuiz。9月12日の午前10時で解答の送信が締め切られ、有志による解答例の公開(いわゆる”晒し”)が始まっています。

ということで、私も自分の解答を”晒し”てみることにします。まずは、分野別クイズの「一人ゲーム」から。
Continue reading →

Javaのprotectedの意味

Javaのアクセス修飾子protectedで少しハマったので、調べた内容をメモしておきます。

通常、protectedと指定されたフィールドやメソッドは「同一package内と、そのクラスを継承したサブクラス内からアクセスできる」と説明されます。私自身も同様の理解だったのですが、次のようなケースで予想外の挙動となりました。

クラスBaseとChildが別のpackageに属する場合、

package base;

public class Base {
	
	protected void baseMethod() {
		System.out.println("Base method.");
	}
	
}
package child;

import base.Base;

public class Child extends Base {

	public void childMethod(Base base) {
		base.baseMethod();	// NG
	}
	
}

Childクラスの中でBaseクラスの引数を受け取ってbaseMethod()を呼び出そうとすると、”The method baseMethod() from the type Base is not visible”と怒られてしまうのです。
Continue reading →

GoogleがURL短縮サービス開始

Googleがbit.lyのようなURL短縮サービスgoo.glを開始しました。

当社サイトのURLなら、
http://www.bitmeister.jp/http://goo.gl/PY9Q
こんな感じになります。

さらに、短縮後のURLの後に”.qr”を付けたhttp://goo.gl/PY9Q.qrにアクセスすると、こんなQRコード画像を生成してくれるのが面白いところ。

ちなみに、「.gl」はグリーンランドのTLDだそうです。

ActionScript3.0でSingletonパターンを実装する

最近、ActionScript3.0でコードを書いています。当然、今まで使っていた言語とは様々な仕様上の違いがあるのですが、その中でちょっと困ったのは、コンストラクタにprivate属性を指定できないこと。Singletonパターンなどを実装しようとしてprivateなコンストラクタを宣言すると、コンパイル時に「A constructor can only be declared public.」というエラーが発生してしまいます。

小さなプロジェクトであれば「インスタンス化しないように注意する」ということでもなんとかなりますが、やはりどうしても寝覚めが悪いので、対策を考えてみます。
Continue reading →