shane

10-20-2002, 03:20 AM

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??????

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

View Full Version : Need Help!!

shane

10-20-2002, 03:20 AM

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??????

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

Sebastiani

10-20-2002, 03:30 AM

Try counting them.

Sang-drax

10-20-2002, 04:50 AM

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:

order = 8

squares = 0

repeat

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

until (order-=1)==0

print squares

Just run it using the online compiler

I case you're in a hurry, the answer is 204.

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:

order = 8

squares = 0

repeat

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

until (order-=1)==0

print squares

Just run it using the online compiler

I case you're in a hurry, the answer is 204.

Magos

10-20-2002, 04:58 AM

So why didn't you write it in C? After all, this is a C-board :).

Sang-drax

10-20-2002, 05:04 AM

Hehe, but this is General Discussions.

And C++ requires main() and #includes

Anyway, this should satisfy everyone: :)

#include <iostream>

main()

{

int order = 8;

int squares = 0;

do

{

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

} while (--order != 0)

std::cout << squares;

}

And C++ requires main() and #includes

Anyway, this should satisfy everyone: :)

#include <iostream>

main()

{

int order = 8;

int squares = 0;

do

{

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

} while (--order != 0)

std::cout << squares;

}

Magos

10-20-2002, 06:32 AM

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:

#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;

}

(Output: 204)

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

#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;

}

(Output: 204)

Sang-drax

10-20-2002, 06:49 AM

Originally posted by Magos

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

Oops! It's been corrected.

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)

squares = (2n^3 + 3n^2 + n) / 6

where n is the width of the board

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

Oops! It's been corrected.

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)

squares = (2n^3 + 3n^2 + n) / 6

where n is the width of the board

Magos

10-20-2002, 07:17 AM

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.

n=64 gives 89440.

What did you use to get that formula. It doesn't look like the formula for a geometric sum.

Sang-drax

10-20-2002, 07:46 AM

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.

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.

Sang-drax

10-20-2002, 08:50 AM

Originally posted by Magos

What did you use to get that formula.

Ahh

I used my program "Sequence finder".

I've attached it here.

If you want the source, download Omicron.

What did you use to get that formula.

Ahh

I used my program "Sequence finder".

I've attached it here.

If you want the source, download Omicron.

Powered by vBulletin® Version 4.2.5 Copyright © 2019 vBulletin Solutions Inc. All rights reserved.