Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save solarkennedy/88246949421fdd316e693a1e972d4948 to your computer and use it in GitHub Desktop.
Save solarkennedy/88246949421fdd316e693a1e972d4948 to your computer and use it in GitHub Desktop.
Math Jam Puzzle / Riddler Express from Tyler Barron
You are given an empty 4-by-4 square and one marker. You can color in the individual squares or leave them untouched. After you color as many or as few squares as you’d like, I will secretly cut out a 2-by-2 piece of it and then show it to you without rotating it. You then have to tell me where it was (e.g., “top middle” or “bottom right,” etc.) in the original 4-by-4 square.
Can you design a square for which you’ll always know where the piece came from?
https://fivethirtyeight.com/features/can-you-construct-the-optimal-tournament/
Testing: [False, False, False, False, False, True, False, False, False, True, True, True, False, False, False, True]
+----+
| |
| X |
| XXX|
| X|
+----+
Testing: [False, False, False, False, False, True, False, False, True, False, True, True, False, False, False, True]
+----+
| |
| X |
|X XX|
| X|
+----+
Testing: [False, False, False, False, False, True, False, False, True, False, True, True, False, False, True, False]
+----+
| |
| X |
|X XX|
| X |
+----+
Testing: [False, False, False, False, True, False, False, True, False, True, True, False, False, True, False, False]
+----+
| |
|X X|
| XX |
| X |
+----+
Testing: [False, False, False, False, True, False, True, True, False, True, False, False, False, True, False, False]
+----+
| |
|X XX|
| X |
| X |
+----+
Testing: [False, True, False, False, True, False, False, True, False, True, False, False, False, True, False, False]
+----+
| X |
|X X|
| X |
| X |
+----+
Testing: [False, True, False, False, True, False, False, True, True, True, False, False, False, True, False, False]
+----+
| X |
|X X|
|XX |
| X |
+----+
Testing: [False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
Testing: [False, False, False, False, False, True, False, False, False, True, True, True, False, False, False, True]
+----+
| |
| X |
| XXX|
| X|
+----+
Testing: [False, False, False, False, False, True, False, False, False, True, True, True, False, False, False, False]
Testing: [False, False, False, False, False, True, False, False, False, True, True, False, False, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, False, True, False, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True]
Testing: [False, False, False, False, False, False, True, False, False, True, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, True, False, True, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, True, False, False, False, True, True, True, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, True, True, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, True, True, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, False, True, True, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, True, False, True, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, True, False, True, False, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, True, False, True, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, False, True, False, True, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, True, False, False, True, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, True, False, False, True, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, True, False, False, True, True]
Testing: [False, False, False, False, False, True, False, False, False, True, False, True, False, False, True, True]
Testing: [False, False, False, False, False, True, False, False, False, True, True, False, False, False, True, True]
Testing: [False, False, False, False, False, False, False, False, False, False, True, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, False, True, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, False, False, False, False, True]
Testing: [False, False, False, False, False, False, False, False, False, True, True, True, False, False, False, False]
Testing: [False, False, False, False, False, True, False, False, False, False, False, True, False, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, False, False, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, False, True, True, False, False, False, False]
Testing: [False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, True]
Testing: [False, False, False, False, False, True, False, False, False, True, False, True, False, False, False, False]
Testing: [False, False, False, False, False, True, False, False, False, True, True, False, False, False, False, False]
Falsifying example: test_unique(e=[False,
False,
False,
False,
False,
True,
False,
False,
False,
True,
True,
True,
False,
False,
False,
True])
Testing: [False, False, False, False, False, True, False, False, False, True, True, True, False, False, False, True]
+----+
| |
| X |
| XXX|
| X|
+----+
Traceback (most recent call last):
File "test.py", line 39, in <module>
test_unique()
File "test.py", line 34, in test_unique
def test_unique(e):
File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 918, in wrapped_test
state.run()
File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 660, in run
falsifying_example.__expected_traceback,
File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 519, in execute
result = self.test_runner(data, run)
File "/usr/lib/python3/dist-packages/hypothesis/executors.py", line 58, in default_new_style_executor
return function(data)
File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 517, in run
return test(*args, **kwargs)
File "test.py", line 34, in test_unique
def test_unique(e):
File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 464, in test
result = self.test(*args, **kwargs)
File "test.py", line 37, in test_unique
assert not all_unique_selections(boxes), pretty_print(boxes)
AssertionError: None
import hypothesis
def pretty_print(boxes):
st = "+----+\n"
for r in boxes:
st = st + "|"
for c in r:
st = st + bool_to_x(c)
st = st + "|\n"
st = st + "+----+"
print(st)
def bool_to_x(b):
if b:
return "X"
else:
return " "
def all_unique_selections(i):
seen_before = []
for x in [0,1,2]:
for y in [0,1,2]:
selection = f"{i[x][y]}{i[x+1][y]}\n{i[x][y+1]}{i[x+1][y+1]}"
if selection in seen_before:
return False
else:
seen_before.append(selection)
return True
@hypothesis.given(e=hypothesis.strategies.lists(elements=hypothesis.strategies.booleans(), min_size=16, max_size=16))
def test_unique(e):
print(f"Testing: {e}")
boxes = list(zip(*[iter(e)]*4))
assert not all_unique_selections(boxes), pretty_print(boxes)
test_unique()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment