yucatio@システムエンジニア

趣味で作ったものいろいろ

フィールドの初期化 (KATAMINOを解くプログラムを作成する)

★前回の記事

yucatio.hatenablog.com

KATAMINOのピースを置くフィールドを初期化します。 フィールドのサイズは、5 × (置くピースの数)です。

f:id:yucatio:20190619224647p:plain

詳しくは以下の記事を参照してください。

yucatio.hatenablog.com

実装

フィールドの各値を-1で初期化します。配列を引数で与えられた値で埋めるArray.fill ( Array.prototype.fill() - JavaScript | MDN ) という関数を使用しています。

js/solver.js

const solver = {
  init : (targetPiece) => {
    const kataminoField = []
    for(let i=0; i < 5; i++) {
      kataminoField.push((new Array(targetPiece.length)).fill(-1))
    }
    console.log("kataminoField", kataminoField)
  },
  // 中略
}

動作確認

以下のようになっていれば成功です。今回は引数で渡されたピースが3つなので、5×3の配列が作成されています。

f:id:yucatio:20190721223754p:plain

リファクタリング

長さ5の配列を定義し、mapを使用することで以下のように書き換えることもできます。

const solver = {
  init : (targetPiece) => {
    const kataminoField = new Array(5).fill().map(() => (
      new Array(targetPiece.length).fill(-1)
    ))
    console.log("kataminoField", kataminoField)
  },
}

new Array(5)mapの間にfillを挟む理由は以下の記事を参照してください。

yucatio.hatenablog.com

以上でフィールドの初期化を行うことができました。


★次回の記事

yucatio.hatenablog.com

★目次

yucatio.hatenablog.com