2024 TCS Problem 1
Source:
April 23, 2024
Tcs
Problem Statement
Mellon Game Lab has come up with a concept for a new game: Square Finder. The premise is as follows. You are given an grid of squares (for integer ), each of which is either blank or has an arrow pointing up, down, left, or right. You are also given a grid of squares that appears somewhere in this grid, possibly rotated. For example, see if you can find the following grid inside the larger grid.[asy]
size(2cm);
defaultpen(fontsize(16pt));
string b = "";
string u = "";
string d = "";
string l = "";
string r = "";
// input should be n x n
string[][] input =
{{b,u},{r,l}};
int n = input.length;
// draw table
for (int i=0; i<=n; ++i)
{
draw((i,0)--(i,n));
draw((0,i)--(n,i));
}
// fill table
for (int i=1; i<=n; ++i)
{
for (int j=1; j<=n; ++j)
{
label(input[i-1][j-1], (j-0.5,n-i+0.5));
}
}
[/asy][asy]
size(4cm);
defaultpen(fontsize(16pt));
string b = "";
string u = "";
string d = "";
string l = "";
string r = "";
// input should be n x n
string[][] input =
{{u,b,b,r},{b,r,u,d},{d,b,u,b},{u,r,b,l}};
int n = input.length;
// draw table
for (int i=0; i<=n; ++i)
{
draw((i,0)--(i,n));
draw((0,i)--(n,i));
}
// fill table
for (int i=1; i<=n; ++i)
{
for (int j=1; j<=n; ++j)
{
label(input[i-1][j-1], (j-0.5,n-i+0.5));
}
}
[/asy]Did you spot it? It's in the bottom left, rotated by clockwise. To make the game as interesting as possible, Mellon Game Lab would like the grid to be as large as possible and for no grid to appear more than once in the big grid. The grid above doesn't work, as the following grid appears twice, once in the top left corner (rotated counterclockwise) and once directly below it (overlapping).[asy]
size(2cm);
defaultpen(fontsize(16pt));
string b = "";
string u = "";
string d = "";
string l = "";
string r = "";
// input should be n x n
string[][] input =
{{b,r},{d,b}};
int n = input.length;
// draw table
for (int i=0; i<=n; ++i)
{
draw((i,0)--(i,n));
draw((0,i)--(n,i));
}
// fill table
for (int i=1; i<=n; ++i)
{
for (int j=1; j<=n; ++j)
{
label(input[i-1][j-1], (j-0.5,n-i+0.5));
}
}
[/asy]Let's call a grid that avoids such repeats a repeat-free grid. We are interested in finding out for which constructing an repeat-free grid is possible. Here's what we know so far.[*] Any grid is repeat-free, as there is only one subgrid to worry about, and there can't possibly be any repeats.
[*] If we can construct an repeat-free grid, we can also construct a repeat-free grid for any by just taking the top left of the original one we found.
[*] By the previous observation, if it is impossible to construct such an repeat-free grid, we cannot construct a repeat-free grid for any , as otherwise we could take the top left to get one working for .
These three observations together tell us that either we can construct an repeat-free grid for all , or there exists some upper limit such that we can construct an repeat-free grid for all but cannot construct one for any . Your goal is to determine if such an exists, and if so, place bounds on its value.More precisely, this problem consists of two parts: a lower bound and an upper bound. For the lower bound, to show that for some , you need to construct an repeat-free grid (you do not need to prove your construction works). For the upper bound, to show that is at most some value , you must prove that it is impossible to construct an repeat-free grid.Proposed by Connor Gordon and Eric Oh