スタックからの情報の取り出し (KATAMINOを解くプログラムを作成する)

★前回の記事

yucatio.hatenablog.com

solve関数を実装していきます。 この関数内では、スタックからフィールドとピースの組み合わせを1つ取り出し、すべてのピースがフィールドに置けるまで(もしくはすべての組み合わせを試して、解けないことが確定するまで)フィールドにピースを置くということを繰り返します。

実装

前回スタックに投入したデータを1つずつ取り出してみましょう。while (solver.solverStack.length > 0)で配列にデータがあるあいだ、ブロックを実行します。solver.solverStack.pop()でスタックからデータを取り出します。

js/solver.js

const solver = {
  solverStack : [], 

  // 中略

  solve : () => {
    while (solver.solverStack.length > 0) {
      const popped = solver.solverStack.pop()
      console.log("popped", popped)
    }
  },
}

実行結果

以下のように表示されていれば成功です。 スタックにpushしたのと逆順に表示されます。

f:id:yucatio:20190722092737p:plain

リファクタリング

今後の実装のために、取り出したデータの各プロパティをローカル変数に代入して置くと便利です。 分割代入を使用すると簡潔に書けます。

const solver = {
  solverStack : [], 

  // 中略

  solve : () => {
    while (solver.solverStack.length > 0) {
      const {kataminoField, minEmpty, pieceId, spinId, spin, unPlacedPiece} = solver.solverStack.pop()
    }
  },
}

以上でスタックから情報を取り出すことができました。


★次回の記事

yucatio.hatenablog.com

★目次

yucatio.hatenablog.com