読者です 読者をやめる 読者になる 読者になる

ウェブサービスを作っています。

やねうらおさんの問題

http://d.hatena.ne.jp/yaneurao/20070813

工夫ゼロで書いてみました。
恥さらしもいいところですね。

<?php
set_time_limit(0);

for ($i = 1; $i <= 99; $i++) {
    echo "N={$i},A=" . getA($i) . "<br>";
}

function getA($n, $a = 1)
{
    $cnt = 1;
    
    for ($i = 0; $i < 2; $i++) {
        for ($j = 0; $j < $a; $j++) {
            $set[] = $dice[$i][$j] = $cnt++ % 10;
        }
    }
    
    for ($i = 0; $i < $a; $i++) {
        for ($j = 0; $j < $a; $j++) {
            $set[] = $dice[0][$i] . $dice[1][$j];
            $set[] = $dice[1][$j] . $dice[0][$i];
        }
    }
    
    for ($i = 0; $i < $n; $i++) {
        if (array_search(++$i, $set) === false) {
            return getA($n, $a + 1);
        }
    }
    
    return $a;
}