Covering an 8x8 grid with X pentominoesWhere are the Wazirs?Covering an 8x8 grid with W pentominoesBigger board with the least squaresCovering Table with CoinsPentominoes On the EdgePairs of Pairs of PentominoesThe Pentomino Snake8x8 grid with no unpainted pentominoes10x10 grid with no unpainted hexominoesKnights covering a 10x10 chess boardKnights covering a 9x9 chess boardPrincesses covering an 8x8 chess board
Can I call the airport to see if my boyfriend made it through customs?
How can medieval knights protects themselves against modern guns?
Large products with glass doors
Why is SpaceX not also working on a smaller version of Starship?
What will happen to a ball kept on a frictionless inclined plane?
What does "Massage with salt" mean in a recipe?
Was Constantine The Great a Nicene Christian?
When can a taxi clearance allow me to cross multiple runways?
Help me pair my socks
How to equalize the chance of throwing the highest dice? (Riddle)
Setting tack strip in concrete
Why should I invest so much in 401(k)?
Miniseries in post-rapture US with good/evil conflict
Inverse Look-and-Say
What is a polite way to clarify my gender in phone calls?
A bob hanging in an accelerating train moves backward. What is the force moving it backward?
Pointlessly recurse down the alphabet
Who is Gail Gasram?
Good type of bike to get for commuting (thinking of road v touring)
Exactly what color was the text on monochrome terminals with green-on-black and amber-on-black screens?
If password expiration is applied, should door-lock expiration be applied too?
What is the difference between "cat < filename" and "cat filename"?
More recent introductory text on Differential Geometry similar to Kobayashi/Nomizu
Pointing the index fingers to one another as a way to excuse oneself: is this a common gesture?
Covering an 8x8 grid with X pentominoes
Where are the Wazirs?Covering an 8x8 grid with W pentominoesBigger board with the least squaresCovering Table with CoinsPentominoes On the EdgePairs of Pairs of PentominoesThe Pentomino Snake8x8 grid with no unpainted pentominoes10x10 grid with no unpainted hexominoesKnights covering a 10x10 chess boardKnights covering a 9x9 chess boardPrincesses covering an 8x8 chess board
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;
.everyonelovesstackoverflowposition:absolute;height:1px;width:1px;opacity:0;top:0;left:0;pointer-events:none;
$begingroup$
What is the minimum number of X pentominoes you need to cover every cell of an 8x8 grid? Pentominoes may overlap each other and sit outside the boundary of the grid. An X pentomino looks like this:
mathematics combinatorics polyomino
$endgroup$
add a comment
|
$begingroup$
What is the minimum number of X pentominoes you need to cover every cell of an 8x8 grid? Pentominoes may overlap each other and sit outside the boundary of the grid. An X pentomino looks like this:
mathematics combinatorics polyomino
$endgroup$
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
1
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01
add a comment
|
$begingroup$
What is the minimum number of X pentominoes you need to cover every cell of an 8x8 grid? Pentominoes may overlap each other and sit outside the boundary of the grid. An X pentomino looks like this:
mathematics combinatorics polyomino
$endgroup$
What is the minimum number of X pentominoes you need to cover every cell of an 8x8 grid? Pentominoes may overlap each other and sit outside the boundary of the grid. An X pentomino looks like this:
mathematics combinatorics polyomino
mathematics combinatorics polyomino
asked Oct 16 at 4:43
Dmitry KamenetskyDmitry Kamenetsky
4,5726 silver badges44 bronze badges
4,5726 silver badges44 bronze badges
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
1
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01
add a comment
|
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
1
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
1
1
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01
add a comment
|
6 Answers
6
active
oldest
votes
$begingroup$
I can prove that the answer is exactly
16 pentominoes
Several people, including Jaap Scherphuis, have shown that the square can be covered with this many pentominoes, so it only remains to show that at least this many pentominoes are needed. (A matching lower bound).
Let us start with the magic board given by A. Rex:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
As mentioned by A. Rex, any pentomino placed on this board will cover squares totaling at most 27 - exactly 27 if the center is on the board, and at most 13 if not. The numbers on the board total 400.
As a first lower bound,
at least 15 pentominoes are required, because 14 pentominoes can cover squares totaling at most 14*27 = 378, and hence not all of the squares.
However,
15 pentominoes can only cover squares totaling at most 15*27 = 405. This means that if 15 pentominoes cover the board, they cannot double-cover any square or squares totaling at least 6, and no pentomino can be centered off the board. If squares totaling at least 6 were double-covered, then the sum would be at least 406, which is impossible.
Therefore, we can try placing pentominoes
under the assumption that 15 can cover the board, and see what deductions we can make.
Let's label the squares like a chess board, and start by looking at the square h1, in the bottom right corner.
To cover that square,
We must place a pentomino centered at either h1, g1 or h2. h2 and g1 are symmetrical, so we only need to consider one.
Let's start by
placing a pentomino centered at h1, and see where that gets us. We now must cover the square g2. We can't do so by placing a pentomino centered at g1, g2 or h2, because those would double-cover too much. Therefore, we must place a pentomino centered at either f2 or g3. These are symmetrical, so without loss of generality let's place a pentomino centered at f2. Next, we must cover the square h3. We can't do so by placing a pentomino centered at h2, h3 or g3, because those would double-cover too much. Therefore, we must place a pentomino centered at h4. Next, we must cover the square g3. We can't do so in any way without double-covering too much. Thus, if we start with a pentomino centered at h1, we will definitely double-cover too much to cover the square with only 15 pentominoes.
On the other hand, let's try starting by
placing a pentomino at g1. I'll abbreviate what follows, using "the only option" to mean "the only option that doesn't double cover squares totaling at least 6". We need to cover h2, the only option is to place a pentomino centered at h3. We need to cover f2, the only option is to place a pentomino centered at e2. We need to cover d1, the only option is to place a pentomino centered at c1. We need to cover a1, the only option is to place a pentomino centered at a2. We need to cover b3, the only option is to place a pentomino centered at b4. There is no option available to cover c3. Thus, there is no way to cover the square with 15 pentominoes starting with a pentomino centered at g1.
As a result, we have found that
It is impossible to cover the square with 15 X-pentominoes. Any such cover must cover h1, so it must include a pentomino centered at either h1 or g1, or equivalently h2. In either case, we would be required to double-cover a set of squares totaling at least 6, which means that the overall squares covered will total at least 406, which is impossible, since each pentomino covers at most 27, for a total of at most 405.
As a result, we have a matching lower and upper bound of
16 pentominoes.
$endgroup$
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
add a comment
|
$begingroup$
The X-pentomino tiles the plane, so that tiling is a good way to start. There are two ways to cut an 8x8 region out of that tiling. If one of the 4 central squares of the 8x8 region has an X centred on it, you get this
19 pentomino solution
or else you get this
20 pentomino solution
The latter can be easily improved by replacing the ones at the edges to give this
16 pentomino solution
A different way to get the same result is
to take four pentominos from the tiling. These cover a 4x4 area. By using 4 sets of 4, you get this solution.
$endgroup$
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
add a comment
|
$begingroup$
Here's another proof of the lower bound in Sriotchilism O'Zaic's answer.
Consider the following 8x8 grid of seemingly magically-chosen numbers:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
Note that if you place an X pentomino with its center anywhere on this grid, the numbers it covers sum to exactly 27. (If you place a pentomino with its center off of the grid, the numbers it covers sum to less than 27.) The sum of all of the numbers in the grid is 400.
If you cover all of the numbers in the grid with X pentominoes, and each pentomino covers a sum of at most 27, it follows you must use at least 400/27 ~ 14.8 pentominoes. Since there are an integer number of pentominoes, there must be at least 15.
$endgroup$
add a comment
|
$begingroup$
People have given some good upper bounds, how about a lower bound.
Our first lower bound can be $13$. This is the number of spaces to be filled ($64$), divided by the size of the tile ($5$) and rounded up, since we cannot have a fractional piece. This would be the number of
X
pentaminos required if we could fill the space with only 1 square extra (either outside the grid or overlapping)
However we can improve this ...
to $14$.
To do this we look at the corners of the square. These need to be filled by at least $1$X
pentamino so we can look at all the ways to do this. There are 3 (up to reflection symmetry); illustrated here on the lower right corner:
Now every way of doing this has at least $1$ square of the pentamino outside of the square. Additionally since the square is $8times 8$ no pentamino can be on two corners. Thus there are at least $4$ tiles left outside the square. This means our pentaminos must fill a footprint at least $4$ larger than the square, or size $68$. If we divide by $5$ and round up we get $14$.
However we can improve this ...
to $15$. To do this we return to the corner argument given a moment ago. Let us consider the covering of the corner that only has one outside of the square. Looking at the square outlined in red below:
Since it is inside of the square the outlined space must be covered and there are $5$ ways to cover it:
Now we notice that each way of doing it either adds overlap or area outside of the square.
Our best case scenario is the fourth one which has only one redundant space.
This means that this way of filling the corner is at least as bad as the next worse, which left two squares out of the grid.
And after verifying that the square is still to wide to cause overlap this raises our effective size to $72$ and our lower bound to $15$.
$endgroup$
add a comment
|
$begingroup$
I’m thinking:
16
The solution:
1 2 2 2 3 4 4 4
1 1 2 3 3 3 4 5
1 8 7 7 3 6 5 5
8 8 8 7 6 6 6 5
9 8 15 15 16 6 14 14
9 9 15 11 16 16 14 13
9 10 11 11 11 12 13 13
10 10 10 11 12 12 12 13
$endgroup$
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
add a comment
|
$begingroup$
Proof with brute-force procedure. Here I used fact that we for sure can cover with 16 pentominoes, so I tried to cover half with 8 or less and then see if two such half-covers cover the whole board. It takes about 15 seconds on my PC to get the answer.
#include <iostream>
#include <vector>
const int kHalfUpperBound = 8;
const int kSide = 8;
const int kExtendedSide = 10;
class Field
std::vector<int> _pentas;
std::vector<char> _data;
int _linesCovered = 0;
void UpdatePenta(int i, int inc)
_data[i] += inc;
int r = i / kExtendedSide;
int c = i % kExtendedSide;
if (c > 0) _data[i - 1] += inc;
if (c < 9) _data[i + 1] += inc;
if (r > 0) _data[i - kExtendedSide] += inc;
if (r < 9) _data[i + kExtendedSide] += inc;
public:
Field() : _data(10 * 10, 0)
void PushPenta(int i) UpdatePenta(i, 1); _pentas.push_back(i);
void PopPenta() UpdatePenta(_pentas.back(), -1); _pentas.pop_back();
void MoveTopPenta(int to) PopPenta(); PushPenta(to);
const auto& Pentas() const return _pentas;
const auto& Data() const return _data;
int LinesCovered()
for (int i = 10; i < 100; i += 10)
_data[i + 4] == 0
;
char RowToNumber(const Field& field, int r, bool reverse)
char teeth = 0;
int offset = reverse ? 7 : 0;
int sign = reverse ? -1 : 1;
for (int b = 0; b < kSide; ++b)
if (field.Data()[r*10 + 1 + offset + sign * b] != 0)
teeth += (1 << b);
return teeth;
std::vector<int> solve()
Field field;
int best = kHalfUpperBound + 1;
std::vector<int> pentas;
int gi = 0;
const int linesToFullyCover = kHalfUpperBound / 2;
// After first 5 extended lines we should have covered 3 primary lines
for (int i = 0; i < (linesToFullyCover + 1) * 10; ++i)
field.PushPenta(i);
if (field.LinesCovered() >= linesToFullyCover)
const char teethIn = RowToNumber(field, linesToFullyCover, false);
const char teethOut = RowToNumber(field, linesToFullyCover + 1, true);
if (teethIn ^ teethOut == 1 << (sizeof(teethIn) * 8))
const int curBest = field.Pentas().size();
if (curBest < best)
best = curBest;
pentas = field.Pentas();
while (i + 1 == 50)
field.PopPenta();
i = field.Pentas().back();
if (field.Pentas().empty()) return pentas;
field.MoveTopPenta(++i);
if (field.Pentas().size() == kHalfUpperBound)
i = field.Pentas().back();
field.PopPenta();
if (++gi % 1000000 == 0) std::cout << gi << std::endl;
int main()
const auto pentas = solve();
for (auto p : pentas) std::cout << (p / 10) << ',' << ((p - 10) % 10) << " ";
std::cout << std::endl;
return 0;
Output for the upper half is
1,2 1,6 2,4 2,8 3,1 3,5 4,3 4,7
So the number the minimum number of pentominoes needed is
16
$endgroup$
add a comment
|
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "559"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fpuzzling.stackexchange.com%2fquestions%2f90269%2fcovering-an-8x8-grid-with-x-pentominoes%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
I can prove that the answer is exactly
16 pentominoes
Several people, including Jaap Scherphuis, have shown that the square can be covered with this many pentominoes, so it only remains to show that at least this many pentominoes are needed. (A matching lower bound).
Let us start with the magic board given by A. Rex:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
As mentioned by A. Rex, any pentomino placed on this board will cover squares totaling at most 27 - exactly 27 if the center is on the board, and at most 13 if not. The numbers on the board total 400.
As a first lower bound,
at least 15 pentominoes are required, because 14 pentominoes can cover squares totaling at most 14*27 = 378, and hence not all of the squares.
However,
15 pentominoes can only cover squares totaling at most 15*27 = 405. This means that if 15 pentominoes cover the board, they cannot double-cover any square or squares totaling at least 6, and no pentomino can be centered off the board. If squares totaling at least 6 were double-covered, then the sum would be at least 406, which is impossible.
Therefore, we can try placing pentominoes
under the assumption that 15 can cover the board, and see what deductions we can make.
Let's label the squares like a chess board, and start by looking at the square h1, in the bottom right corner.
To cover that square,
We must place a pentomino centered at either h1, g1 or h2. h2 and g1 are symmetrical, so we only need to consider one.
Let's start by
placing a pentomino centered at h1, and see where that gets us. We now must cover the square g2. We can't do so by placing a pentomino centered at g1, g2 or h2, because those would double-cover too much. Therefore, we must place a pentomino centered at either f2 or g3. These are symmetrical, so without loss of generality let's place a pentomino centered at f2. Next, we must cover the square h3. We can't do so by placing a pentomino centered at h2, h3 or g3, because those would double-cover too much. Therefore, we must place a pentomino centered at h4. Next, we must cover the square g3. We can't do so in any way without double-covering too much. Thus, if we start with a pentomino centered at h1, we will definitely double-cover too much to cover the square with only 15 pentominoes.
On the other hand, let's try starting by
placing a pentomino at g1. I'll abbreviate what follows, using "the only option" to mean "the only option that doesn't double cover squares totaling at least 6". We need to cover h2, the only option is to place a pentomino centered at h3. We need to cover f2, the only option is to place a pentomino centered at e2. We need to cover d1, the only option is to place a pentomino centered at c1. We need to cover a1, the only option is to place a pentomino centered at a2. We need to cover b3, the only option is to place a pentomino centered at b4. There is no option available to cover c3. Thus, there is no way to cover the square with 15 pentominoes starting with a pentomino centered at g1.
As a result, we have found that
It is impossible to cover the square with 15 X-pentominoes. Any such cover must cover h1, so it must include a pentomino centered at either h1 or g1, or equivalently h2. In either case, we would be required to double-cover a set of squares totaling at least 6, which means that the overall squares covered will total at least 406, which is impossible, since each pentomino covers at most 27, for a total of at most 405.
As a result, we have a matching lower and upper bound of
16 pentominoes.
$endgroup$
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
add a comment
|
$begingroup$
I can prove that the answer is exactly
16 pentominoes
Several people, including Jaap Scherphuis, have shown that the square can be covered with this many pentominoes, so it only remains to show that at least this many pentominoes are needed. (A matching lower bound).
Let us start with the magic board given by A. Rex:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
As mentioned by A. Rex, any pentomino placed on this board will cover squares totaling at most 27 - exactly 27 if the center is on the board, and at most 13 if not. The numbers on the board total 400.
As a first lower bound,
at least 15 pentominoes are required, because 14 pentominoes can cover squares totaling at most 14*27 = 378, and hence not all of the squares.
However,
15 pentominoes can only cover squares totaling at most 15*27 = 405. This means that if 15 pentominoes cover the board, they cannot double-cover any square or squares totaling at least 6, and no pentomino can be centered off the board. If squares totaling at least 6 were double-covered, then the sum would be at least 406, which is impossible.
Therefore, we can try placing pentominoes
under the assumption that 15 can cover the board, and see what deductions we can make.
Let's label the squares like a chess board, and start by looking at the square h1, in the bottom right corner.
To cover that square,
We must place a pentomino centered at either h1, g1 or h2. h2 and g1 are symmetrical, so we only need to consider one.
Let's start by
placing a pentomino centered at h1, and see where that gets us. We now must cover the square g2. We can't do so by placing a pentomino centered at g1, g2 or h2, because those would double-cover too much. Therefore, we must place a pentomino centered at either f2 or g3. These are symmetrical, so without loss of generality let's place a pentomino centered at f2. Next, we must cover the square h3. We can't do so by placing a pentomino centered at h2, h3 or g3, because those would double-cover too much. Therefore, we must place a pentomino centered at h4. Next, we must cover the square g3. We can't do so in any way without double-covering too much. Thus, if we start with a pentomino centered at h1, we will definitely double-cover too much to cover the square with only 15 pentominoes.
On the other hand, let's try starting by
placing a pentomino at g1. I'll abbreviate what follows, using "the only option" to mean "the only option that doesn't double cover squares totaling at least 6". We need to cover h2, the only option is to place a pentomino centered at h3. We need to cover f2, the only option is to place a pentomino centered at e2. We need to cover d1, the only option is to place a pentomino centered at c1. We need to cover a1, the only option is to place a pentomino centered at a2. We need to cover b3, the only option is to place a pentomino centered at b4. There is no option available to cover c3. Thus, there is no way to cover the square with 15 pentominoes starting with a pentomino centered at g1.
As a result, we have found that
It is impossible to cover the square with 15 X-pentominoes. Any such cover must cover h1, so it must include a pentomino centered at either h1 or g1, or equivalently h2. In either case, we would be required to double-cover a set of squares totaling at least 6, which means that the overall squares covered will total at least 406, which is impossible, since each pentomino covers at most 27, for a total of at most 405.
As a result, we have a matching lower and upper bound of
16 pentominoes.
$endgroup$
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
add a comment
|
$begingroup$
I can prove that the answer is exactly
16 pentominoes
Several people, including Jaap Scherphuis, have shown that the square can be covered with this many pentominoes, so it only remains to show that at least this many pentominoes are needed. (A matching lower bound).
Let us start with the magic board given by A. Rex:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
As mentioned by A. Rex, any pentomino placed on this board will cover squares totaling at most 27 - exactly 27 if the center is on the board, and at most 13 if not. The numbers on the board total 400.
As a first lower bound,
at least 15 pentominoes are required, because 14 pentominoes can cover squares totaling at most 14*27 = 378, and hence not all of the squares.
However,
15 pentominoes can only cover squares totaling at most 15*27 = 405. This means that if 15 pentominoes cover the board, they cannot double-cover any square or squares totaling at least 6, and no pentomino can be centered off the board. If squares totaling at least 6 were double-covered, then the sum would be at least 406, which is impossible.
Therefore, we can try placing pentominoes
under the assumption that 15 can cover the board, and see what deductions we can make.
Let's label the squares like a chess board, and start by looking at the square h1, in the bottom right corner.
To cover that square,
We must place a pentomino centered at either h1, g1 or h2. h2 and g1 are symmetrical, so we only need to consider one.
Let's start by
placing a pentomino centered at h1, and see where that gets us. We now must cover the square g2. We can't do so by placing a pentomino centered at g1, g2 or h2, because those would double-cover too much. Therefore, we must place a pentomino centered at either f2 or g3. These are symmetrical, so without loss of generality let's place a pentomino centered at f2. Next, we must cover the square h3. We can't do so by placing a pentomino centered at h2, h3 or g3, because those would double-cover too much. Therefore, we must place a pentomino centered at h4. Next, we must cover the square g3. We can't do so in any way without double-covering too much. Thus, if we start with a pentomino centered at h1, we will definitely double-cover too much to cover the square with only 15 pentominoes.
On the other hand, let's try starting by
placing a pentomino at g1. I'll abbreviate what follows, using "the only option" to mean "the only option that doesn't double cover squares totaling at least 6". We need to cover h2, the only option is to place a pentomino centered at h3. We need to cover f2, the only option is to place a pentomino centered at e2. We need to cover d1, the only option is to place a pentomino centered at c1. We need to cover a1, the only option is to place a pentomino centered at a2. We need to cover b3, the only option is to place a pentomino centered at b4. There is no option available to cover c3. Thus, there is no way to cover the square with 15 pentominoes starting with a pentomino centered at g1.
As a result, we have found that
It is impossible to cover the square with 15 X-pentominoes. Any such cover must cover h1, so it must include a pentomino centered at either h1 or g1, or equivalently h2. In either case, we would be required to double-cover a set of squares totaling at least 6, which means that the overall squares covered will total at least 406, which is impossible, since each pentomino covers at most 27, for a total of at most 405.
As a result, we have a matching lower and upper bound of
16 pentominoes.
$endgroup$
I can prove that the answer is exactly
16 pentominoes
Several people, including Jaap Scherphuis, have shown that the square can be covered with this many pentominoes, so it only remains to show that at least this many pentominoes are needed. (A matching lower bound).
Let us start with the magic board given by A. Rex:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
As mentioned by A. Rex, any pentomino placed on this board will cover squares totaling at most 27 - exactly 27 if the center is on the board, and at most 13 if not. The numbers on the board total 400.
As a first lower bound,
at least 15 pentominoes are required, because 14 pentominoes can cover squares totaling at most 14*27 = 378, and hence not all of the squares.
However,
15 pentominoes can only cover squares totaling at most 15*27 = 405. This means that if 15 pentominoes cover the board, they cannot double-cover any square or squares totaling at least 6, and no pentomino can be centered off the board. If squares totaling at least 6 were double-covered, then the sum would be at least 406, which is impossible.
Therefore, we can try placing pentominoes
under the assumption that 15 can cover the board, and see what deductions we can make.
Let's label the squares like a chess board, and start by looking at the square h1, in the bottom right corner.
To cover that square,
We must place a pentomino centered at either h1, g1 or h2. h2 and g1 are symmetrical, so we only need to consider one.
Let's start by
placing a pentomino centered at h1, and see where that gets us. We now must cover the square g2. We can't do so by placing a pentomino centered at g1, g2 or h2, because those would double-cover too much. Therefore, we must place a pentomino centered at either f2 or g3. These are symmetrical, so without loss of generality let's place a pentomino centered at f2. Next, we must cover the square h3. We can't do so by placing a pentomino centered at h2, h3 or g3, because those would double-cover too much. Therefore, we must place a pentomino centered at h4. Next, we must cover the square g3. We can't do so in any way without double-covering too much. Thus, if we start with a pentomino centered at h1, we will definitely double-cover too much to cover the square with only 15 pentominoes.
On the other hand, let's try starting by
placing a pentomino at g1. I'll abbreviate what follows, using "the only option" to mean "the only option that doesn't double cover squares totaling at least 6". We need to cover h2, the only option is to place a pentomino centered at h3. We need to cover f2, the only option is to place a pentomino centered at e2. We need to cover d1, the only option is to place a pentomino centered at c1. We need to cover a1, the only option is to place a pentomino centered at a2. We need to cover b3, the only option is to place a pentomino centered at b4. There is no option available to cover c3. Thus, there is no way to cover the square with 15 pentominoes starting with a pentomino centered at g1.
As a result, we have found that
It is impossible to cover the square with 15 X-pentominoes. Any such cover must cover h1, so it must include a pentomino centered at either h1 or g1, or equivalently h2. In either case, we would be required to double-cover a set of squares totaling at least 6, which means that the overall squares covered will total at least 406, which is impossible, since each pentomino covers at most 27, for a total of at most 405.
As a result, we have a matching lower and upper bound of
16 pentominoes.
edited Oct 17 at 19:08
answered Oct 17 at 19:02
isaacgisaacg
2,0391 gold badge6 silver badges21 bronze badges
2,0391 gold badge6 silver badges21 bronze badges
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
add a comment
|
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
$begingroup$
Wow I think you have really done it! Congratulations.
$endgroup$
– Dmitry Kamenetsky
Oct 17 at 23:15
add a comment
|
$begingroup$
The X-pentomino tiles the plane, so that tiling is a good way to start. There are two ways to cut an 8x8 region out of that tiling. If one of the 4 central squares of the 8x8 region has an X centred on it, you get this
19 pentomino solution
or else you get this
20 pentomino solution
The latter can be easily improved by replacing the ones at the edges to give this
16 pentomino solution
A different way to get the same result is
to take four pentominos from the tiling. These cover a 4x4 area. By using 4 sets of 4, you get this solution.
$endgroup$
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
add a comment
|
$begingroup$
The X-pentomino tiles the plane, so that tiling is a good way to start. There are two ways to cut an 8x8 region out of that tiling. If one of the 4 central squares of the 8x8 region has an X centred on it, you get this
19 pentomino solution
or else you get this
20 pentomino solution
The latter can be easily improved by replacing the ones at the edges to give this
16 pentomino solution
A different way to get the same result is
to take four pentominos from the tiling. These cover a 4x4 area. By using 4 sets of 4, you get this solution.
$endgroup$
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
add a comment
|
$begingroup$
The X-pentomino tiles the plane, so that tiling is a good way to start. There are two ways to cut an 8x8 region out of that tiling. If one of the 4 central squares of the 8x8 region has an X centred on it, you get this
19 pentomino solution
or else you get this
20 pentomino solution
The latter can be easily improved by replacing the ones at the edges to give this
16 pentomino solution
A different way to get the same result is
to take four pentominos from the tiling. These cover a 4x4 area. By using 4 sets of 4, you get this solution.
$endgroup$
The X-pentomino tiles the plane, so that tiling is a good way to start. There are two ways to cut an 8x8 region out of that tiling. If one of the 4 central squares of the 8x8 region has an X centred on it, you get this
19 pentomino solution
or else you get this
20 pentomino solution
The latter can be easily improved by replacing the ones at the edges to give this
16 pentomino solution
A different way to get the same result is
to take four pentominos from the tiling. These cover a 4x4 area. By using 4 sets of 4, you get this solution.
edited Oct 16 at 5:56
answered Oct 16 at 5:46
Jaap ScherphuisJaap Scherphuis
22.3k1 gold badge40 silver badges93 bronze badges
22.3k1 gold badge40 silver badges93 bronze badges
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
add a comment
|
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
1
1
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
$begingroup$
Very nice solution! I am almost convinced that it is optimal.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 5:52
add a comment
|
$begingroup$
Here's another proof of the lower bound in Sriotchilism O'Zaic's answer.
Consider the following 8x8 grid of seemingly magically-chosen numbers:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
Note that if you place an X pentomino with its center anywhere on this grid, the numbers it covers sum to exactly 27. (If you place a pentomino with its center off of the grid, the numbers it covers sum to less than 27.) The sum of all of the numbers in the grid is 400.
If you cover all of the numbers in the grid with X pentominoes, and each pentomino covers a sum of at most 27, it follows you must use at least 400/27 ~ 14.8 pentominoes. Since there are an integer number of pentominoes, there must be at least 15.
$endgroup$
add a comment
|
$begingroup$
Here's another proof of the lower bound in Sriotchilism O'Zaic's answer.
Consider the following 8x8 grid of seemingly magically-chosen numbers:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
Note that if you place an X pentomino with its center anywhere on this grid, the numbers it covers sum to exactly 27. (If you place a pentomino with its center off of the grid, the numbers it covers sum to less than 27.) The sum of all of the numbers in the grid is 400.
If you cover all of the numbers in the grid with X pentominoes, and each pentomino covers a sum of at most 27, it follows you must use at least 400/27 ~ 14.8 pentominoes. Since there are an integer number of pentominoes, there must be at least 15.
$endgroup$
add a comment
|
$begingroup$
Here's another proof of the lower bound in Sriotchilism O'Zaic's answer.
Consider the following 8x8 grid of seemingly magically-chosen numbers:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
Note that if you place an X pentomino with its center anywhere on this grid, the numbers it covers sum to exactly 27. (If you place a pentomino with its center off of the grid, the numbers it covers sum to less than 27.) The sum of all of the numbers in the grid is 400.
If you cover all of the numbers in the grid with X pentominoes, and each pentomino covers a sum of at most 27, it follows you must use at least 400/27 ~ 14.8 pentominoes. Since there are an integer number of pentominoes, there must be at least 15.
$endgroup$
Here's another proof of the lower bound in Sriotchilism O'Zaic's answer.
Consider the following 8x8 grid of seemingly magically-chosen numbers:
13 7 6 8 8 6 7 13
7 1 6 5 5 6 1 7
6 6 9 3 3 9 6 6
8 5 3 7 7 3 5 8
8 5 3 7 7 3 5 8
6 6 9 3 3 9 6 6
7 1 6 5 5 6 1 7
13 7 6 8 8 6 7 13
Note that if you place an X pentomino with its center anywhere on this grid, the numbers it covers sum to exactly 27. (If you place a pentomino with its center off of the grid, the numbers it covers sum to less than 27.) The sum of all of the numbers in the grid is 400.
If you cover all of the numbers in the grid with X pentominoes, and each pentomino covers a sum of at most 27, it follows you must use at least 400/27 ~ 14.8 pentominoes. Since there are an integer number of pentominoes, there must be at least 15.
edited Oct 17 at 1:26
answered Oct 17 at 0:54
A. RexA. Rex
2115 bronze badges
2115 bronze badges
add a comment
|
add a comment
|
$begingroup$
People have given some good upper bounds, how about a lower bound.
Our first lower bound can be $13$. This is the number of spaces to be filled ($64$), divided by the size of the tile ($5$) and rounded up, since we cannot have a fractional piece. This would be the number of
X
pentaminos required if we could fill the space with only 1 square extra (either outside the grid or overlapping)
However we can improve this ...
to $14$.
To do this we look at the corners of the square. These need to be filled by at least $1$X
pentamino so we can look at all the ways to do this. There are 3 (up to reflection symmetry); illustrated here on the lower right corner:
Now every way of doing this has at least $1$ square of the pentamino outside of the square. Additionally since the square is $8times 8$ no pentamino can be on two corners. Thus there are at least $4$ tiles left outside the square. This means our pentaminos must fill a footprint at least $4$ larger than the square, or size $68$. If we divide by $5$ and round up we get $14$.
However we can improve this ...
to $15$. To do this we return to the corner argument given a moment ago. Let us consider the covering of the corner that only has one outside of the square. Looking at the square outlined in red below:
Since it is inside of the square the outlined space must be covered and there are $5$ ways to cover it:
Now we notice that each way of doing it either adds overlap or area outside of the square.
Our best case scenario is the fourth one which has only one redundant space.
This means that this way of filling the corner is at least as bad as the next worse, which left two squares out of the grid.
And after verifying that the square is still to wide to cause overlap this raises our effective size to $72$ and our lower bound to $15$.
$endgroup$
add a comment
|
$begingroup$
People have given some good upper bounds, how about a lower bound.
Our first lower bound can be $13$. This is the number of spaces to be filled ($64$), divided by the size of the tile ($5$) and rounded up, since we cannot have a fractional piece. This would be the number of
X
pentaminos required if we could fill the space with only 1 square extra (either outside the grid or overlapping)
However we can improve this ...
to $14$.
To do this we look at the corners of the square. These need to be filled by at least $1$X
pentamino so we can look at all the ways to do this. There are 3 (up to reflection symmetry); illustrated here on the lower right corner:
Now every way of doing this has at least $1$ square of the pentamino outside of the square. Additionally since the square is $8times 8$ no pentamino can be on two corners. Thus there are at least $4$ tiles left outside the square. This means our pentaminos must fill a footprint at least $4$ larger than the square, or size $68$. If we divide by $5$ and round up we get $14$.
However we can improve this ...
to $15$. To do this we return to the corner argument given a moment ago. Let us consider the covering of the corner that only has one outside of the square. Looking at the square outlined in red below:
Since it is inside of the square the outlined space must be covered and there are $5$ ways to cover it:
Now we notice that each way of doing it either adds overlap or area outside of the square.
Our best case scenario is the fourth one which has only one redundant space.
This means that this way of filling the corner is at least as bad as the next worse, which left two squares out of the grid.
And after verifying that the square is still to wide to cause overlap this raises our effective size to $72$ and our lower bound to $15$.
$endgroup$
add a comment
|
$begingroup$
People have given some good upper bounds, how about a lower bound.
Our first lower bound can be $13$. This is the number of spaces to be filled ($64$), divided by the size of the tile ($5$) and rounded up, since we cannot have a fractional piece. This would be the number of
X
pentaminos required if we could fill the space with only 1 square extra (either outside the grid or overlapping)
However we can improve this ...
to $14$.
To do this we look at the corners of the square. These need to be filled by at least $1$X
pentamino so we can look at all the ways to do this. There are 3 (up to reflection symmetry); illustrated here on the lower right corner:
Now every way of doing this has at least $1$ square of the pentamino outside of the square. Additionally since the square is $8times 8$ no pentamino can be on two corners. Thus there are at least $4$ tiles left outside the square. This means our pentaminos must fill a footprint at least $4$ larger than the square, or size $68$. If we divide by $5$ and round up we get $14$.
However we can improve this ...
to $15$. To do this we return to the corner argument given a moment ago. Let us consider the covering of the corner that only has one outside of the square. Looking at the square outlined in red below:
Since it is inside of the square the outlined space must be covered and there are $5$ ways to cover it:
Now we notice that each way of doing it either adds overlap or area outside of the square.
Our best case scenario is the fourth one which has only one redundant space.
This means that this way of filling the corner is at least as bad as the next worse, which left two squares out of the grid.
And after verifying that the square is still to wide to cause overlap this raises our effective size to $72$ and our lower bound to $15$.
$endgroup$
People have given some good upper bounds, how about a lower bound.
Our first lower bound can be $13$. This is the number of spaces to be filled ($64$), divided by the size of the tile ($5$) and rounded up, since we cannot have a fractional piece. This would be the number of
X
pentaminos required if we could fill the space with only 1 square extra (either outside the grid or overlapping)
However we can improve this ...
to $14$.
To do this we look at the corners of the square. These need to be filled by at least $1$X
pentamino so we can look at all the ways to do this. There are 3 (up to reflection symmetry); illustrated here on the lower right corner:
Now every way of doing this has at least $1$ square of the pentamino outside of the square. Additionally since the square is $8times 8$ no pentamino can be on two corners. Thus there are at least $4$ tiles left outside the square. This means our pentaminos must fill a footprint at least $4$ larger than the square, or size $68$. If we divide by $5$ and round up we get $14$.
However we can improve this ...
to $15$. To do this we return to the corner argument given a moment ago. Let us consider the covering of the corner that only has one outside of the square. Looking at the square outlined in red below:
Since it is inside of the square the outlined space must be covered and there are $5$ ways to cover it:
Now we notice that each way of doing it either adds overlap or area outside of the square.
Our best case scenario is the fourth one which has only one redundant space.
This means that this way of filling the corner is at least as bad as the next worse, which left two squares out of the grid.
And after verifying that the square is still to wide to cause overlap this raises our effective size to $72$ and our lower bound to $15$.
edited Oct 17 at 2:43
answered Oct 16 at 15:27
Sriotchilism O'ZaicSriotchilism O'Zaic
5402 silver badges14 bronze badges
5402 silver badges14 bronze badges
add a comment
|
add a comment
|
$begingroup$
I’m thinking:
16
The solution:
1 2 2 2 3 4 4 4
1 1 2 3 3 3 4 5
1 8 7 7 3 6 5 5
8 8 8 7 6 6 6 5
9 8 15 15 16 6 14 14
9 9 15 11 16 16 14 13
9 10 11 11 11 12 13 13
10 10 10 11 12 12 12 13
$endgroup$
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
add a comment
|
$begingroup$
I’m thinking:
16
The solution:
1 2 2 2 3 4 4 4
1 1 2 3 3 3 4 5
1 8 7 7 3 6 5 5
8 8 8 7 6 6 6 5
9 8 15 15 16 6 14 14
9 9 15 11 16 16 14 13
9 10 11 11 11 12 13 13
10 10 10 11 12 12 12 13
$endgroup$
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
add a comment
|
$begingroup$
I’m thinking:
16
The solution:
1 2 2 2 3 4 4 4
1 1 2 3 3 3 4 5
1 8 7 7 3 6 5 5
8 8 8 7 6 6 6 5
9 8 15 15 16 6 14 14
9 9 15 11 16 16 14 13
9 10 11 11 11 12 13 13
10 10 10 11 12 12 12 13
$endgroup$
I’m thinking:
16
The solution:
1 2 2 2 3 4 4 4
1 1 2 3 3 3 4 5
1 8 7 7 3 6 5 5
8 8 8 7 6 6 6 5
9 8 15 15 16 6 14 14
9 9 15 11 16 16 14 13
9 10 11 11 11 12 13 13
10 10 10 11 12 12 12 13
edited Oct 16 at 5:33
JMP
29.2k7 gold badges55 silver badges120 bronze badges
29.2k7 gold badges55 silver badges120 bronze badges
answered Oct 16 at 5:24
AviAvi
1,6843 silver badges29 bronze badges
1,6843 silver badges29 bronze badges
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
add a comment
|
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
1
1
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
$begingroup$
Gonna need someone to save me - formatting is nearly impossible from the phone, and there’s not even a preview...
$endgroup$
– Avi
Oct 16 at 5:26
add a comment
|
$begingroup$
Proof with brute-force procedure. Here I used fact that we for sure can cover with 16 pentominoes, so I tried to cover half with 8 or less and then see if two such half-covers cover the whole board. It takes about 15 seconds on my PC to get the answer.
#include <iostream>
#include <vector>
const int kHalfUpperBound = 8;
const int kSide = 8;
const int kExtendedSide = 10;
class Field
std::vector<int> _pentas;
std::vector<char> _data;
int _linesCovered = 0;
void UpdatePenta(int i, int inc)
_data[i] += inc;
int r = i / kExtendedSide;
int c = i % kExtendedSide;
if (c > 0) _data[i - 1] += inc;
if (c < 9) _data[i + 1] += inc;
if (r > 0) _data[i - kExtendedSide] += inc;
if (r < 9) _data[i + kExtendedSide] += inc;
public:
Field() : _data(10 * 10, 0)
void PushPenta(int i) UpdatePenta(i, 1); _pentas.push_back(i);
void PopPenta() UpdatePenta(_pentas.back(), -1); _pentas.pop_back();
void MoveTopPenta(int to) PopPenta(); PushPenta(to);
const auto& Pentas() const return _pentas;
const auto& Data() const return _data;
int LinesCovered()
for (int i = 10; i < 100; i += 10)
_data[i + 4] == 0
;
char RowToNumber(const Field& field, int r, bool reverse)
char teeth = 0;
int offset = reverse ? 7 : 0;
int sign = reverse ? -1 : 1;
for (int b = 0; b < kSide; ++b)
if (field.Data()[r*10 + 1 + offset + sign * b] != 0)
teeth += (1 << b);
return teeth;
std::vector<int> solve()
Field field;
int best = kHalfUpperBound + 1;
std::vector<int> pentas;
int gi = 0;
const int linesToFullyCover = kHalfUpperBound / 2;
// After first 5 extended lines we should have covered 3 primary lines
for (int i = 0; i < (linesToFullyCover + 1) * 10; ++i)
field.PushPenta(i);
if (field.LinesCovered() >= linesToFullyCover)
const char teethIn = RowToNumber(field, linesToFullyCover, false);
const char teethOut = RowToNumber(field, linesToFullyCover + 1, true);
if (teethIn ^ teethOut == 1 << (sizeof(teethIn) * 8))
const int curBest = field.Pentas().size();
if (curBest < best)
best = curBest;
pentas = field.Pentas();
while (i + 1 == 50)
field.PopPenta();
i = field.Pentas().back();
if (field.Pentas().empty()) return pentas;
field.MoveTopPenta(++i);
if (field.Pentas().size() == kHalfUpperBound)
i = field.Pentas().back();
field.PopPenta();
if (++gi % 1000000 == 0) std::cout << gi << std::endl;
int main()
const auto pentas = solve();
for (auto p : pentas) std::cout << (p / 10) << ',' << ((p - 10) % 10) << " ";
std::cout << std::endl;
return 0;
Output for the upper half is
1,2 1,6 2,4 2,8 3,1 3,5 4,3 4,7
So the number the minimum number of pentominoes needed is
16
$endgroup$
add a comment
|
$begingroup$
Proof with brute-force procedure. Here I used fact that we for sure can cover with 16 pentominoes, so I tried to cover half with 8 or less and then see if two such half-covers cover the whole board. It takes about 15 seconds on my PC to get the answer.
#include <iostream>
#include <vector>
const int kHalfUpperBound = 8;
const int kSide = 8;
const int kExtendedSide = 10;
class Field
std::vector<int> _pentas;
std::vector<char> _data;
int _linesCovered = 0;
void UpdatePenta(int i, int inc)
_data[i] += inc;
int r = i / kExtendedSide;
int c = i % kExtendedSide;
if (c > 0) _data[i - 1] += inc;
if (c < 9) _data[i + 1] += inc;
if (r > 0) _data[i - kExtendedSide] += inc;
if (r < 9) _data[i + kExtendedSide] += inc;
public:
Field() : _data(10 * 10, 0)
void PushPenta(int i) UpdatePenta(i, 1); _pentas.push_back(i);
void PopPenta() UpdatePenta(_pentas.back(), -1); _pentas.pop_back();
void MoveTopPenta(int to) PopPenta(); PushPenta(to);
const auto& Pentas() const return _pentas;
const auto& Data() const return _data;
int LinesCovered()
for (int i = 10; i < 100; i += 10)
_data[i + 4] == 0
;
char RowToNumber(const Field& field, int r, bool reverse)
char teeth = 0;
int offset = reverse ? 7 : 0;
int sign = reverse ? -1 : 1;
for (int b = 0; b < kSide; ++b)
if (field.Data()[r*10 + 1 + offset + sign * b] != 0)
teeth += (1 << b);
return teeth;
std::vector<int> solve()
Field field;
int best = kHalfUpperBound + 1;
std::vector<int> pentas;
int gi = 0;
const int linesToFullyCover = kHalfUpperBound / 2;
// After first 5 extended lines we should have covered 3 primary lines
for (int i = 0; i < (linesToFullyCover + 1) * 10; ++i)
field.PushPenta(i);
if (field.LinesCovered() >= linesToFullyCover)
const char teethIn = RowToNumber(field, linesToFullyCover, false);
const char teethOut = RowToNumber(field, linesToFullyCover + 1, true);
if (teethIn ^ teethOut == 1 << (sizeof(teethIn) * 8))
const int curBest = field.Pentas().size();
if (curBest < best)
best = curBest;
pentas = field.Pentas();
while (i + 1 == 50)
field.PopPenta();
i = field.Pentas().back();
if (field.Pentas().empty()) return pentas;
field.MoveTopPenta(++i);
if (field.Pentas().size() == kHalfUpperBound)
i = field.Pentas().back();
field.PopPenta();
if (++gi % 1000000 == 0) std::cout << gi << std::endl;
int main()
const auto pentas = solve();
for (auto p : pentas) std::cout << (p / 10) << ',' << ((p - 10) % 10) << " ";
std::cout << std::endl;
return 0;
Output for the upper half is
1,2 1,6 2,4 2,8 3,1 3,5 4,3 4,7
So the number the minimum number of pentominoes needed is
16
$endgroup$
add a comment
|
$begingroup$
Proof with brute-force procedure. Here I used fact that we for sure can cover with 16 pentominoes, so I tried to cover half with 8 or less and then see if two such half-covers cover the whole board. It takes about 15 seconds on my PC to get the answer.
#include <iostream>
#include <vector>
const int kHalfUpperBound = 8;
const int kSide = 8;
const int kExtendedSide = 10;
class Field
std::vector<int> _pentas;
std::vector<char> _data;
int _linesCovered = 0;
void UpdatePenta(int i, int inc)
_data[i] += inc;
int r = i / kExtendedSide;
int c = i % kExtendedSide;
if (c > 0) _data[i - 1] += inc;
if (c < 9) _data[i + 1] += inc;
if (r > 0) _data[i - kExtendedSide] += inc;
if (r < 9) _data[i + kExtendedSide] += inc;
public:
Field() : _data(10 * 10, 0)
void PushPenta(int i) UpdatePenta(i, 1); _pentas.push_back(i);
void PopPenta() UpdatePenta(_pentas.back(), -1); _pentas.pop_back();
void MoveTopPenta(int to) PopPenta(); PushPenta(to);
const auto& Pentas() const return _pentas;
const auto& Data() const return _data;
int LinesCovered()
for (int i = 10; i < 100; i += 10)
_data[i + 4] == 0
;
char RowToNumber(const Field& field, int r, bool reverse)
char teeth = 0;
int offset = reverse ? 7 : 0;
int sign = reverse ? -1 : 1;
for (int b = 0; b < kSide; ++b)
if (field.Data()[r*10 + 1 + offset + sign * b] != 0)
teeth += (1 << b);
return teeth;
std::vector<int> solve()
Field field;
int best = kHalfUpperBound + 1;
std::vector<int> pentas;
int gi = 0;
const int linesToFullyCover = kHalfUpperBound / 2;
// After first 5 extended lines we should have covered 3 primary lines
for (int i = 0; i < (linesToFullyCover + 1) * 10; ++i)
field.PushPenta(i);
if (field.LinesCovered() >= linesToFullyCover)
const char teethIn = RowToNumber(field, linesToFullyCover, false);
const char teethOut = RowToNumber(field, linesToFullyCover + 1, true);
if (teethIn ^ teethOut == 1 << (sizeof(teethIn) * 8))
const int curBest = field.Pentas().size();
if (curBest < best)
best = curBest;
pentas = field.Pentas();
while (i + 1 == 50)
field.PopPenta();
i = field.Pentas().back();
if (field.Pentas().empty()) return pentas;
field.MoveTopPenta(++i);
if (field.Pentas().size() == kHalfUpperBound)
i = field.Pentas().back();
field.PopPenta();
if (++gi % 1000000 == 0) std::cout << gi << std::endl;
int main()
const auto pentas = solve();
for (auto p : pentas) std::cout << (p / 10) << ',' << ((p - 10) % 10) << " ";
std::cout << std::endl;
return 0;
Output for the upper half is
1,2 1,6 2,4 2,8 3,1 3,5 4,3 4,7
So the number the minimum number of pentominoes needed is
16
$endgroup$
Proof with brute-force procedure. Here I used fact that we for sure can cover with 16 pentominoes, so I tried to cover half with 8 or less and then see if two such half-covers cover the whole board. It takes about 15 seconds on my PC to get the answer.
#include <iostream>
#include <vector>
const int kHalfUpperBound = 8;
const int kSide = 8;
const int kExtendedSide = 10;
class Field
std::vector<int> _pentas;
std::vector<char> _data;
int _linesCovered = 0;
void UpdatePenta(int i, int inc)
_data[i] += inc;
int r = i / kExtendedSide;
int c = i % kExtendedSide;
if (c > 0) _data[i - 1] += inc;
if (c < 9) _data[i + 1] += inc;
if (r > 0) _data[i - kExtendedSide] += inc;
if (r < 9) _data[i + kExtendedSide] += inc;
public:
Field() : _data(10 * 10, 0)
void PushPenta(int i) UpdatePenta(i, 1); _pentas.push_back(i);
void PopPenta() UpdatePenta(_pentas.back(), -1); _pentas.pop_back();
void MoveTopPenta(int to) PopPenta(); PushPenta(to);
const auto& Pentas() const return _pentas;
const auto& Data() const return _data;
int LinesCovered()
for (int i = 10; i < 100; i += 10)
_data[i + 4] == 0
;
char RowToNumber(const Field& field, int r, bool reverse)
char teeth = 0;
int offset = reverse ? 7 : 0;
int sign = reverse ? -1 : 1;
for (int b = 0; b < kSide; ++b)
if (field.Data()[r*10 + 1 + offset + sign * b] != 0)
teeth += (1 << b);
return teeth;
std::vector<int> solve()
Field field;
int best = kHalfUpperBound + 1;
std::vector<int> pentas;
int gi = 0;
const int linesToFullyCover = kHalfUpperBound / 2;
// After first 5 extended lines we should have covered 3 primary lines
for (int i = 0; i < (linesToFullyCover + 1) * 10; ++i)
field.PushPenta(i);
if (field.LinesCovered() >= linesToFullyCover)
const char teethIn = RowToNumber(field, linesToFullyCover, false);
const char teethOut = RowToNumber(field, linesToFullyCover + 1, true);
if (teethIn ^ teethOut == 1 << (sizeof(teethIn) * 8))
const int curBest = field.Pentas().size();
if (curBest < best)
best = curBest;
pentas = field.Pentas();
while (i + 1 == 50)
field.PopPenta();
i = field.Pentas().back();
if (field.Pentas().empty()) return pentas;
field.MoveTopPenta(++i);
if (field.Pentas().size() == kHalfUpperBound)
i = field.Pentas().back();
field.PopPenta();
if (++gi % 1000000 == 0) std::cout << gi << std::endl;
int main()
const auto pentas = solve();
for (auto p : pentas) std::cout << (p / 10) << ',' << ((p - 10) % 10) << " ";
std::cout << std::endl;
return 0;
Output for the upper half is
1,2 1,6 2,4 2,8 3,1 3,5 4,3 4,7
So the number the minimum number of pentominoes needed is
16
edited Oct 19 at 15:31
answered Oct 18 at 18:08
YolaYola
1113 bronze badges
1113 bronze badges
add a comment
|
add a comment
|
Thanks for contributing an answer to Puzzling Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fpuzzling.stackexchange.com%2fquestions%2f90269%2fcovering-an-8x8-grid-with-x-pentominoes%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Where are the wazirs? is basically this question but with an empty cell in the middle of the pentomino.
$endgroup$
– jafe
Oct 16 at 4:53
1
$begingroup$
It's similar but not the same. Here it is 8x8, instead of 9x9. Also we don't have the extra condition that they attack each other.
$endgroup$
– Dmitry Kamenetsky
Oct 16 at 4:56
$begingroup$
Oh, right. Didn't realize the board size was different.
$endgroup$
– jafe
Oct 16 at 5:01