i have a problem with this maths question:

How many squares are on a chess board, including 2 x 2 squares etc. can anyone help??????

Printable View

- 10-20-2002shaneNeed Help!!
i have a problem with this maths question:

How many squares are on a chess board, including 2 x 2 squares etc. can anyone help?????? - 10-20-2002Sebastiani
Try counting them.

- 10-20-2002Sang-drax
1x1 squares : 8x8 =64

2x2 squares : 8x8 - 15 = 49

3x3 squares : 8x8 - 15 - 13 = 36

...

8x8 squares : 8x8 - 15 - 13 - ... = 1

The number os positions for 1x1 squares is 64

All but 15 positions can hold the top-left corner of a 2x2 square etc.

To advertise a bit i wrote a simple program in Omicron to calculate the number of squares:

Code:`order = 8`

squares = 0

repeat

squares += 8*8 - (-order^2 + 18order - 17)

until (order-=1)==0

print squares

I case you're in a hurry, the answer is 204. - 10-20-2002Magos
So why didn't you write it in C? After all, this is a C-board :).

- 10-20-2002Sang-drax
Hehe, but this is General Discussions.

And C++ requires main() and #includes

Anyway, this should satisfy everyone: :)

Code:`#include <iostream>`

main()

{

int order = 8;

int squares = 0;

do

{

squares += 8*8 - (-(order*order) + 18*order - 17);

} while (--order != 0)

std::cout << squares;

}

- 10-20-2002Magos
Sorry, SangDrax, but your function will only count the number of 8x8 squares (which is 1) thanx to your while condition :).

Anyway, if you want an even simplier function to calculate it, here:

Code:`#include <iostream.h>`

#include <conio.h>

int Count()

{

int Squares = 0;

for(int i=1; i<=8; i++)

{

Squares += (i * i);

}

return Squares;

}

int main()

{

cout << "Nr of squares: " << Count() << endl;

getch();

return 0;

}

- 10-20-2002Sang-draxQuote:

*Originally posted by Magos*

**Sorry, SangDrax, but your function will only count the number of 8x8 squares (which is 1)**

Hehe, you're right that there is a simpler algorithm. :)

I didn't think that much, just generated a formula for the sequence I wrote above. :p

Now that I've thought a little, I have an even simpler solution:

(faster for large n, at least)

Code:`squares = (2n^3 + 3n^2 + n) / 6`

- 10-20-2002Magos
Eh, n shouldn't be the number of squares, it should be the width of the board (8 in a chess board) :).

n=64 gives 89440.

What did you use to get that formula. It doesn't look like the formula for a geometric sum. - 10-20-2002Sang-drax
Sorry for the typo once again :(

The formula can be proved using induction:

Assume that it is correct for n=k, then use that assumption to prove that it must be true for n=k+1. - 10-20-2002Sang-draxQuote:

*Originally posted by Magos*

What did you use to get that formula.

I used my program "Sequence finder".

I've attached it here.

If you want the source, download Omicron.