[ create a new paste ] login | about

Link: http://codepad.org/OIaelBEF    [ raw code | output | fork ]

k06a - C++, pasted on Apr 26:
#include <iostream>

using namespace std;

bool isValidHorseMove(const char * m) // "A1-B3"
{
    return 0 == (0xfffffb & ((m[0]-m[3])*(m[1]-m[4])+2));
}

int main()
{
   //  ABCDEFGH
   // 1........
   // 2..x.x...
   // 3.x...x..
   // 4...O....
   // 5.x...x..
   // 6..x.x...
   // 7........
   // 8........
   cout << "True: ";
   cout << isValidHorseMove("D4-B3");
   cout << isValidHorseMove("D4-C2");
   cout << isValidHorseMove("D4-E2");
   cout << isValidHorseMove("D4-F3");
   cout << isValidHorseMove("D4-F5");
   cout << isValidHorseMove("D4-E6");
   cout << isValidHorseMove("D4-C6");
   cout << isValidHorseMove("D4-B5");
   cout << endl;

   //  ABCDEFGH
   // 1........
   // 2.x.x.x..
   // 3..xxx...
   // 4.xxOxx..
   // 5..xxx...
   // 6.x.x.x..
   // 7........
   // 8........
   cout << "False: ";
   cout << isValidHorseMove("D4-B2");
   cout << isValidHorseMove("D4-D2");
   cout << isValidHorseMove("D4-F2");
   cout << isValidHorseMove("D4-C3");
   cout << isValidHorseMove("D4-D3");
   cout << isValidHorseMove("D4-E3");
   cout << isValidHorseMove("D4-B4");
   cout << isValidHorseMove("D4-C4");
   cout << isValidHorseMove("D4-E4");
   cout << isValidHorseMove("D4-F4");
   cout << isValidHorseMove("D4-C5");
   cout << isValidHorseMove("D4-D5");
   cout << isValidHorseMove("D4-E5");
   cout << isValidHorseMove("D4-B6");
   cout << isValidHorseMove("D4-D6");
   cout << isValidHorseMove("D4-F6");
   cout << endl;

   int count = 0;
   for (int i = 0; i < 8; i++)
   for (int j = 0; j < 8; j++)
   {
      char str[] = "D4-A1";
      str[3] += i; str[4] += j;
      if (isValidHorseMove(str))
         count++;
   }
   cout << "8: " << count << endl;
}


Output:
1
2
3
True: truetruetruetruetruetruetruetrue
False: falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
8: 8


Create a new paste based on this one


Comments: