かーみーのだらだら雑記

2010-10-21

Topcoderをやってみた

Topcoderデビュー

NumberMagicEasyという問題に挑戦。

言語はJavaでやってみました。

Eclipse + JUnitデバッグしながら何とか完成。

我ながら酷いコードだと思います


public class NumberMagicEasy {
  private final static int[][] cards = { { 1, 2, 3, 4, 5, 6, 7, 8 },
                                         { 1, 2, 3, 4, 9, 10, 11, 12 },
                                         { 1, 2, 5, 6, 9, 10, 13, 14 },
                                         { 1, 3, 5, 7, 9, 11, 13, 15 } };
  private int[] hit = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  private int[] no = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

  public int theNumber(String answer) {
    int n = 0;
    while (n < answer.length()) {
      if (answer.startsWith("Y", n)) {
        for (int i = 0; i < 8; ++i) {
          hit[cards[n][i] - 1]++;
        }
      } else if (answer.startsWith("N", n)) {
        for (int i = 0; i < 8; ++i) {
          no[cards[n][i] - 1]++;
        }
      }
      n++;
    }
    for (int i = 0; i < hit.length; ++i) {
      if (hit[i] > 0 && no[i] == 0) {
        return i + 1;
      }
    }
    return 16;
  }
}


追記

NumberMagicEasyリベンジ編へ続く