再帰、ふたたび

This was created during my time as a Code Chrysalis Student

これはもう見慣れていますよね! ここではふたたび再帰を扱います。見たことのあるものと新たな問題の両方に取り組んでいきましょう。

学習の目的

次のことを念頭に進めていきましょう。

  • Node と yarn を用いてテストを実行できるようにすること
  • 各関数につき最低 4 つのテストがあるのを確認すること
  • それぞれのマイルストーンの後には必ずコードをコミットする習慣をつけること

この課題では、現実世界で再帰を用いるシナリオ(getElementsByClassName)、そしてより仮説的な / アルゴリズム上でのシナリオの 2 つを想定しています。

  • ベースケースとリカーシブケースを特定して、複雑で反復の多いタスクを解決すること

準備

Code Chrysalis git flow instructions を参考に、このリポジトリをフォークし、そしてクローンしてください。

依存物のインストール: yarn install

テストを実行するコマンド: yarn test

基本演習

  1. getElementsByClassName.js のテストはかなり複雑なので、みなさんのためにすでに用意してあります。テストスペックをよく読み、個別のテストの意味するところをしっかり理解してください。ちゃんと自信を持って説明できますか?
  2. src/getElementByClassName.js を解き終える
    1. JavaScript の Document オブジェクトは素晴らしいものです。これはたくさんの美しい出来事、たとえば、クラス名を入れるだけで、同じクラス名を持ったページ上のあらゆる要素を取得することができます。ですが、便利な道具に頼っていては練習になりません! 自分でオリジナルのメソッドを作ってみましょう。
  3. src/robotPaths.js を解き終える
    1. N x N マスの格子の左上にいるロボットが、右下に移動しようとしています。ロボットは水平と垂直方向には動けますが、斜めには動けず、同じマスを 2 度通ることはできません。右下に到達する道筋は、何通り考えられるでしょうか?

中級演習

  1. src/stringifyJSON.js のために少なくとも 4 つのテストを書け。
  2. src/stringifyJSON.js を解け。

上級演習

  1. src/parseJSON.js を解け。ただし、JSON.parse を使ってはいけません。自分でメソッドを作ってください。