This metapuzzle uses the 5 feeders shown below.
l
(
a
l
e
a
f
f
a
l
l
s
)
o
n
e
l
i
n
e
s
s
A
S
T
R
A
N
G
E
G
A
M
E
.
T
H
E
O
N
L
Y
W
I
N
N
I
N
G
M
O
V
E
I
S
N
O
T
T
O
P
L
A
Y
C
A
U
S
E
Y
O
U
W
E
R
E
R
O
M
E
O
,
I
W
A
S
A
A
N
D
M
Y
D
A
D
D
Y
S
A
I
D
,
S
T
A
Y
A
W
A
Y
F
R
O
M
J
U
L
I
E
T
B
L
A
C
K
W
A
S
P
I
C
E
H
O
C
K
E
Y
S
T
R
A
W
P
O
L
L
M
O
H
S
S
C
A
L
E
I
N
S
I
D
E
O
U
T
D
R
O
P
S
A
F
E
B
L
U
E
M
O
O
N
O
R
G
A
N
P
I
P
E
G
N
A
W
S
O
F
F
B
U
N
N
Y
H
O
P
P
.
S
H
E
R
M
A
N
4
2
W
A
L
L
A
B
Y
W
A
Y
S
Y
D
N
E
Y
,
N
S
W
We begin by examining the given Python methods. As hinted by the flavortext, each method’s name clues a particular idiom or saying with the returned enumeration. We will return to the parameters later.
Method name | Saying |
---|---|
contradictory_loyalties | pulled in opposite directions |
daylight_savings | spring forward, fall back |
herd_immunity | safety in numbers |
improbable | one in a million |
in_a_dream_world | away with the fairies |
in_fear_and_faith | the road to hell is paved with good intentions |
personal_anxiety | stew in one's own juice |
priceless_joy | money can't buy happiness |
rage_trap | cage of anger |
wildly_chaotic | three-ring circus |
Next, we observe that all feeders (or “lenses”) are multi-line where the spacing is preserved. By clicking on a constellation, we can toggle the visibility or click and drag the feeders around.
For each constellation, we can line up two feeder answers such that it forms a rebus. For example, SPRINGllaf in Constellation 4 represents “spring forward, fall back” (as the word “fall” is written in reverse). In particular, every constellation uses a unique pair of two feeder answers.
Once the two lenses are lined up, we can extract letters within the bounding boxes of the lenses, in reading order (left to right, top to bottom). These letters are another rebus, which solves to a new phrase (helpfully in alphabetical order in given constellation order).
Constellation | Method | Extracted Rebus | Phrase |
---|---|---|---|
1 | priceless_joy | onelimaTWOKIDNEYTHREEPINTO | BEAN COUNTER |
2 | contradictory_loyalties | BRAINTOBSNOW | BRAIN FREEZE |
3 | improbable | ANYTTHHEEIIMMAAGGIINNAATTIIOONN | BY ANY STRETCH OF THE IMAGINATION |
4 | daylight_savings | DAISYdaisyDAISY | DAISY CHAIN |
5 | rage_trap | AUG18AUG18 | DOUBLE DATE |
6 | personal_anxiety | THECOOKIEHANDJAR | HAND IN THE COOKIEJAR |
7 | in_fear_and_faith | 3RDFISCAL2NDFOREIGN1STHONESTY | HONESTY IS THE BEST POLICY |
8 | herd_immunity | SHHAMMERNOTAXEED | NOT THE SHARPEST TOOL IN THE SHED |
9 | wildly_chaotic | TORUBBLEORUBBLRUBBUB | REDUCE TO RUBBLE |
10 | in_a_dream_world | shiSHIORELDeld | TWO SIDES OF THE SAME SHIELD |
In addition, there is one extra letter that lies outside both lenses. These extra letters together form the cluephrase FIND MODULE.
Upon solving each of the extra rebuses, we might notice that the number of words matches the number of letters in the method parameters (with the exception of HAND IN THE COOKIE JAR).
The previous cluephrase FIND MODULE, the use of Python methods in the flavor, and the off-by-one enumeration for “cookie jar” hint that we are looking for Python modules. (Googling “cookie jar module” should be enough to pull up the documentation.) There is one word in each idiom that is a class or method in a Python module. Taking the corresponding letter in the method parameters and ordering by module name (which starts with letters A-J), we get one final cluephrase: xkcd python.
Formatted Clue | Phrase | Name | Module | Extract |
---|---|---|---|---|
def in_a_dream_world(s, t, u, v, w, x) | TWO SIDES OF THE SAME SHIELD | shield | asyncio | x |
def improbable(j, k, l, m, n, o) | BY ANY STRETCH OF THE IMAGINATION | any | builtins | k |
def priceless_joy(b, c) | BEAN COUNTER | Counter | collections | c |
def rage_trap(c, d): | DOUBLE DATE | date | datetime | d |
def in_fear_and_faith(l, m, n, o, p) | HONESTY IS THE BEST POLICY | policy | p | |
def wildly_chaotic(y, z, a) | REDUCE TO RUBBLE | reduce | functools | y |
def contradictory_loyalties(s, t) | BRAIN FREEZE | freeze | gc | t |
def personal_anxiety(e, f, g, h) | HAND IN THE COOKIEJAR | cookiejar | http | h |
def daylight_savings(n, o) | DAISY CHAIN | chain | itertools | o |
def herd_immunity(k, l, m, n, o, p, q) | NOT THE SHARPEST TOOL IN THE SHED | tool | json | n |
This is a reference to the xkcd comic named Python, which features the popular snippet import antigravity, the answer to this meta.
In the story, teammate created a number of AIs that were later removed for being too unusual. We were motivated by this to build a round (and AI) that circumvented typical puzzlehunt standards, primarily around the normalization of answers to strip whitespace and non-alphabetical characters. Inspiration also came from the emoji gimmick in Penny Park’s Creative Pictures Studios, and feedback from that round led us to reject entirely alphabetical answers without penalty.
The name of our AI, Admiral Boötes, derives from the real-life Boötes constellation and a teammate’s cat Boots.
The font used for the ASCII art is “Gloop” by polyducks. We used a program called REXPaint for drawing the art.
In order to make the newline more discoverable, we used a multi-line text input that defaulted to inserting a newline instead of submitting on “Enter” (as well as a snarky response from Boötes). We also hope that some of the more well-known feeders suggested this mechanic, such as l(a and Nemo’s address, both of which would be difficult to submit in a single line. The scavenger hunt answer was also a helpful break-in for many teams, despite being unused in the meta itself.
The constraints of this meta required some creative solutions. In particular, the answer CA/US was handcrafted for this meta with a puzzle idea already in mind, and the answer BLACK WASP was constructed at the same time as the puzzles World's Smallest Logic Puzzles and World's Largest Logic Puzzle. This is perhaps one of the few metas in history where a meta answer is constrained by a feeder puzzle in a completely unrelated round…