Задачки на PHP

5.14K
.
function palindromes($words){
        $return_string = '';
        for($s=0; $s < count($words); $s++){
            $w = $words[$s];
            $r = '';
            for($i=0; $i < mb_strlen($w); $i++){
                $r.=mb_substr($w, (mb_strlen($w)-$i-1), 1);
            }
            if($r==$w){
                $return_string.='F';
            }else{
                $return_string.='T';
            }
            unset($w, $r);

        }
        return $return_string;
    }


    echo palindromes(array('ротор', 'тор', 'noon', 'sunset')); //FTFT

// кодировку для mb_string не указывал, предполагается она давно уже задана
если бы не кириллица все было бы в сотню раз проще (strrev)
.
ramzes, почему не foreach для массива слов?
Почему уверен, что функции передан массив?
count() будет выполняться при каждой итреации, что плохо сказывается на производительности.
.
ramzes, так и есть. На РНР даже разбить слово на буквы - не тривиальная задача. Особенно, если это слово в юникоде.
.
ramzes
# reaper (25.01.2014 / 13:07)
ramzes, почему не foreach для массива слов?
Почему уверен, что функции передан массив?
count() будет выполняться при каждой итреации, что плохо сказывается на производительности.
потому что не форич)) почему не фор? не играет роли.
а массив.. просто не относится к решению задачи.
лишний код отвлекает от сути
ну если уж принципиально, то
function palindromes(array $words){

ни как не скажется коунт в цикле, это на столько мизерная нагрузка, что ее можно и 1000 раз повторить
.
L!MP, если честно, очень не люблю с кириллицей работать, с ней вечно все только через кастыли работать может%)
.
ramzes, радует то, что в повседневной жизни не часто приходится переворачиваьть слова.

К стати, слово можно разбить на буквы регекспом, с модификатором u. Тогда функция будет компактней.
.
кстати, проверка массива не нужна, она помешает
совсем забыл зачем так сделал)))
задайте функции строку, она воспримет ее как массив с одним единственным значением, особенности обращения к строке как к массиву
echo palindromes('ротор'); // F

L!MP , хотелось бы еще реже..
логи, мать их, сплошные строковые функции
.
(\/)____o_O____(\/)
думал написать вечером, на работе с тела не айс, я бы сделал чуть по другому, но смысл тот же по сути, маленькая функция для слова, и array_map
.
(\/)____o_O____(\/)
функцию переворота можно тоже проще реализовать, разбить слово на массив и реверснуть
.
# Koenig (25.01.2014 / 13:27)
думал написать вечером, на работе с тела не айс, я бы сделал чуть по другому, но смысл тот же по сути, маленькая функция для слова, и array_map
тоже хотел через array_pop, но решил не городить, точнее, лень думать было))
Всего: 173