Subtitles section Play video
-
Ethic, Hedge, and Octavia stand on the edge of a bottomless ravine.
-
It's the only thing between them and the tower
-
that houses the second of three powerful artifacts.
-
They've got a brief window of time to get across before the guards return.
-
With Hedge's fuel gauge on empty he won't be able to fly Ethic across,
-
so the only option is to make a bridge.
-
Fortunately, the floating stacks of stones nearby are bridge components—
-
invented by Octavia herself— called hover-blocks.
-
Activate a pile with a burst of energy,
-
and they'll self-assemble to span the ravine as Ethic walks across.
-
But there is, of course, a catch.
-
The hover-blocks are only stable when they're perfectly palindromic.
-
Meaning they have to form a sequence
-
that's the same when viewed forwards and backwards.
-
The stacks start in random orders,
-
but will always put themselves into a palindromic configuration
-
if they can.
-
If they get to a point where a palindrome isn't possible,
-
the bridge will collapse,
-
and whoever's on it will fall into the ravine.
-
Let's look at an example.
-
This stack would make itself stable.
-
First the A blocks hold themselves in place.
-
Then the B's.
-
And finally the C would nestle right between the B's.
-
However, suppose there was one more A.
-
First two A blocks form up, then two B's,
-
but now the remaining C and A have nowhere to go,
-
so the whole thing falls apart.
-
The Node of Power enables Hedge to energize a single stack of blocks.
-
What instructions can Ethic give Hedge to allow him to efficiently find
-
and power a stable palindromic stack?
-
Pause now to figure it out for yourself.
-
Examples of palindromes include ANNA, RACECAR, and MADAM IM ADAM.
-
Counting the number of times a given letter appears in a palindrome
-
will reveal a helpful pattern.
-
Pause now to figure it out for yourself.
-
Let's first look at a naïve solution to this problem.
-
A naïve solution is a simple, brute-force approach that isn't optimized—
-
but will get the job done.
-
Naïve solutions are helpful ways to analyze problems,
-
and work as stepping stones to better solutions.
-
In this case, a naïve solution is to approach a pile of blocks,
-
try all the arrangements,
-
and see if one is a palindrome by reading it forward and then backwards.
-
The problem with this approach
-
is that it would take a tremendous amount of time.
-
If Hedge tried one combination every second,
-
a stack of just 10 different blocks would take him 42 days to exhaust.
-
That's because the total time is a function of the factorial
-
of the number of blocks there are.
-
10 blocks have over 3 million combinations.
-
What this naïve solution shows is that we need a much faster way
-
to tell whether a pile of blocks can form a palindrome.
-
To start, it may be intuitively clear that a pile of all different blocks
-
will never form one.
-
Why?
-
The first and last blocks can't be the same if there are no repeats.
-
So when can a given sequence become a palindrome?
-
One way to figure that out is to analyze a few existing palindromes.
-
In ANNA, there are 2 A's and 2 N's.
-
RACECAR has 2 R's, 2 A's, 2 C's, and 1 E.
-
And MADAM IM ADAM has 4 M's, 4 A's, 2 D's, and 1 I.
-
The pattern here is that most of the letters occur
-
an even number of times,
-
and there's at most 1 that occurs just once.
-
Is that it?
-
What if RACECAR had 3 E's instead of 1?
-
We could tack the new E's onto the ends and still get a palindrome,
-
so 3 is ok.
-
But make that 3 E's and 3 C's, and there's nowhere for the last C to go.
-
So the most generalized insight is that
-
at most one letter can appear an odd number of times,
-
but the rest have to be even.
-
Hedge can count the letters in each stack and organize them into a dictionary,
-
which is a tidy way of storing information.
-
A loop could then go through and count how many times odd numbers appear.
-
If there are less than 2 odd characters, the stack can be made into a palindrome.
-
This approach is much, much faster than the naïve solution.
-
Instead of factorial time, it takes linear time.
-
That's where the time increases
-
in proportion to the number of blocks there are.
-
Now write a loop for Hedge to approach the piles individually,
-
and stop when he finds a good one, and you'll be ready to go.
-
Here's what happens:
-
Hedge is fast, but there are so many piles it takes a long time.
-
Too long.
-
Ethic and Hedge are safe.
-
But Octavia is not so lucky.