Скрипт генерации комбинаций цифр
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 сек.
Сори ))) ггг в одно и тоже время написали
=)
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