Поиграть


Фотографии знаменитостей, Герои нашего времени

Цепи Маркова на PHP

Code (php)
  1. //Файл, в котором лежит исходный текст
  2. $source_text = ‘text.txt’;
  3. //Наш словарь соответствия слова и идущих за ним слов
  4. $dictionary = array();
  5.  
  6. function load()
  7. {
  8.    global $dictionary,$source_text;
  9.    //Читаем исходный файл
  10.    $str = file_get_contents($source_text);
  11.    //Превращаем текст в одну строку
  12.    $str = preg_replace("#[\r\n]#","",$str);
  13.    //Выделяем все слова из строки (выражение в кавычках или в скобках считается одним словом)
  14.    preg_match_all("#((\"[^\"]+\")|(\([^\)]+\))|([^\(\)\"\s]+))(\s+|\z)#",$str,$parts);
  15.    $words = $parts[1];
  16.    $count = count($words);
  17.  
  18.    //Заполняем словарь
  19.    for( $i = 0; $i < $count; $i++ )
  20.    {
  21.       if( $i > 0 )
  22.       {
  23.          if( !in_array($words[$i],$dictionary[$prev_word]) )
  24.             $dictionary[$prev_word][] = $words[$i];
  25.       }
  26.       $prev_word = $words[$i];
  27.       if( empty($dictionary[$prev_word]) )
  28.          $dictionary[$prev_word] = array();
  29.    }
  30. }
  31.  
  32. //Функция генерации текста. $count - количество генерируемых слов
  33. function genText($count)
  34. {
  35.    global $dictionary;
  36.    $words = array_keys($dictionary);
  37.    $word = $words[0];
  38.    
  39.    $text =;
  40.    for( $i = 0; $i < $count; $i++ )
  41.    {
  42.       $text .= ‘ ‘.$word;
  43.       //Следующее слово - случайное слово из тех, что идут в исходном тексте за текущим словом
  44.       $word = $dictionary[$word][rand(0,count($dictionary[$word])-1)];
  45.    }
  46.    return $text;
  47. }
  48.  
  49. load();
  50. echo genText(100);
  51.  

+1+2+3+4+5 (Ещё не голосовали)
Загрузка... Загрузка...

Оставьте комментарий

Блог разработчика / двухъярусная кровать детская с диван-кроватью
производство пенополиуретанов - интересное предложение
Русконект, ооо декор, Спринт
mate factor at eFoodDepot.com