Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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-$i, 1);
 }
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 + 1 < $len && strpos($word, $ch, $i+1) !== false)
          continue;
      
$word1 = '';
      if(
$i > 0) $word1 .= substr($word, 0, $i);
      if(
$i +1 < $len) $word1 .= substr($word, $i+1);
      
wordset($pref.$ch, $word1);
  }
}

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

?>

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

   
Rambler's Top100
вверх

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