yucatio@システムエンジニア

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

2019-08-01から1ヶ月間の記事一覧

フィールドが分割された時に探索をやめる (KATAMINOを解くプログラムを作成する)

★前回の記事 前回まででピースを画面から選ぶことができ、解く過程も表示することができました。 いくつかの組み合わせを試してみると、以下の画像のように、フィールドに穴が空いている場合でも、ピースを置くのを続けてしまう場合があることに気づきます。…

ピースを画面から選べるようにする (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com これまで、使用するピースはjs/main.jsで指定してきましたが、画面で選べるように変更します。 表示するピースの画像の準備 ピースを選択する際にどのピースの画像を表示させます。画像をダウンロードします。 KATAMINO-…

JavaScriptのsetTimeoutを使用して途中経過を表示する (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回までで解けた場合のフィールドを表示しました。今回は途中の経過も表示します。 ピースが置けた時にフィールドを更新します。 途中経過の表示方法 途中経過を表示します。ピースが置けたときに画面を更新します。 画…

セルに色をつける (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回の記事で解けた内容を画面に表示しました。まだ見づらいので今回は見た目を整えていきます。 テーブルの枠線の表示し各セルに色をつけます。 色の準備 各ピースの色は以下のとおりです。 各ピースの色は パステルカ…

表示用メソッドの作成 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ここまでコンソールに表示してきましたが、仕上げとして画面に表示してみましょう。 実装 js/display.jsというファイルに表示用関数をまとめることにします。ファイルを 作成して以下の内容を書いておきます。 const dis…

次に置くピースの投入 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回まででスタックに新たにデータを投入する準備が整いました。今回はスタックに次のデータを投入しましょう。 実装 solver.initでデータを投入したのと同じように、まだフィールドに置かれていないピースnextUnPlaced…

最小の空白マスの更新 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 今回はminEmptyの更新をします。minEmptyはピースが置かれていないマスのうち、1番上の段の、1番左のマスです。 実装 フィールドを渡して最小の空白を探すfindMinEmptyを実装します。まずは呼び出し側を書きます。 js/so…

JavaScriptで値を指定して削除する(置かれていないピースの更新) (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 続いてunPlacedPieceの更新をします。unPlacedPieceはまだ置かれていないピースの番号を格納しています。置かれたピースの番号をここから削除します。 実装 JavaScriptでは、引数に渡された値と同じ値を削除する関数は用…

フィールドの更新 (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フ…