<?php
function doOneStep($mask, $filename, $symbol)
{
return true;
}
/**
* Если в маске символ "?", а длина имени файла равна нулю -> проиграли,
* если больше нуля, то убираем один символ из имени файла
*/
if ($lMask == '?') {
} else {
return false;
}
}
if ($lMask == '*') {
return doOneStep
(mb_substr($mask, 1), $filename, $lMask); }
/**
* Если символ маски и имени файла совпадают -> убираем по симовлу
* иначе, если пред. символ '*' и длина имени файла != 0 -> убираем символ имени файла
*/
if ($lMask == $lFilename) {
} else {
if (mb_strlen($filename) > 0 && $symbol == '*') { return doOneStep
($mask, mb_substr($filename, 1), $symbol); } else {
return false;
}
}
}
$mask = 'test';
$filename = 't';
'mask' => array('test', 'test', 'test', 'te?t', 'te?t', 'te?t', 'te?t', 't???', 't???', 't*', 't*', 't*', '*t' , '*t***t*', '*t***t*', 't*st', '*t*st', '', '', 't', '*'), 'filename' => array('test', 'test.txt', 't', 'test', 'tesst', 'tet', 'te?t', 'test', 't', 'test', 't', 'rest', 'rest', 'test', 'rest', 'teskest', 'teskest', '', 't', '', ''), 'answer' => array('+', '-', '-', '+', '-', '-', '+', '+', '-', '+', '+', '-', '+', '+', '-', '+', '+', '+', '-', '-', '+') );
function addSpaceCenter($text, $length)
{
}
return $text;
}
function addDash($width, $cols) {
echo str_repeat('-', $width*$cols + $cols) . "\n"; }
$countTest = count($test['mask']);
$width = 15;
echo addSpaceCenter('Имя файла', $width). "|" . addSpaceCenter('Маска', $width) . "|" . addSpaceCenter('Результат', $width) . "" . addSpaceCenter('Правильный ответ', $width) . "|\n";
addDash($width, 4);
for ($i = 0; $i < $countTest; $i++) {
$answer = doOneStep($test['mask'][$i], $test['filename'][$i], '') ? "+" : "-";
echo addSpaceCenter($test['filename'][$i], $width) . "|" . addSpaceCenter($test['mask'][$i], $width) . "|" . addSpaceCenter($answer, $width) . "|" . addSpaceCenter($test['answer'][$i], $width) . "|\n";
addDash($width, 4);
}
?>
PD9waHAKICAgIGVycm9yX3JlcG9ydGluZygtMSk7CiAgICBtYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKICAgIAogICAgZnVuY3Rpb24gZG9PbmVTdGVwKCRtYXNrLCAkZmlsZW5hbWUsICRzeW1ib2wpCiAgICB7CiAgICAgICAgaWYgKChtYl9zdHJsZW4oJG1hc2spID09IDApICYmIChtYl9zdHJsZW4oJGZpbGVuYW1lKSA9PSAwKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGxNYXNrID0gbWJfc3Vic3RyKCRtYXNrLCAwLCAxKTsKICAgICAgICAkbEZpbGVuYW1lID0gbWJfc3Vic3RyKCRmaWxlbmFtZSwgMCwgMSk7CiAgICAgICAgCiAgICAgICAgLyoqIAogICAgICAgICAqICAg0JXRgdC70Lgg0LIg0LzQsNGB0LrQtSDRgdC40LzQstC+0LsgIj8iLCDQsCDQtNC70LjQvdCwINC40LzQtdC90Lgg0YTQsNC50LvQsCDRgNCw0LLQvdCwINC90YPQu9GOIC0+INC/0YDQvtC40LPRgNCw0LvQuCwKICAgICAgICAgKiAgINC10YHQu9C4INCx0L7Qu9GM0YjQtSDQvdGD0LvRjywg0YLQviDRg9Cx0LjRgNCw0LXQvCDQvtC00LjQvSDRgdC40LzQstC+0Lsg0LjQtyDQuNC80LXQvdC4INGE0LDQudC70LAgCiAgICAgICAgICovCiAgICAgICAgaWYgKCRsTWFzayA9PSAnPycpIHsKICAgICAgICAgICAgaWYgKG1iX3N0cmxlbigkZmlsZW5hbWUpID4gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGRvT25lU3RlcChtYl9zdWJzdHIoJG1hc2ssIDEpLCBtYl9zdWJzdHIoJGZpbGVuYW1lLCAxKSwgJGxNYXNrKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJGxNYXNrID09ICcqJykgewogICAgICAgICAgICByZXR1cm4gZG9PbmVTdGVwKG1iX3N1YnN0cigkbWFzaywgMSksICRmaWxlbmFtZSwgJGxNYXNrKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyoqIAogICAgICAgICAqICAg0JXRgdC70Lgg0YHQuNC80LLQvtC7INC80LDRgdC60Lgg0Lgg0LjQvNC10L3QuCDRhNCw0LnQu9CwINGB0L7QstC/0LDQtNCw0Y7RgiAtPiDRg9Cx0LjRgNCw0LXQvCDQv9C+INGB0LjQvNC+0LLQu9GDCiAgICAgICAgICogICDQuNC90LDRh9C1LCDQtdGB0LvQuCDQv9GA0LXQtC4g0YHQuNC80LLQvtC7ICcqJyDQuCDQtNC70LjQvdCwINC40LzQtdC90Lgg0YTQsNC50LvQsCAhPSAwIC0+INGD0LHQuNGA0LDQtdC8INGB0LjQvNCy0L7QuyDQuNC80LXQvdC4INGE0LDQudC70LAgCiAgICAgICAgICovICAgICAgICAKICAgICAgICBpZiAoJGxNYXNrID09ICRsRmlsZW5hbWUpIHsKICAgICAgICAgICAgcmV0dXJuIGRvT25lU3RlcChtYl9zdWJzdHIoJG1hc2ssIDEpLCBtYl9zdWJzdHIoJGZpbGVuYW1lLCAxKSwgJHN5bWJvbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKG1iX3N0cmxlbigkZmlsZW5hbWUpID4gMCAmJiAkc3ltYm9sID09ICcqJykgewogICAgICAgICAgICAgICAgcmV0dXJuIGRvT25lU3RlcCgkbWFzaywgbWJfc3Vic3RyKCRmaWxlbmFtZSwgMSksICRzeW1ib2wpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAkbWFzayA9ICd0ZXN0JzsKICAgICRmaWxlbmFtZSA9ICd0JzsKICAgICR0ZXN0ID0gYXJyYXkoCiAgICAgICAgJ21hc2snID0+IGFycmF5KCd0ZXN0JywgJ3Rlc3QnLCAndGVzdCcsICd0ZT90JywgJ3RlP3QnLCAndGU/dCcsICd0ZT90JywgJ3Q/Pz8nLCAndD8/PycsICd0KicsICd0KicsICd0KicsICcqdCcgLCAnKnQqKip0KicsICcqdCoqKnQqJywgJ3Qqc3QnLCAnKnQqc3QnLCAnJywgJycsICd0JywgJyonKSwKICAgICAgICAnZmlsZW5hbWUnID0+IGFycmF5KCd0ZXN0JywgJ3Rlc3QudHh0JywgJ3QnLCAndGVzdCcsICd0ZXNzdCcsICd0ZXQnLCAndGU/dCcsICd0ZXN0JywgJ3QnLCAndGVzdCcsICd0JywgJ3Jlc3QnLCAncmVzdCcsICd0ZXN0JywgJ3Jlc3QnLCAndGVza2VzdCcsICd0ZXNrZXN0JywgJycsICd0JywgJycsICcnKSwKICAgICAgICAnYW5zd2VyJyA9PiBhcnJheSgnKycsICctJywgJy0nLCAnKycsICctJywgJy0nLCAnKycsICcrJywgJy0nLCAnKycsICcrJywgJy0nLCAnKycsICcrJywgJy0nLCAnKycsICcrJywgJysnLCAnLScsICctJywgJysnKQogICAgKTsKICAgIAogICAgZnVuY3Rpb24gYWRkU3BhY2VDZW50ZXIoJHRleHQsICRsZW5ndGgpCiAgICB7CiAgICAgICAgaWYgKG1iX3N0cmxlbigkdGV4dCkgPCAkbGVuZ3RoKSB7CiAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGVhdCgnICcsIHJvdW5kKCgkbGVuZ3RoIC0gbWJfc3RybGVuKCR0ZXh0KSkgLyAyKSkgLiAkdGV4dCAuIHN0cl9yZXBlYXQoJyAnLCBmbG9vcigoJGxlbmd0aCAtIG1iX3N0cmxlbigkdGV4dCkpIC8gMikpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRleHQ7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGFkZERhc2goJHdpZHRoLCAkY29scykgewogICAgICAgIGVjaG8gc3RyX3JlcGVhdCgnLScsICR3aWR0aCokY29scyArICRjb2xzKSAuICJcbiI7CiAgICB9CiAgICAKICAgICRjb3VudFRlc3QgPSBjb3VudCgkdGVzdFsnbWFzayddKTsKICAgIAogICAgJHdpZHRoID0gMTU7CiAgICBlY2hvIGFkZFNwYWNlQ2VudGVyKCfQmNC80Y8g0YTQsNC50LvQsCcsICR3aWR0aCkuICJ8IiAuIGFkZFNwYWNlQ2VudGVyKCfQnNCw0YHQutCwJywgJHdpZHRoKSAuICJ8IiAuIGFkZFNwYWNlQ2VudGVyKCfQoNC10LfRg9C70YzRgtCw0YInLCAkd2lkdGgpIC4gIiIgLiBhZGRTcGFjZUNlbnRlcign0J/RgNCw0LLQuNC70YzQvdGL0Lkg0L7RgtCy0LXRgicsICR3aWR0aCkgLiAifFxuIjsKICAgIGFkZERhc2goJHdpZHRoLCA0KTsKICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjb3VudFRlc3Q7ICRpKyspIHsKICAgICAgICAkYW5zd2VyID0gZG9PbmVTdGVwKCR0ZXN0WydtYXNrJ11bJGldLCAkdGVzdFsnZmlsZW5hbWUnXVskaV0sICcnKSA/ICIrIiA6ICItIjsKICAgICAgICBlY2hvIGFkZFNwYWNlQ2VudGVyKCR0ZXN0WydmaWxlbmFtZSddWyRpXSwgJHdpZHRoKSAuICJ8IiAuIGFkZFNwYWNlQ2VudGVyKCR0ZXN0WydtYXNrJ11bJGldLCAkd2lkdGgpIC4gInwiIC4gYWRkU3BhY2VDZW50ZXIoJGFuc3dlciwgJHdpZHRoKSAuICJ8IiAuIGFkZFNwYWNlQ2VudGVyKCR0ZXN0WydhbnN3ZXInXVskaV0sICR3aWR0aCkgLiAifFxuIjsKICAgICAgICBhZGREYXNoKCR3aWR0aCwgNCk7CiAgICB9CiAgICAKICAgIAo/Pg==