1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebaseを駆使して数独を解くWebアプリを作ってみた 前編

Last updated at Posted at 2018-12-09

#概要
こんにちは。Aidemyの刀根です。
Firebaseを駆使して数独を解くwebアプリを作成します。

ソースコードの全容はGithubの方で見てください。この記事に載せちゃうと記事の長さがえげつないことになるので。。。
Githubはこちら

また、今回作成したwebアプリはこちらで公開しています。

#システムの概要
firebase hostingで最低限のフロントエンドを作り、firebase cloud functionで数独を解くバックエンドを作成します。

#回答アルゴリズムを実装する前に・・・
まずはフロント側を実装していきます。今回はjQuery使ってゴリゴリ実装していきます。
そして今回は作ったものをfirebase hostingでホスティングします。
今回はデバッグのために各ますに入る数字の候補を確認できるようにもしました。
index.html
index.css
send.js

#アルゴリズム
実装方針としては

  1. 人が解くのと同じ方法である程度空きマスを埋める
  2. バックトラックで残りを埋める

の2段階で実装していきます。

#人が解く方法を実装していく
今回はこちらのサイトに掲載されている解法からいくつか抜粋して実装していきます。

##ルールによる候補削除
まずは数独のルールに則り候補を削除していきます。

この処理の流れは以下の通りです。

  1. 左上から順番に走査していく
  2. 数字が入っているマスに当たったら、その行・列・ブロックに該当するマスの候補からその数字を消す
  3. 右下までチェックし終わったら、確定できるマスがないかチェックしていく
  4. もし新たに確定したマスがあったら、また1.に戻り繰り返す

byRuleHelper.ts

#今回はここまで
だいぶ長くなってしまうので今回はここで一旦区切ります。次の記事でこの続きを書くのでそれまでしばらくお待ちください。(12月13日公開予定)

ちなみにまだバックトラックを実装していませんが簡単な問題ならこれだけでも解くことが可能です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?