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

Форум PHP

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

 

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

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

тема: Разбить массив на части
 
 автор: Димок   (11.10.2006 в 09:44)
 
 

Есть главная страница(форма), где пользователь вводит строку символов:

<html> 
<head> 
<title>Кодирование по методу Шеннона-Фано</title> 
<meta content="TEXT/HTML; CHARSET=WINDOWS-1251" http-equiv=CONTENT-TYPE> 
</head> 
<body> 
<center><strong>Кодирование по методу Шеннона-Фано</strong></center> 
<form action="enc.php" method="post"> 
<table width="30%" border="1" cellspacing="1" cellpadding="1" height="72" align="center"> 
  <tr>  
    <td width="51%">  
      <div align="center">исходная строка</div> 
    </td> 
    <td colspan="2" width="49%">  
      <div align="center">  
        <input type="text" name="string"> 
      </div> 
    </td> 
  </tr> 
  <tr>  
    <td colspan="3">  
      <div align="center">  
        <input type="submit" name="encode" value="зашифровать"> 
      </div> 
    </td> 
  </tr> 
</table> 
</form> 
</body> 
</html> 

А вот скрипт обработки и вывода результатов enc.php:

<?php 
//функция кодирования 
  
function encode2($arr1,$arr2
  { 
      echo 
"<br>"
      foreach(
$arr1 as $key=>$val
      { 
          do 
      } 

  } 
function 
encode($array

$count=count($array); 
$backup_array=$array
    if(
$count>2
    { 
      do{ 
          
$current_value array_shift($array); 
            
$letter_key array_keys($backup_array,$current_value); 
          
$new_array[$letter_key[0]] = $current_value
       }while(
array_sum($array)>=array_sum($new_array)); 

$group1[1]=$new_array
$group2[0]=$array



 
print_r($group1); 
 echo 
"<hr>"
print_r($group2); 
echo 
"<hr>"




$string=$_POST['string']; 
$string_length=strlen($string); 
for(
$i=0;$i<$string_length;++$i

    
$symbols[]=$string[$i]; 

 
$unique_symbols=array_count_values($symbols); 
foreach(
$unique_symbols as $symbol=>$quantity

    
$probability[$symbol]=$quantity/$string_length

arsort($probability,SORT_NUMERIC); 
 print 
"<table width=\"30%\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n"
print 
"  <tr> \n"
print 
"    <td width=\"21%\">исходная строка</td>\n"
print 
"    <td colspan=\"2\"> \n"
print 
"      <div align=\"center\">$string</div>\n"
print 
"    </td>\n"
print 
"  </tr>\n"
print 
"<tr> \n"
print 
"    <td width=\"21%\"> \n"
print 
"      <div align=\"center\">символ</div>\n"
print 
"    </td>\n"
print 
"    <td width=\"26%\"> \n"
print 
"      <div align=\"center\">вероятность</div>\n"
print 
"    </td>\n"
print 
"    <td width=\"53%\"> \n"
print 
"      <div align=\"center\">код</div>\n"
print 
"    </td>\n"
print 
"  </tr>\n"
foreach(
$probability as $symbol=>$value

if (
$symbol==" "$symbol="пробел"
    print 
"<tr> \n"
print 
"    <td width=\"21%\"> \n"
print 
"      <div align=\"center\">$symbol</div>\n"
print 
"    </td>\n"
print 
"    <td width=\"26%\"> \n"
print 
"      <div align=\"center\">$value</div>\n"
print 
"    </td>\n"
print 
"    <td width=\"53%\"> \n"
print 
"      <div align=\"center\">01</div>\n"
print 
"    </td>\n"
print 
"  </tr>\n"


 echo 
"<br>"

     
encode($probability); 

?> 

Принцип работы скрипта-выделяет уникальные символы введенной строки, затем выводит их в таблице по убыванию их вероятностей появления, а функция encode() делит полученный массив символ=>значение на 2 группы по принципу: сумма значений обоих групп символов примерно равна.Символам, вошедшим в первую группу присваивается значение единицы(1), а во вторую-нуля(0).
Помогите составить функцию encode2() или модернизировать эту функцию, которая продолжит деление полученных групп по тому же принципу(И так до тех пор,пока в каждой из двух групп не останется по 1 символу)

   
 
 автор: VYB   (15.10.2006 в 21:20)   письмо автору
 
   для: Димок   (11.10.2006 в 09:44)
 

помогите сделать рекурсию

   
Rambler's Top100
вверх

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