スタックからの情報の取り出し (KATAMINOを解くプログラムを作成する)
★前回の記事
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したのと逆順に表示されます。

リファクタリング
今後の実装のために、取り出したデータの各プロパティをローカル変数に代入して置くと便利です。 分割代入を使用すると簡潔に書けます。
const solver = { solverStack : [], // 中略 solve : () => { while (solver.solverStack.length > 0) { const {kataminoField, minEmpty, pieceId, spinId, spin, unPlacedPiece} = solver.solverStack.pop() } }, }
以上でスタックから情報を取り出すことができました。
★次回の記事
★目次