この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 件のコメント:
コメントを投稿