Tamflexの貯蔵庫

やる気のない備忘録

aoj 0036

平面の中の図形 | Aizu Online Judge

やるだけだがエレガントにかけない. 実際図形の認識は画像認識で重要で平面を走査して探索するのだけれども, 今回はそんなに複雑な問題ではないのでこの程度のソースでもできてしまう. テトリスAIとか作るときに役に立ちそうなのでもっといい方法をそれまでに考えたい.

int a[100];

void solve()
{
  int b;
  REP(i,64) if(a[i])
  {
    b = i;
    break;
  }
  if(a[b+1])
  {
    if(a[b+2]) printf("C\n");
    else if(a[b+8])
    {
      if(a[b+9]) printf("A\n");
      else printf("G\n");
    }
    else printf("E\n");
  }
  else if(a[b+16]) printf("B\n");
  else if(a[b+9]) printf("F\n");
  else printf("D\n");
}

int main()
{
  cin.tie(0);
  ios::sync_with_stdio(false);
  int i = 0; string s;
  fill_n(a,100,0);
  while(cin >> s)
  {
    REP(j,8) a[i*8+j] = (s[j]-'0');
    (++i) %= 8;
    if(i == 0) solve();
  }
  return 0;
}