freeCodeCamp/curriculum/challenges/english/10-coding-interview-prep/project-euler/problem-244-sliders.md

2.4 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f4601000cf542c50ff72 Problem 244: Sliders 5 301891 problem-244-sliders

--description--

You probably know the game Fifteen Puzzle. Here, instead of numbered tiles, we have seven red tiles and eight blue tiles.

A move is denoted by the uppercase initial of the direction (Left, Right, Up, Down) in which the tile is slid, e.g. starting from configuration (S), by the sequence LULUR we reach the configuration (E):

(S) configuration S, (E) configuration E

For each path, its checksum is calculated by (pseudocode):

\begin{align}
  & \text{checksum} = 0 \\\\
  & \text{checksum} = (\text{checksum} × 243 + m_1) \\; \text{mod} \\; 100\\,000\\,007 \\\\
  & \text{checksum} = (\text{checksum} × 243 + m_2) \\; \text{mod} \\; 100\\,000\\,007 \\\\
  & \ldots \\\\
  & \text{checksum} = (\text{checksum} × 243 + m_n) \\; \text{mod} \\; 100\\,000\\,007
\end{align}$$

where $m_k$ is the ASCII value of the $k^{\text{th}}$ letter in the move sequence and the ASCII values for the moves are:

$$\begin{array}{|c|c|}
  \hline
  L & 76 \\\\ \hline
  R & 82 \\\\ \hline
  U & 85 \\\\ \hline
  D & 68 \\\\ \hline
\end{array}$$

For the sequence $LULUR$ given above, the checksum would be 19761398. Now, starting from configuration ($S$), find all shortest ways to reach configuration ($T$).

($S$) <img class="img-responsive center-block" alt="configuration S" src="https://cdn.freecodecamp.org/curriculum/project-euler/sliders-3.gif" style="display: inline-block; background-color: white; padding: 10px;">, ($T$) <img class="img-responsive center-block" alt="configuration T" src="https://cdn.freecodecamp.org/curriculum/project-euler/sliders-4.gif" style="display: inline-block; background-color: white; padding: 10px;">

What is the sum of all checksums for the paths having the minimal length?

# --hints--

`sliders()` should return `96356848`.

```js
assert.strictEqual(sliders(), 96356848);
```

# --seed--

## --seed-contents--

```js
function sliders() {

  return true;
}

sliders();
```

# --solutions--

```js
// solution required
```