Last active
May 17, 2020 16:53
-
-
Save solarkennedy/88246949421fdd316e693a1e972d4948 to your computer and use it in GitHub Desktop.
Math Jam Puzzle / Riddler Express from Tyler Barron
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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