コード例 #1
0
 /**
  * @Route("/{alias}/markov", name="series_markov")
  * @Method({"GET"})
  * @Template("ChaosTangentFansubEbooksAppBundle:Series:markov.html.twig")
  * @ParamConverter("series", class="Entity:Series", options={"repository_method": "getSeries", "map_method_signature": true})
  */
 public function markovAction(Series $series, Request $request)
 {
     $corpus = '';
     foreach ($series->getFiles() as $file) {
         foreach ($file->getLines() as $line) {
             $corpus .= $line->getLine() . ' ';
         }
     }
     $corpus = preg_split('/\\s+/u', $corpus, 0, PREG_SPLIT_NO_EMPTY);
     $length = 140;
     $startPoint = mt_rand(0, count($corpus) - 1);
     $output = $corpus[$startPoint];
     $lastWord = $corpus[$startPoint];
     while (mb_strlen($output) < $length) {
         $nextWords = [];
         reset($corpus);
         while ((list($k, $v) = each($corpus)) !== false) {
             if ($v != $lastWord) {
                 continue;
             }
             $nextWords[] = next($corpus);
         }
         $nextWord = $nextWords[array_rand($nextWords)];
         $output .= ' ' . $nextWord;
         $lastWord = $nextWord;
     }
     return new Response($output);
     return [];
 }