このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題についておおまかに説明する。
Thimblesは以下のルールに従ったゲームである。ディーラーは3つの指ぬきをテーブルにおき、1番の指ぬきの下に小さなボールをいれる。つぎに2つの指ぬきの位置を交換することを繰り返す。最後にディーラーはどこにボールがあるかを尋ね、正しい指ぬきを選べば勝ち、そうでなければ負けとなるというものである。これをコンピュータで実装しようとしている。この問題では、あなたは指ぬきの位置交換が終わった時に、ボールがどこにあるかを返すモジュールを作成することになる。swaps[]という交換の順番を示した文字列型配列が与えられる。各要素は"X-Y"という形式で与えられ、XとYの位置にある指ぬきを交換したという意味になる。位置は1、2、3のいずれかである。swaps[]の交換がすべておわったとき、ボールが最後にどの位置にあるかを返すメソッドを作成せよ。
私の解答はこちら。
public class Thimbles {
public int thimbleWithBall(String[] swaps) {
int pos = 1;
for( int i=0 ; i<swaps.length ; i++ ){
String[] ns = swaps[i].split("-");
int p1 = Integer.parseInt(ns[0]);
int p2 = Integer.parseInt(ns[1]);
if( p1 == pos ){
pos = p2;
}else if( p2 == pos ){
pos = p1;
}
}
return pos;
}
}得点は245.83/250、中央値は約223点。1回のsubmitでシステムテストクリア。上の書き方なら1~3に限定されないので、既に簡単な拡張ができてますね。

0 件のコメント:
コメントを投稿