freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-220-heighway-dragon.md

2.0 KiB

id title challengeType forumTopicId dashedName
5900f4481000cf542c50ff5b 問題 220: ハイウェイドラゴン 5 301863 problem-220-heighway-dragon

--description--

D_0 を 2 文字の文字列 "Fa" とします。 n ≥ 1 のとき、次の変換規則によって D_{n - 1} から D_n を得ます。

  • "a" → "aRbFR"
  • "b" → "LFaLb"

したがって、D_0 = "Fa", D_1 = "FaRbFR", D_2 = "FaRbFRRLFaLbFR" などとなります。

これらの文字列は、コンピュータグラフィックスプログラムに対する命令として解釈できます。"F" は「1単位、前へ描け」、"L" は「90 度左を向け」、"R" は「90 度右を向け」を意味し、"a" と "b" は無視されます。 コンピューターカーソルの最初の位置は (0,0) で、上の (0,1) を向いています。

D_n は、n 次のハイウェイドラゴンとして知られる風変わりな図です。 例えば、D_{10} は下図のようになります。それぞれの "F" を 1 ステップと数え、(18,16) の色付きの点は 500 ステップで到達した位置です。

500 ステップ後のハイグウェイドラゴンの図

D_{50} において、{10}^{12} ステップ後のカーソルの位置を求めなさい。 回答は、スペースなしの x,y 形式の文字列にすること。

--hints--

heighwayDragon() は文字列を返す必要があります。

assert(typeof heighwayDragon() === 'string');

heighwayDragon() は文字列 139776,963904 を返す必要があります。

assert.strictEqual(heighwayDragon(), '139776,963904');

--seed--

--seed-contents--

function heighwayDragon() {

  return true;
}

heighwayDragon();

--solutions--

// solution required