<?php
/*Yoda Speak
Задание:
дан текст из нескольких предложений, предложение состоит из русских слов, разделенных пробелами. Написать программу, переставляющую слова в предложениях в обратном порядке. Знаки препинания в конце предложений (точка, восклицательный знак) можно не сохранять.*/
//$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
// Другие варианты для тестов
//$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
$text = "Идет гражданская война?? Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей!" ;
/* Делает первую букву предложения заглавной */
function makeFirstletterUppercase( $text ) {
}
function makeYodaStyleText( $text ) {
$regExp = [
"expSplit" => "/([.!?;]+)\K\s*/" ,
"expUselessSymbol" => "/[:,-]/" ,
"expReplace" => "/([^.!?;]+)([.!?;]+)(.+)/" ,
"replacement" => "$1 $3 $2 "
] ;
$strings = preg_split ( $regExp [ "expSplit" ] , $text , - 1 , PREG_SPLIT_NO_EMPTY
) ; $reverseStrings = [ ] ;
foreach ( $strings as $string ) {
$reverseStrings [ ] = makeFirstLetterUppercase
( implode ( " " , $reverseWords ) ) ; }
return implode ( " " , preg_replace ( $regExp [ "expReplace" ] , $regExp [ "replacement" ] , $reverseStrings ) ) ; }
$yodaText = makeYodaStyleText( $text ) ;
echo "Йода говорит: {$yodaText} \n " ;
PD9waHAKLypZb2RhIFNwZWFrCtCX0LDQtNCw0L3QuNC1OgrQtNCw0L0g0YLQtdC60YHRgiDQuNC3INC90LXRgdC60L7Qu9GM0LrQuNGFINC/0YDQtdC00LvQvtC20LXQvdC40LksINC/0YDQtdC00LvQvtC20LXQvdC40LUg0YHQvtGB0YLQvtC40YIg0LjQtyDRgNGD0YHRgdC60LjRhSDRgdC70L7Qsiwg0YDQsNC30LTQtdC70LXQvdC90YvRhSDQv9GA0L7QsdC10LvQsNC80LguINCd0LDQv9C40YHQsNGC0Ywg0L/RgNC+0LPRgNCw0LzQvNGDLCDQv9C10YDQtdGB0YLQsNCy0LvRj9GO0YnRg9GOINGB0LvQvtCy0LAg0LIg0L/RgNC10LTQu9C+0LbQtdC90LjRj9GFINCyINC+0LHRgNCw0YLQvdC+0Lwg0L/QvtGA0Y/QtNC60LUuINCX0L3QsNC60Lgg0L/RgNC10L/QuNC90LDQvdC40Y8g0LIg0LrQvtC90YbQtSDQv9GA0LXQtNC70L7QttC10L3QuNC5ICjRgtC+0YfQutCwLCDQstC+0YHQutC70LjRhtCw0YLQtdC70YzQvdGL0Lkg0LfQvdCw0LopINC80L7QttC90L4g0L3QtSDRgdC+0YXRgNCw0L3Rj9GC0YwuKi8KCi8vJHRleHQgPSAi0JrQsNC20LXRgtGB0Y8sINC90LDRgSDQvtCx0L3QsNGA0YPQttC40LvQuCEg0J3QsNC00L4g0YHRgNC+0YfQvdC+INGD0YXQvtC00LjRgtGMINC+0YLRgdGO0LTQsCwg0L/QvtC60LAg0L3QtSDQv9C+0LfQtNC90L4uINCR0LXQttC40Lwg0LbQtSDRgdC60L7RgNC10LUhIjsKLy8g0JTRgNGD0LPQuNC1INCy0LDRgNC40LDQvdGC0Ysg0LTQu9GPINGC0LXRgdGC0L7QsgovLyR0ZXh0ID0gItCd0YMsINC/0YDQvtGB0YLQuCDQvNC10L3RjyEg0J3QtSDRhdC+0YLQtdC70LAg0Y8g0YLQtdCx0LUg0LfQu9CwINGB0LTQtdC70LDRgtGMOyDQtNCwINCyINGB0LXQsdC1INC90LUg0LLQvtC70YzQvdCwINCx0YvQu9CwLiDQp9GC0L4g0LPQvtCy0L7RgNC40LvQsCwg0YfRgtC+INC00LXQu9Cw0LvQsCwg0YHQtdCx0Y8g0L3QtSDQv9C+0LzQvdC40LvQsC4iOwokdGV4dCA9ICLQmNC00LXRgiDQs9GA0LDQttC00LDQvdGB0LrQsNGPINCy0L7QudC90LA/PyDQmtC+0YHQvNC40YfQtdGB0LrQuNC1INC60L7RgNCw0LHQu9C4INC/0L7QstGB0YLQsNC90YbQtdCyLCDQvdCw0L3QvtGB0Y/RidC40LUg0YPQtNCw0YAg0YEg0YLQsNC50L3QvtC5INCx0LDQt9GLLCDQvtC00LXRgNC20LDQu9C4INC/0LXRgNCy0YPRjiDQv9C+0LHQtdC00YMsINCyINGB0YXQstCw0YLQutC1INGB0L4g0LfQu9C+0LLQtdGJ0LXQuSDQk9Cw0LvQsNC60YLQuNGH0LXRgdC60L7QuSDQmNC80L/QtdGA0LjQtdC5ISI7CgovKiDQlNC10LvQsNC10YIg0L/QtdGA0LLRg9GOINCx0YPQutCy0YMg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQt9Cw0LPQu9Cw0LLQvdC+0LkgKi8KZnVuY3Rpb24gbWFrZUZpcnN0bGV0dGVyVXBwZXJjYXNlKCR0ZXh0KSB7CiAgICByZXR1cm4gbWJfc3RydG91cHBlcihtYl9zdWJzdHIoJHRleHQsIDAsIDEpKSAuIG1iX3N1YnN0cigkdGV4dCwgMSk7Cn0KCmZ1bmN0aW9uIG1ha2VZb2RhU3R5bGVUZXh0KCR0ZXh0KSB7CiAgICAkcmVnRXhwID0gWwogICAgICAgICJleHBTcGxpdCIgPT4gIi8oWy4hPztdKylcS1xzKi8iLAogICAgICAgICJleHBVc2VsZXNzU3ltYm9sIiA9PiAiL1s6LC1dLyIsCiAgICAgICAgImV4cFJlcGxhY2UiID0+ICIvKFteLiE/O10rKShbLiE/O10rKSguKykvIiwKICAgICAgICAicmVwbGFjZW1lbnQiID0+ICIkMSQzJDIiCiAgICBdOwogICAgJHRleHQgPSBtYl9zdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgkcmVnRXhwWyJleHBVc2VsZXNzU3ltYm9sIl0sICIiLCAkdGV4dCkpOwogICAgJHN0cmluZ3MgPSBwcmVnX3NwbGl0KCRyZWdFeHBbImV4cFNwbGl0Il0sICR0ZXh0LCAtMSwgUFJFR19TUExJVF9OT19FTVBUWSk7CiAgICAkcmV2ZXJzZVN0cmluZ3MgPSBbXTsKCiAgICBmb3JlYWNoICgkc3RyaW5ncyBhcyAkc3RyaW5nKSB7CiAgICAgICAgJHJldmVyc2VXb3JkcyA9IGFycmF5X3JldmVyc2UoZXhwbG9kZSgiICIsICRzdHJpbmcpKTsKICAgICAgICAkcmV2ZXJzZVN0cmluZ3NbXSA9IG1ha2VGaXJzdExldHRlclVwcGVyY2FzZShpbXBsb2RlKCIgIiwgJHJldmVyc2VXb3JkcykpOwogICAgfQoKICAgIHJldHVybiBpbXBsb2RlKCIgIiwgcHJlZ19yZXBsYWNlKCRyZWdFeHBbImV4cFJlcGxhY2UiXSwgJHJlZ0V4cFsicmVwbGFjZW1lbnQiXSwgJHJldmVyc2VTdHJpbmdzKSk7Cn0KCiR5b2RhVGV4dCA9IG1ha2VZb2RhU3R5bGVUZXh0KCR0ZXh0KTsKZWNobyAi0JnQvtC00LAg0LPQvtCy0L7RgNC40YI6IHskeW9kYVRleHR9XG4iOw==