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

Форум PHP

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

 

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

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

тема: Перебор вариантов слова.
 
 автор: ZooM (ССС)   (25.04.2006 в 18:23)   письмо автору
 
 

Короче надо сделать следующее:
имеется страница, на ней есть форма с кнопкой:

<form><input type=text size=50 name=word><input type=submit value=OK></form>

Ну так вот надо написать скрипт обработчик который выводит все возможные варианты данного слова . Например слово " БОЕЦ " - 4 символа => 24 варианта , и вот все эти 24 варианта надо вывести! Количество вариантов находиться по формуле : Pn = n! . Я написал код но он у меня выводит тока 4 варианта :(
еще проблема в том что я не знаю какой функцией можно найти ФАКТОРИАЛ ( " ! ")
вот код:

<form><input type=text size=50 name=word><input type=submit value=OK></form>

<?
if(!empty($word))
{
$len=24;
for(
$i=0$i<$len$i++)
{
$sim="";
 for(
$j=0$j<$len$j++)
 {
 
$sim .=substr($word$j-$i1);
 }
echo 
"$sim <br>";
}
$sd_var=$i;
$vs_var=факториал($len);
echo 
"<br><hr size=a color=blue width=100%><br>
Всего Символов : <b>
$len</b><br>
Всего Вариантов : <b>
$vs_var</b><br>
Сделано Вариантов : <b>
$sd_var</b>";
}
?>

   
 
 автор: Trianon   (25.04.2006 в 18:51)   письмо автору
 
   для: ZooM (ССС)   (25.04.2006 в 18:23)
 

N! будет лишь в том случае, если все буквы в слове разные.
Факториал можно посчитать так:
<?
function factorial($num)  {    
  for(
$prod 1.0$num 1; --$num
    
$prod *= $num;  
  return 
$prod
}
echo 
factorial(4);
?> 

   
 
 автор: ZooM (ССС)   (25.04.2006 в 19:01)   письмо автору
 
   для: Trianon   (25.04.2006 в 18:51)
 

Впринцепе да, ведь если введем "аааа" то и все 24 варианта будут "аааа" :)
Но предположим что все буквы разные! как сделать?

   
 
 автор: Trianon   (25.04.2006 в 19:07)   письмо автору
 
   для: ZooM (ССС)   (25.04.2006 в 19:01)
 

Примерно так.
<?php

function wordset($pref$word)
{
  static 
$n=0;
  if((
$len strlen($word)) == 0)
      echo ++
$n ". $pref<br>\r\n";
  else for(
$i 0$i $len$i++)
  {
      
$ch $word[$i];
      if(
$i $len && strpos($word$ch$i+1) !== false)
          continue;
      
$word1 '';
      if(
$i 0$word1 .= substr($word0$i);
      if(
$i +$len$word1 .= substr($word$i+1);
      
wordset($pref.$ch$word1);
  }
}

wordset("""БОЕЦ");

?>

Повторы тут убраны.

   
Rambler's Top100
вверх

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