【バンドリ】【ガルパ】SNS招待機能が有効になりました。

ボタン自体はありましたが、ようやく機能するようになりました。

ボタンをタップすると、外部アプリが立ち上がり、招待リンク付きSNSメッセージを送信します。

「協力ライブ」で検索するといろんな人からの招待を参照することができます。

このリンクからガルパを起動し、ライブホーム画面に移動すると、入室できるルームが表示されます。

いまなら初顔合わせで一人につき100個の星がもらえます。最大10回までもらえるので、最大1000個の星がもらえます。

いいですね。1000個もらっちゃいましょう。

【C#】【数独】解析ロジック(仮置き矛盾チェック)を考える

前回までの状況はこちら

最新ソースはこちら(gitHub)

https://github.com/takishita2nd/sudoku

さて、以下のような問題が出題されたとき、解析が止まってしまう現象が発生しました。

例えば、数字の2に注目した場合、

オレンジの2箇所と青の2箇所が数字の2が入る可能性があるのですが、今までのロジックでは値が確定しないため、解析が進まない状態となってしまいます。

この場合、仮置きというやり方をします。

例えば、

オレンジのマスに数字2を置いた場合、今までの解析ロジックから青のマスに2が入りますが、同じライン上に2がすでに存在しますので、この置き方は誤りと言うことになります。

逆に、このように置けば、矛盾が発生しませんので、このマスに入る数字は2で確定する事になります。

これをプログラムでロジック化します。

やり方をまとめます。

解析ループ処理に変化が無かった場合、仮置きロジックを適用します。

解析途中のデータを複製し、空いている箇所に、仮の値を置き、通常の解析ロジックを実施します。

その結果、矛盾が発生していれば、その複製データを破棄します。

矛盾が発生していなければ、その値で確定します。

値が確定すれば、その状態で解析を継続します。

ざっくり言えばこんな感じですね。

次回以降、もう少し細かいところを詰めて、実装していこうと思います。