Скрипт генерации комбинаций цифр

1. balalayka (07.10.2010 / 16:44)
В общеем есть скрипт, который выводит все 4-значные комбинации
Как сделать сортировку их так:
Чтобы следующее число начиналось на 3 символа предыдущего числа?
Хелп плиз

2. Вантуз-мен (07.10.2010 / 17:24)
сперва скрипт покажи

3. balalayka (07.10.2010 / 19:36)
<?
$arr[0] = '2';
$arr[1] = '5';
$arr[2] = '8';
$lim = count($arr);
$i = 0;
/*1-ый символ*/
for($i1 = 0;$i1 < $lim;$i1++) {
    $a1 = $arr[$i1];
    /*2-ой символ*/
    for($i2 = 0;$i2 < $lim;$i2++) {
        $a2 = $arr[$i2];
        $a3 = $a1 . $a2;
        /*3-ий символ*/
        for($i3 = 0;$i3 < $lim;$i3++) {
            $a4 = $arr[$i3];
            $a5 = $a3 . $a4;
            /*4-ый символ*/
            for($i4 = 0;$i4 < $lim;$i4++) {
                $a6 = $arr[$i4];
                $a7 = $a5 . $a6;
                echo ' ' . $a7 . ' ';
                echo'<br />';
            }
        }
    }
}


4. balalayka (07.10.2010 / 19:43)
DEXDUR (7 Октября 2010 / 19:36)
Афтор тут не экстросенсы сидят...

Добавлено через 00:52 сек.
Сори ))) ггг в одно и тоже время написали smile
=)

5. Вантуз-мен (07.10.2010 / 20:12)
1. balalayka, не могу понять вопроса, чтобы след. число начиналось на 3 символа в какую сторону, большую или меньшую, приведи примеры как тебе нужно отсортировать

6. balalayka (07.10.2010 / 21:16)
6. Vantuz,
Например все 3-значные цифры:
222
225
228
252
255
258
282
285
288
522
525
528
552
555
558
582
585
588
822
825
828
852
855
858
882
885
888

Соортировалось так:
222 - 2 последнии цифры - 2 первые цифры следующего
225
252
522
228
и т.д. по возрастанию

7. Вантуз-мен (08.10.2010 / 00:03)
Ничего в голову не приходит, может их лучше сразу делать такими, зачем сортировать,
для каких целей нужна подобная сортировка?

8. ramzes (08.10.2010 / 10:03)
(substr(2,3,$number).'0' (int) )<= следующее число.
не вижу смысла в этом скрипте по этому писать полностью лень..

9. balalayka (08.10.2010 / 12:14)
8. Vantuz,
ну можно чтобы сразу были такими
лиш бы работало=)

Добавлено через 00:43 сек.
9. ramzes, просто о4 надо для онлайн игры=))

10. Phantom (08.10.2010 / 15:31)
Мне кажется автор неправильно себе задачу поставил.

11. balalayka (08.10.2010 / 16:09)
а как?
есть какие--нить идеи??
плиз парни хелп
до меня не доходит))

12. balalayka (11.10.2010 / 14:04)
вроде мысль появилась))
мб так сделать:
в общем для 3-х значного числа берутся 2 последние цифры предыдущего числа, а третий символ генерируется (или 2, или 5, или 8) и т.д.
В итоге получится так, как мне нужно
тока, наверное, их придется записывать в массив, чтобы цифры не повторялись
Например:
2 последних символа предыдущего числа - 22, а третий символ сгенерировался - 5, но так как в массиве уже есть число 225, то третий символ генерируется - 8.В итоге выводит число - 228
Блин, надеюсь, понятно объяснил))
помогите как эт сделать))

13. Дмитрий (11.10.2010 / 14:27)
13. balalayka, ты сам ответил на свой вопрос.

14. balalayka (11.10.2010 / 14:48)
14. LondoN_tm,
понято)) прост не очень силен в пхп)) и не знаю как это сделать

15. Вантуз-мен (11.10.2010 / 16:34)
лучше напиши для каких целей тебе надо такой скрипт

16. balalayka (11.10.2010 / 17:18)
я же уже написал)
для онлайн игры=)

17. balalayka (12.10.2010 / 00:29)
лан а за сколько кто сможет написать поностью??

18. balalayka (12.10.2010 / 17:52)
Попробывал с помощью массивов
Получилось что-то такое:
$arr[0]='2';                                                                            
$arr[1]='5';                                                                            
$arr[2]='8';                                                                                                                                                     #

$all = array();
$numbers = array();

$lim=count($arr);                                                                       

/*1-ый символ*/ for($i1=0;$i1<$lim;$i1++)                                               #
                {                                                                       #	
if ($numbers[0] < 1) {$numbers[0]='2';}				
                   $a1=$numbers[0];                                                       #
/*2-ой символ*/    for($i2=0;$i2<$lim;$i2++)                                            #
                   {                                                                    #			
if ($numbers[1] < 1) {$numbers[1]='2';}					   
                           $a2=$numbers[1];                                                #
$numbers[0] = $numbers[1];						   
                        $a3=$a1.$a2;                                                    #
/*3-ий символ*/         for($i3=0;$i3<$lim;$i3++)                                       #
                        {                                                               #
                                $a4=$arr[$i3];                                             #								
                             $a5=$a3.$a4;                                               #		

array_push($all, "$a5");

$numbers[1] = $a4;								 

									 			                                         #

                                 }                                                      
                             }                                                          
                        }  
foreach ($all as $k =>  $v) { 
echo "$k - $v<br/>";
}

но почему-то не корректно работает
В чем проблема?

19. Вантуз-мен (12.10.2010 / 18:42)
с твои условие проще написать массив сразу $a = array (222, 225, 252, 522, 228, 282, 822);
так как после 822 нет чисел подходящих под твое условие

20. Сергей (13.10.2010 / 19:37)
написал ему скрипт генерации и сортировки для последовательности любой длины...

21. Вантуз-мен (13.10.2010 / 23:43)
покажи код

URL: https://visavi.net/topics/14438