Files
freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-244-sliders.md
2022-04-02 17:46:30 +09:00

2.8 KiB
Raw Permalink Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f4601000cf542c50ff72 問題 244: スライダー 5 301891 problem-244-sliders

--description--

「15 パズル」というゲームをおそらく知っているでしょう。 ここでは、番号付けされたタイルの代わりに、7 枚の赤タイルと 8 枚の青タイルがあります。

移動は、タイルがスライドされる方向 (L=左、R=右、U=上、D=下) の大文字イニシャルで表されます。 例えば、ある構成 (S) から始め、文字列 LULUR で表される移動により、構成 (E) に到達します。

(S) configuration S (E) 構成 E

それぞれの経路について、下記 (擬似コード) によってそのチェックサムが計算されます。

$$\begin{align} & \text{チェックサム} = 0 \\ & \text{チェックサム} = (\text{チェックサム} × 243 + m_1) \; \text{mod} \; 100\,000\,007 \\ & \text{チェックサム} = (\text{チェックサム} × 243 + m_2) \; \text{mod} \; 100\,000\,007 \\ & \ldots \\ & \text{チェックサム} = (\text{チェックサム} × 243 + m_n) \; \text{mod} \; 100\,000\,007 \end{align}$$

ここで、m_k は移動を表す文字列の k 番目の文字の ASCII コード値です。この移動の ASCII コードを下表に示します。

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

上述の文字列 LULUR の場合、チェックサムは 19761398 になるでしょう。 構成 (S) から始めて構成 (T) に到達するための、最短の移動経路をすべて求めなさい。

(S) configuration S (T) 構成 T

長さが最小である経路のチェックサムの総和を求めなさい。

--hints--

sliders()96356848 を返す必要があります。

assert.strictEqual(sliders(), 96356848);

--seed--

--seed-contents--

function sliders() {

  return true;
}

sliders();

--solutions--

// solution required