2

全てにおいて良い日、

私は C# 数独ソルバー アプリケーションに取り組んできましたが、数独を解くためのアルゴリズムの難しさを心から過小評価していました。実装できる可能性のあるアルゴリズムをウェブで検索してきましたが、理解できる簡単なアルゴリズムを見つけることができませんでした。

私のアプリケーションで機能する可能性のあるアルゴリズムを見つけましたが、この人はそれを解決するために 1 次元配列を使用しています。多次元配列で動作するように変更しようとしましたが、正しく動作しません。

多次元配列(int [、])で動作するようにコードを変更する方法を教えてください。自分で探すしかないようです。コードはここにあります: http://blah.winsmarts.com/2007-1-sudoku_solver_in_c-.aspx

int[,] で動作する別のアルゴリズムがある場合は、もちろんそれも素晴らしいことです。

ずっと探していたので助かりました。前もって感謝します!

4

2 に答える 2

1

リンクしたコードは、すでに論理的に 2D 配列を使用しています。1D 配列をバッキングとして使用しているだけです。これを変える:

private int[] vals = new int[81];
public int this[int row, int column]
{
    get { return vals[FindIndex(row, column)]; }
    set
    {
        vals[FindIndex(row, column)] = value;
    }
}

private int FindIndex(int row, int column)
{
    return (((column - 1) * 9) + row - 1);
}

に:

private int[,] vals = new int[9,9];
public int this[int row, int column]
{
    get { return vals[row - 1, column - 1]; }
    set
    {
        vals[row - 1, column - 1] = value;
    }
}

(および0 ではなく 1 から始まるため、- 1現在のコードの残りの部分では 's が必要です。 )rowcolumn

于 2013-05-21T13:59:53.373 に答える