yucatio@システムエンジニア

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

KATAMINOを解くプログラム

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

★前回の記事 yucatio.hatenablog.com フィールドにピースが置かれているかどうか判定できたので、今回はフィールドにピースを置く処理を実装します。 実装 ピースが置かれた場所を、pieceIdで更新します。kataminoFieldの値を更新してしまうとスタック内の他…

フィールドにピースが置けるかどうかの判定 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回まででスピンをどこに移動するか求めることができたので、今回はその位置に置けるかどうかを判定する関数を作成します。 ピースがフィールドに置ける条件は、以下の2点を満たすことです。 ピースがフィールドの外に…

ピースを置く場所の算出 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com スタックからフィールドとスピン情報を取得することができたので、ピースが置けるか判定していきます。 minEmptyのマスに重なるようにピースを置くのでした。 minEmptyは、フィールドのピースが置かれていないマスのうち…

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

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

スタックへの初期データの投入 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com スタックへデータを投入します。 スタックを使用するアルゴリズムについては以下の記事を参照してください。 yucatio.hatenablog.com 実装 フィールドと次に置くことができるピースをスタックへ投入します。 スタックsol…

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

★前回の記事 yucatio.hatenablog.com KATAMINOのピースを置くフィールドを初期化します。 フィールドのサイズは、5 × (置くピースの数)です。 詳しくは以下の記事を参照してください。 yucatio.hatenablog.com 実装 フィールドの各値を-1で初期化します。配…

KATMINOを解くメインのプログラムの準備 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com KATAMINOを解くメインのプログラムを作成します。 ディレクトリとhtmlファイルを用意しましょう。 KATAMINO-SOLVERフォルダの下に KATAMINO-SOLVER-mainという名前のフォルダを作成してください。 その下に index.htmlフ…

2次元配列からピースがある場所のリストを作成する (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 2次元配列からピースがある場所のリストを作成します。こちらの記事を参考にしてください。 yucatio.hatenablog.com 現在はピースを以下のように2次元配列で表現しています。ピースの場所を1, ピースでない場所を0で表現…

JavaScriptで2次元配列の重複を取り除く (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回までで8パターンの回転・反転パターンを作成することができましたが、いくつかのピースについては重複があります。例えばこちら↓ このピースの配列は、下記のようになってます。 [ [ [1,1,1], [1,0,1] ], [ [1,1], […

8パターンのスピンを作成する (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回までで、ピースの転置・反転のプログラムが作成できたので、残りのピースを作成します。 8パターンのスピンの作成については以下の記事を参照してください。 yucatio.hatenablog.com 各spinは0番を始めとして矢印の…

JavaScriptで2次元配列のコピーと配列の反転 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ピースの反転を行うために2次元配列の反転を行います。8パターンのスピンの作成については以下の記事を参照してください。 yucatio.hatenablog.com 各spinは0番を始めとして矢印の順番で生成します。 前回は0番のスピン…

JavaScriptで転置を実装する (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ピースの回転、反転を行うために2次元配列の転置を行います。転置を行う理由については以下の記事を参照してください。 yucatio.hatenablog.com 各spinは0番を始めとして以下の順番で生成します。 はじめに0番目のスピン…

最終的に出来上がる配列の確認と関数の準備 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回、もととなるピースの配列を作成しました。 ここから各ピースを転置・反転したものを作成していきます。 現在各ピースは、 [ [1, 1, 1, 0], [0, 0, 1, 1] ] のように2次元配列で表現されています。これを最終的には(…

もととなるペンタミノのピースの準備 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ではプログラムを書いていきます。 はじめにディレクトリとhtmlファイルを用意しましょう。 ファイルとディレクトリの準備 KATAMINO-SOLVERという名前のフォルダを作成し、その下に KATAMINO-SOLVER-preparationという名…

ペンタミノの回転、反転をするためのアルゴリズム (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com KATAMINOのピース(ペンタミノ)は以下の12種類です。 KATAMINOを解いていくときに、それぞれのピースを回転させたり裏返したりする必要があります。 この時の方針として、 あらかじめ回転させたり裏返したりしたものを用…

データ構造を考える (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 具体的なプログラミングに入る前に、データ構造を考えておきましょう。 KATAMINOを解くのに必要なものは、KATAMINOを入れるフィールドとKATAMINOのピースです。 フィールドのデータ構造 フィールドは 5 x {ピースの数} …

KATAMINOを解くアルゴリズム (KATAMINOを解くプログラムを作成する)

KATAMINOとは KATAMINOとは、Gigamic社が発売するパズルゲームです。 ペンタミノという、5個の正方形をつなげてできる形をしたピースを使い、 長方形の枠にぴったり収まるように組み合わせて遊ぶゲームです。 【ポイント11倍】Gigamic(ギガミック)社 カタ…

KATAMINOを解くプログラムを作成する【目次】

KATAMINOとは KATAMINOとは、Gigamic社が発売するパズルゲームです。 ペンタミノという、5個の正方形をつなげてできる形をしたピースを使い、 長方形の枠にぴったり収まるように組み合わせて遊ぶゲームです。 【ポイント11倍】Gigamic(ギガミック)社 カタ…