1

次のように、数値を取り、期待される結果を出力する関数を見つけようとしています。

input=1 の場合、出力はArray{'0','1'}

input=2 の場合、出力はArray{'00','01','10','11'}

input=3 の場合、出力はArray{'000','001','010','011','100','101','110','111'}

などなど。コインを何枚か投げるのと似ています。

それを行う関数がphpにあるかどうかはわかりませんが、誰もいない場合は、それがどのように行われたかを教えてください。

4

2 に答える 2

6

実際には、バイナリ表記で 0 から 2^{input}-1 までの数値にすぎません

$max = pow(2, $input);
$result = array();
for ($i = 0; $i < $max; $i++) {
  $result[] = str_pad(base_convert($i, 10, 2), $input, 0, STR_PAD_LEFT);
}
于 2011-10-08T21:28:41.667 に答える
1

@KingCrunchの回答と同じですが、より簡潔です:

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = sprintf('%0' . $input . 'b', $i);
}

または、気に入らない場合sprintf

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = str_pad(decbin($i), $input, 0, STR_PAD_LEFT);
}
于 2011-10-08T21:58:25.173 に答える