★前回の記事
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() } }, }
以上でスタックから情報を取り出すことができました。
★次回の記事
★目次