форум вебмастероff на AlfaSpace.NET |
Ubuntu и Linux
|реактивный бесплатный хостинг
| Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга
|
правила форума
| Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ ° |
| Форум вебмастеров на AlfaSpace.NET / Создание сайта / Помогите написать скрипт на php |
| Автор | Сообщение |
| Serg Участник 1815 |
# Дата: 16 Янв 2007 10:40 Нужно написать скрипт на php, вот его суть: вводишь слово (5-8 букв), жмешь на кнопочку и получаешь список из всех возможных сочетаний заданных букв. Например, на входе у нас "abcde", на выходе нужно получить: aaaaa aaaab aaaac aaaad aaaae aaaba aaaca ... список всех возможных сочетания заданных букв. Вот такое вот интересное задание. Взываю о помощи. Принимаются любые идеи и наводки, а еще лучше, если они будут выражены в виде кода на php ![]() |
| gl_SPICE Участник 1786 |
# Дата: 16 Янв 2007 11:28 Гы... |
| Михаил Ушел в бан) 2582 |
# Дата: 16 Янв 2007 11:31 Элементарный брутофорс ))) Как реализовать - сам думаю. |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 15:20 хм ну короче одним словом посториал введённых букв
озадачи однако ![]() |
| niko Участник 294 |
# Дата: 16 Янв 2007 15:29 ° Поправил: niko Можно так, если долго не думать: read(stroka) for c1=1 to 8 begin if len(stroka)<=8 then st[c1]=stroka[c1] else st[c1]='' end for c1=1 to 8 for c2=1 to 8 for c3=1 to 8 for c4=1 to 8 for c5=1 to 8 for c6=1 to 8 for c7=1 to 8 for c8=1 to 8 begin stroka1=st[c1]+st[c2]+st3[c3]+st4[c4]+st[c5]+st[c6]+st[c7]+st[c8] if len(stroka1)=len(stroka) then write(stroka) end если ещё подумать можно засунуть все в рекурсию p.s. код не адаптировал под php |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 15:37 ° Поправил: acsid niko поскалем увлёкся?))) щас дам свой вариант.. кое что пришло в головень |
| smallcms Участник 2752 |
# Дата: 16 Янв 2007 15:43 acsid соблюдай правило "антикиддис". |
| niko Участник 294 |
# Дата: 16 Янв 2007 15:46 Примерно это выглядит так procedure recurs(stroka1) if len(stroka1)<len(stroka) tnen begin for c1=1 to len(stroka) recurs(stroka1+[c1]) end else write(stroca1) end procedure begin for c1=1 to len(stroka) st[c1]=stroka[c1] for c1=1 to len(stroka) procedure recurs(st[c1]) end |
| niko Участник 294 |
# Дата: 16 Янв 2007 15:47 acsid не только, не только ![]() |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 15:55 ° Поправил: acsid$text="ascrtd"; //импровизированный текст
$count=strlen($text); //щитаем сколько букв
$i=1;
while($i != $count){
$bukva=substr($text,$i-1,$i); //берём каждую букву по очерёдно ,остальное уд
аляем
$i++;
$bukvq_arr.="<!>$bukva";//загоняем все буквы в строку
}
$massiv_bukv=explode('<!>',$bukvq_arr);//превращяем строку в массив букв
теперь он выглядит так:
$massiv_bukv=("a","s","c","r","t","d");Осталось както перебрать буквы..пока незнаю как... кажись нада делать двухмерный массив и оттуда уже прыгать дальше |
| niko Участник 294 |
# Дата: 16 Янв 2007 16:00 acsid тут либо цикл, либо рекурсия |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 16:01 ° Поправил: acsid niko не пиши бред... , попросили же на ПХП smallcms это ты очём?)) |
| niko Участник 294 |
# Дата: 16 Янв 2007 16:05 acsid ну так перевди на php |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 16:18 niko Надо было продолжать грибной темарь. Типа нажарил псилоцибинаф и под их действием нахрендячил эту схему а потом как хитрый лис сказал я первый нах, пищи исчо сам. |
| niko Участник 294 |
# Дата: 16 Янв 2007 16:23 ° Поправил: niko на php вроде так function recurs(stroka1) { if strlen($stroka1)<strlen($stroka) tnen for ($c1=1; $c1<=strlen(stroka); $c1++) { recurs($stroka1+substr($stroka, $c1,2)) ; } else echo $stroca; } $stroka="abvgdi"; for ($c1=1; $c1<=strlen(stroka); $c1++) { recurs(substr($stroka, $c1,2)) ; } acsid ну так не кто не запрещаеят кушай мухоморчики, я такие не ем . Хотя да ты прав я щас грибной суп ем:P
P.s. прости уж что тебя не подождал |
| acsid Alfa Guru 2449 |
# Дата: 16 Янв 2007 16:33 ° Поправил: acsid niko улыбнули придуманные тобой функции: len() recurs() также tnen , $c1<=len( function recurs(stroka1) { len($stroka1)<len($stroka) где логика? и откуда в этой функции $stroka и чем отличаеться введённая в функцию $stroka1 от $stroka взявшейся неоткуда. а ещё если посмотреть как называется функция и сколько раз ты еёже вызвал в циклах можно сделать вывод что это бесконечный цикл..пока процесс не обрубят. |
| niko Участник 294 |
# Дата: 16 Янв 2007 16:35 ° Поправил: niko acsid и чо дальше |
| Serg Участник 1815 |
# Дата: 16 Янв 2007 21:27 » acsid while($i != $count){ $bukva=substr($text,$i-1,$i); //берём каждую букву по очерёдно ,остальное уд аляем $i++; $bukvq_arr.="<!>$bukva";//загоняем все буквы в строку } $massiv_bukv=explode('<!>',$bukvq_arr);//превращяем строку в массив букв Ёооо, как у тебя всё сложно... "импровизированный текст" будет методом гет получаться, а значит к букве можно обратиться и сразу. if (isset($_GET["key"])) $key=$_GET["key"]; // получаем текст, к примеру, пришло Вот. А дальше как? Есть мысль создать цикл (например, для слова, содержащего 6 букоф) for ($i=111111; $i <= 666666; $i++) {и на выходе цифры заменить на соответствующие буквы. Но для этого нужно, чтобы система была шестиричная (и не просто шестиричная, а с базовыми числами 1,2,3,4,5,6). А как ее такую реализовать? niko, извини, но тебя я вообще не понял. Мне нужен скрипт на PHP. |
| niko Участник 294 |
# Дата: 17 Янв 2007 04:03 Serg врачи работают с латынью, но болезни лечат то у русских. Там просто все задай еще один массив для чисел, его длина это количество символов. Далее последний элемент массива увеличивай на единицу. Далее проверяешь весь массив если элемент массива больше длины строки, тогда этот элемент массива обнулить, а элемент[текущий-1] увеличить на единицу. После этого собираешь строку, просматривая массив чисел, если элемента числового массива равен 2, вставляешь второй символ,если 5 то пятую букву. Потом выводишь строку. Все выше указанные действия выполнять с начала, до тех пока нулевой элемент не станет больше длины строки. Кодировать в php нет ни времени, ни желания. |
| Serg Участник 1815 |
# Дата: 17 Янв 2007 04:43 niko, спасибо большое за алгоритм, сейчас буду реализовывать. |
| smallcms Участник 2752 |
# Дата: 17 Янв 2007 05:28 пробежался по гуглу... очень хотят видеть ваш скрипт всякие англоговорящие детишки...
поэтому на таком скрипте хорошо написать: "не разбирать, беречь от детей". ![]() |
| Serg Участник 1815 |
# Дата: 17 Янв 2007 06:03 Гатово!
niko, еще рас огромное спасибо ![]() |
| niko Участник 294 |
# Дата: 17 Янв 2007 06:24 Serg эт хорошо, покажи хоть народу ![]() |
| Serg Участник 1815 |
# Дата: 17 Янв 2007 07:03 http://masterpc.alfaspace.net/comb.php Пожаласта, пользуйтесь
Правда он пока только 5-значные слова обрабатывать умеет. |
| gl_SPICE Участник 1786 |
# Дата: 17 Янв 2007 07:16 » Serg Пожаласта, пользуйтесь Сейчас Альфа повиснет . |
| Serg Участник 1815 |
# Дата: 17 Янв 2007 07:20 » gl_SPICE Сейчас Альфа повиснет .Скажите спасибо, что не для 8 знаков сделал ![]() |
| niko Участник 294 |
# Дата: 17 Янв 2007 08:08 Serg ![]() |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:43399, gzipped size:11162 |