| |
|
|
| | Собственно сабж - подскажите, пожалуйста, как реализовать генерирование последовательности чисел от -1-1-1-1 до 1111 без повторения. + случай, когда от -2-2-2-2 до 1111
пример:
1) дано два числа -1 и 1
2) получаем последовательность -1-1 -11 1-1 11 (т.е. получаться должен массив, но значения в нем не должны повторяться!)
пример (более сложный):
1) дано 4 числа -2 -1 1 2
2) нужно аналогично получить последовательность -2-2 -2-1 -1-2 -1-1 -21 1-2 -12 2-1 -22 2-2 -11 1-1 11 12 21 22 | |
| |
|
|
| |
|
|
| |
для: Nicole Neumann
(20.12.2006 в 20:42)
| | | Реализовать алгоритм надо каким-нибудь классическим способом без использования специальных каких-то функций пхп! | |
| |
|
|
| |
|
|
| |
для: Nicole Neumann
(20.12.2006 в 20:42)
| | | Немного не понял вопрос, что означаеть выражение
последовательности чисел от -1-1-1-1 до 1111 ?
В ваших примерах ясно указано: дано два числа -1 и 1,
дано 4 числа -2 -1 1 2 и вы осуществляете перебор данных
чисел парами без повторений. А что дано в вопросе и что вы хотите получить?
Как-то не понятно. Поясните, тогда попробую помочь. | |
| |
|
|
| |
|
|
| |
для: AlexelA
(21.12.2006 в 13:22)
| | | В цикле берите эти числа и кроме нуля организовывайте массив:
$retAr=array();
for($i=-1; $i<=1; $i++){
for($j=-1; $j<=1; $j++){
if($i != 0 && $j != 0){
$retAr[] = $i . $j;
}
}
}
|
| |
| |
|
|
| |
|
|
| |
для: Nicole Neumann
(20.12.2006 в 20:42)
| | |
<?
// 1 и -1
for ( $i = 0; $i < 4; $i++ ) {
$bin = sprintf("%02d", decbin($i));
$res[] = str_replace("0", "-1", $bin);
}
print_r($res);
unset($res);
// вариант с двоечками
for( $i = 0; $i < 256; $i++ ) {
$num = sprintf("%04d", base_convert($i, 10, 4));
$res[] = str_replace(array("0", "3"), array("-1", "-2"), $num);
}
print_r($res);
| Не знаю, претендует ли мой вариант на классичность, но я всё же его покажу. Функции (или их аналоги) str_replace(), sprintf() и base_convert() есть во всех языках программирования, так что код легко можно переделать под любой другой язык. | |
| |
|
|
| |
|
|
| |
для: Nicole Neumann
(20.12.2006 в 20:42)
| | |
<?
for ( $i = -2; $i <= 2; $i++ )
for ( $j = -2; $j <= 2; $j++ )
for ( $m = -2; $m <= 2; $m++ )
for( $n = -2; $n <= 2; $n++ )
if ( $i != 0 && $j != 0 && $m != 0 && $n != 0 )
print $i . $j . $m . $n."<br/>";
| Вот ещё один вариант. Доделанный вариант XPraptor'a. | |
| |
|
|
| |
|
|
| |
для: Саня
(21.12.2006 в 16:16)
| | | Всем большое спасибо! Буду сидеть разбираться! | |
| |
|
|