fork download
  1. <?php
  2. /*Yoda Speak
  3. Задание:
  4. дан текст из нескольких предложений, предложение состоит из русских слов, разделенных пробелами. Написать программу, переставляющую слова в предложениях в обратном порядке. Знаки препинания в конце предложений (точка, восклицательный знак) можно не сохранять.*/
  5.  
  6. //$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  7. // Другие варианты для тестов
  8. //$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  9. $text = "Идет гражданская война?? Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей!";
  10.  
  11. /* Делает первую букву предложения заглавной */
  12. function makeFirstletterUppercase($text) {
  13. return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
  14. }
  15.  
  16. function makeYodaStyleText($text) {
  17. $regExp = [
  18. "expSplit" => "/([.!?;]+)\K\s*/",
  19. "expUselessSymbol" => "/[:,-]/",
  20. "expReplace" => "/([^.!?;]+)([.!?;]+)(.+)/",
  21. "replacement" => "$1$3$2"
  22. ];
  23. $text = mb_strtolower(preg_replace($regExp["expUselessSymbol"], "", $text));
  24. $strings = preg_split($regExp["expSplit"], $text, -1, PREG_SPLIT_NO_EMPTY);
  25. $reverseStrings = [];
  26.  
  27. foreach ($strings as $string) {
  28. $reverseWords = array_reverse(explode(" ", $string));
  29. $reverseStrings[] = makeFirstLetterUppercase(implode(" ", $reverseWords));
  30. }
  31.  
  32. return implode(" ", preg_replace($regExp["expReplace"], $regExp["replacement"], $reverseStrings));
  33. }
  34.  
  35. $yodaText = makeYodaStyleText($text);
  36. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.02s 24728KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет?? Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические!