форум вебмастеро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"]; // получаем текст, к примеру, пришло 
слово "klizma", тогда echo $key["0"]; // выведет "k" echo $key["1"]; // выведет "l" echo $key["2"]; // выведет "i" echo $key["3"]; // выведет "z" echo $key["4"]; // выведет "m" echo $key["5"]; // выведет "a"


Вот. А дальше как? Есть мысль создать цикл (например, для слова, содержащего 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

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:43399, gzipped size:11162

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]