-3

だから私はこの形式のテキストファイルを持っています

2
3
1 0 0 0 0 0 6 0 7
0 8 0 7 0 1 0 4 0
0 3 2 4 0 0 0 1 0
0 0 0 0 0 9 1 0 0
3 1 0 0 4 0 0 2 9
0 0 4 8 0 0 0 0 0
0 2 0 0 0 3 5 6 0
0 9 0 2 0 4 0 3 0
8 0 3 0 0 0 0 0 2
2
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

編集:

最初の 2 行 2 と 3 を 2 つの個別の変数に格納する必要があります。残りのグリッドは 2 次元配列 (キーなし) に転送する必要があります。プログラムが複数のグリッドを処理できることを予測する必要があります (最初の行の値で表されます)。これどうやってするの?キーを持つ 2 次元配列のマージに関係する関数を見つけ続けています。

私の方法よりも優れた/より効率的な方法はありますか?

<?php
    $lines = file("sudoku.in", FILE_IGNORE_NEW_LINES);

    $num_board = array_shift($lines);

    for ($k=0; $k<$num_board; $k++) {
        $size = array_shift($lines); //get size
        $size *= $size; //square size

        //get rid of whitespaces in grid
        for ($i=0; $i<$size; $i++) {
            $lines[$i] = explode(" ", $lines[$i]);
        }

        //transfer to 2d array "sudoku"
        for ($i=0; $i<$size; $i++) {
            for ($j=0; $j<$size; $j++) {
                $sudoku[$i][$j] = $lines[$i][$j];
            }
        }

        //print_grid
        for ($i=0; $i<$size; $i++) {
            for ($j=0; $j<$size; $j++) {
                echo $sudoku[$i][$j] . " ";
            }
            echo "<br>";
        }

        for ($i=$size; $i>0; $i--)
            array_shift($lines);

    }
?>
4

2 に答える 2

0

「2次元配列」とは正確にはどういう意味ですか? キーのない行を配列に格納する場合、少なくとも私の理解では、これは 1 次元配列になりますか?

EDIT - すべての 1 桁を変数に抽出します

$buffer = file_get_contents($fname);
$array = explode("\n", $buffer);

// walk the array and extract single digit entries
for ($i = 0, $limit = count($array), $varcount=1; $i < $limit; ++$i) {
    // this test could also be more specific, e.g. with preg_match
    if (strlen($array[$i]) == 1) {
        $var$varcount = array_slice($array, $i, 1);
        ++$varcount;
        --$limit;
        --$i;
    }
}

これは、配列から 1 桁の行を単純に抽出し、変数$var1toに入れます$var999$varX問題は、これらがいくつ作成されているかについての情報がないことです。

于 2013-10-14T14:41:33.957 に答える