Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: генерирование последовательности чисел от -1-1-1-1 до 1111 без повторения
 
 автор: Nicole Neumann   (20.12.2006 в 20:42)   письмо автору
 
 

Собственно сабж - подскажите, пожалуйста, как реализовать генерирование последовательности чисел от -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:44)   письмо автору
 
   для: Nicole Neumann   (20.12.2006 в 20:42)
 

Реализовать алгоритм надо каким-нибудь классическим способом без использования специальных каких-то функций пхп!

   
 
 автор: AlexelA   (21.12.2006 в 13:22)   письмо автору
 
   для: Nicole Neumann   (20.12.2006 в 20:42)
 

Немного не понял вопрос, что означаеть выражение
последовательности чисел от -1-1-1-1 до 1111 ?
В ваших примерах ясно указано: дано два числа -1 и 1,
дано 4 числа -2 -1 1 2 и вы осуществляете перебор данных
чисел парами без повторений. А что дано в вопросе и что вы хотите получить?
Как-то не понятно. Поясните, тогда попробую помочь.

   
 
 автор: XPraptor   (21.12.2006 в 14:20)   письмо автору
 
   для: 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;
        }
    }
}

   
 
 автор: Саня   (21.12.2006 в 15:39)   письмо автору
 
   для: 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($i104));
  
$res[] = str_replace(array("0""3"), array("-1""-2"), $num);
}
print_r($res);
Не знаю, претендует ли мой вариант на классичность, но я всё же его покажу. Функции (или их аналоги) str_replace(), sprintf() и base_convert() есть во всех языках программирования, так что код легко можно переделать под любой другой язык.

   
 
 автор: Саня   (21.12.2006 в 16:16)   письмо автору
 
   для: 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 != && $j != && $m != && $n != )
          print 
$i $j $m $n."<br/>";
Вот ещё один вариант. Доделанный вариант XPraptor'a.

   
 
 автор: Nicole Neumann   (24.12.2006 в 12:20)   письмо автору
 
   для: Саня   (21.12.2006 в 16:16)
 

Всем большое спасибо! Буду сидеть разбираться!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования