Сохранено!
// PHP 7.2
// Charset: Windows-1251

[[?::namespace;{namespace }UnknownNS{;}]]

use Core\Lib\{[[::trait-name;EmptyTrait]] as helper};

/**
 * Класс-стенд с академическими задачами.
 * Небходимо заполнить все пропуски в классе так, чтобы он
 * удовлетворял поставленным assert'ам
 */
class JobSeeker [[?::extends;{extends }UnknownClass]] {
	use helper {[[::trait-method;{test as }method{;}]]}

	public $[[::class-prop-name;propertyName]] = [[::class-prop-value;null]];

	public function __construct() {
		if (get_parent_class($this) !== false) {
			parent::__construct();
			$this->initSkills();
		}
	}

	/**
	 * Заменяет в переданном тексте ключевые слова на информацию о вас.
	 * Пожалуйста, укажите достоверную информацию
	 */
	public function getWelcomeText(string $pattern): string {
		static $myCard = [
			'%name%' => '[[?::name;Ваше имя]]',
			'%age%' => '[[?::age;Ваш возраст]]',
			'%city%' => '[[?::city;Ваш город]]',
		];
		$res = [[::welcome-func;someFunc]]($pattern, $myCard);
		return "$res";
	}

	/**
	 * Заполняет экземпляр класса вашими навыками в IT.
	 * Пожалуйста, укажите достоверную информацию
	 */
	private function initSkills(): void {
		static $skills = '[[?::skills;Ваши навыки]]';
		$list = explode(',', $skills);
		[[?::skills-method;{$this->}methodName{(count($list));}]]

		foreach ($list as $i => $v) {
			[[::skills-var;{$}list]][$i] = $v;
		}
	}

	/**
     * Сортирует простой индексный массив с числами так,
	 * чтобы в итоговом простом индексном массиве числа выстроились
	 * визуально в столбцы, см. пример массива в Assert
     */
	public function sortByColumns(array $arr): array {
		sort($arr);
		$arr = [[::sort-1;someFunc]]($arr);
		$l = count($arr);
		$res = [];
		while ($l > 0) {
			for ($i = 0, $last = null; $i < $l; $i++) {
				if ($last !== $arr[$i]) {
					$last = $arr[$i];
					[[::sort-2;someFunc]]($res, $arr[$i]);
					[[::sort-3;someFunc]]($arr, $i--, 1);
					$l--;
				}
			}
		}
		return $res;
	}

	/**
	 * Вычисляет последовательность чисел Фибоначчи заданной длины
	 */
	public function getFibonacci($n) {
		$n2 = -($n1 = 1);
		while ($n --> -1) {
			$r = $n1 += $n2 and 0 or [[::fibonacci-op2;!!!]][$n + 1 => $n1];
			$n2 = $n1 - $n2;
		}
		return $r;
	}

	/**
	 * Возвращает список призывов вида @nick, найденных в тексте.
	 * Ник можем содержать от 3 до 5 символов латинского алфавита, цифры и точку.
	 * Точки могут быть только внутри ника (не крайними символами) и максимум 1 точка
	 * между символами.
	 */
	public function parseMentions(string $str): array {
		if (preg_match_all('[[::regexp-1;regular expresion]]', $str, $m) === 0) {
			return [];
		}

		return $m['name'] ?? [];
	}

	/**
	 * Шифрует строку используя сдвиг Цезаря.
     * Результат - HEX представление зашифрованной строки.
	 */
	public function encrypt(string $str, int $shift): string {
		$ascii = [[::encrypt-1;someFunc]]('c*', $str);
		foreach ($ascii as &$code) {
			$code = ($code + $shift) % [[::encrypt-num;{0}base]];
		}
		return [[::encrypt-3;someFunc]]([[::encrypt-2;someFunc]]('c*', ...$ascii));
	}

	/**
     * Фильтрует список пользоваталей при помощи БД
     */
	public function filterUsers(array $values): array {
		$db = new PDO('mysql:dbname=mysql;host=127.0.0.1', 'root');
		$db->query("
			CREATE TEMPORARY TABLE jobseeker_users (
				id [[::mysql-1;TYPE]] COMMENT 'Unique Autoincrement Key',
				name [[::mysql-2;{VARCHAR(}length{)}]] NOT NULL,
				age TINYINT UNSIGNED,
				rdate TIMESTAMP NOT NULL
			) ENGINE=InnoDB;
		");

		$db->query("SET sql_mode=''"); // убираем STRICT_TRANS_TABLES

		$stmt = $db->prepare("
			INSERT INTO jobseeker_users (name, age, rdate) VALUES (?, ?, ?)
		");

		foreach ($values as $row) {
			$stmt->execute($row);
		}

		$SQL = "
			SELECT
				id,
				[[::mysql-3;SOMEFUNC]](name, 'Tracer') AS nick,
				[[::mysql-4;SOMEFUNC]](age, 33) AS years,
				DATE_FORMAT(rdate, '[[::mysql-5;форматная маска]]') AS cdate
			FROM jobseeker_users
			ORDER BY [[::mysql-6;field]] DESC
			LIMIT 1, 3
		";
		return $db->query($SQL)->fetchAll(PDO::FETCH_NUM);
	}

	/**
	 * Вычисляет математическое выражение
	 */
	public function calc(string $str): float {
		$word = '[[::calc-word;слово]]';
		$handlers = [
			'*' => function (float $a, float $b): float {return $a * $b;},
			'/' => function (float $a, float $b): float {return $a / $b;},
			'+' => function (float $a, float $b): float {return $a + $b;},
			'-' => function (float $a, float $b): float {return $a - $b;},
			'^' => function (float $a, float $b): float {return $a ** $b;},
		];

		$parse = function (string $str, int &$i = 0) use (&$parse, $word, &$handlers) {
			$operators = [];
			$operands = [];
			$prev = '';
			$var = 'parse';
			for (; $i < strlen($str); $i++) {
				$c = $str[$i];
				if ($c === '(') {
					[[?::calc-op1;{$i }=={ -1}]];
					$operands[] = $$$word($str, $i);
				} else if ($c === ')') {
					[[?::calc-label;{goto }label{;}]]
					return 0.0;
				} else if (isset($handlers[$c])) {
					$operators[] = $c;
				} else if (is_numeric($c) || $c === '.') {
					if (is_numeric($prev) || $prev === '.') {
						$operands[] = [[::calc-func1;someFunc]]($operands) . $c;
					} else {
						$operands[] = $c;
					}
				}
				$prev = $c;
			}

			calc: foreach ($handlers as $op => $h) {
				while (false !== ($k = [[::calc-func2;someFunc]]($op, $operators, true))) {
					array_splice($operators, $k, 1);
					list($a, $b) = array_splice($operands, $k, 2, 0);
					$operands[$k] = [[::calc-var;{$}varName]]((float)$a, (float)$b);
				}
			}
			return $operands[0];
		};

		return $parse($str);
	}

	/**
	 * Смещает переданную дату используя определенный алгоритм
	 */
	public function shiftDate(string $date): string {
		return (new class($date) extends DateTime {
			public function [[::date-func1;someFunc]]() {
				return [[::date-func2;someFunc]]() === 0
					? $this->format('Y-m-d')
					: @$this->modify([[::date-func3;someFunc]](0)) ?: $this;
			}
		})
		('last day of this month')
		('Monday')
		('[[::date-shift1;формат]]')
		();
	}

	/**
	 * Парсит и табулирует переданную строку
	 */
	public function tabulateData(string $str): string {
		$out = '';
		foreach (explode("\n", $str) as $line) {
			$out .= sprintf(
				"[[::tabulate1;формат]]",
				...(sscanf($line, "[[::tabulate2;формат]]") ?: ['', 0, .0, '', 0])
			);
		}
		return rtrim($out);
	}
}

Assert 0/0

assert(
	strpos(JobSeeker::class, "Pikabu04\\") === 0
	&& array_slice(explode("\\", get_class(new JobSeeker)), 1, 1) === ["Company"]
	&& substr_count(JobSeeker::class, "\\") === 2
);
namespace Core\Lib {
	trait Test08 {
		private function test() {
			return static::class;
		}
	}
}
assert((string)new JobSeeker() === JobSeeker::class);
date_default_timezone_set("Europe/Moscow");
$inst = new JobSeeker();
assert(
	isset($inst->{$d = date("\\l\u{0059}", 0xb2c1b92fd)})
	&& empty($inst->$d)
	&& !is_string($inst->$d)
	&& !is_bool($inst->$d)
	&& !is_array($inst->$d)
	&& $inst->$d !== 0
	&& ($inst->$d | 1) === 1
);
$inst = new JobSeeker();
assert(
	$inst instanceof \ArrayAccess
	&& $inst instanceof \Countable
	&& !$inst instanceof \OuterIterator
	&& !$inst instanceof \Serializable
	&& method_exists($inst, "getSize")
);
assert(
	preg_match(
		"@зовут (?<n>[^,]+), мне (?<a>.+) и я из (?<c>.+)$@",
		(new JobSeeker())->getWelcomeText("Меня зовут %name%, мне %age% и я из %city%"),
		$match
	) > 0
	&& preg_match("#^[A-Я][-а-яё]+ [A-Я]\.$#", $match["n"]) > 0
	&& preg_match("/^[1-5][0-9] (года?|лет)$/", $match["a"]) > 0
	&& preg_match("%^(г|д|п)\. [A-Я][-A-ЯЁa-zа-яё ]+$%i", $match["c"]) > 0
);
$inst = new JobSeeker();
assert(
	count($inst) >= 5
	&& in_array("git", (array)$inst, true)
	&& in_array("php", (array)$inst, true)
);
$arr2 = $arr = [
	1,
	1,    3,
	1,    3, 4,
	1, 2, 3, 4, 5,
	1, 2, 3, 4, 5,
];
shuffle($arr2);
assert((new JobSeeker())->sortByColumns($arr2) === $arr);
assert(
	($res = (new JobSeeker())->getFibonacci(8))
	&& ($res instanceof \Traversable)
	&& count($arr = iterator_to_array($res)) === 9
	&& array_keys($arr) == range(8, 0, -1)
	&& array_values($arr) == [0, 1, 1, 2, 3, 5, 8, 13, 21]
);
$inst = new JobSeeker();
assert(
	$inst->parseMentions("@a @ab @abc a@xyz !@ijmn,@123 0@321 @1a2b @qwerty") 
		=== ["@abc", "@ijmn", "@123", "@1a2b"]
		
	&& $inst->parseMentions("@abc.a @stu..test _@nmp @x.yz.@klm @.1a2b .@2c3d.") 
		=== ["@abc.a", "@stu", "@x.yz", "@klm", "@2c3d"]
);
// base=64
$inst = new JobSeeker();
assert(
	$inst->encrypt("foo", 246) === "1c2525"
	&& $inst->encrypt("bar", 0) === "222132"
	&& $inst->encrypt("car", 698) === "1d1b2c"
);
$data = [
	["Tracer", 26, "2014-11-07 12:02:03"],
	["Reaper", 58, "2015-03-05 16:01:33"],
	["Widowmaker", null, "2013-12-22 05:00:59"],
	["Zarya", 28, "2019-07-01 10:14:35"],
];
assert($inst->filterUsers($data) === [
	["3", "Widowm", "33", "22nd December, 2013, 5 AM"],
	["4", "Zarya", "28", "1st July, 2019, 10 AM"],
	["1", null, "26", "7th November, 2014, 12 PM"],
]);
$inst = new JobSeeker();
assert(
	$inst->calc("(2 + 21) - 2 * 5") === 13.0
	&& $inst->calc("((.3 + 0.2) - 5 - 2) * 4.") === -26.0
	&& $inst->calc("(((((5 ^ 4)))) / 5)") === 125.0
);
$inst = new JobSeeker();
assert(
	$inst->shiftDate("2018-07-19") === "2018-08-05"
	&& $inst->shiftDate("2015-12-20") === "2016-01-03"
	&& $inst->shiftDate("2020-01-31") === "2020-02-02"
	&& $inst->shiftDate("2019-08-31") === "2019-09-01"
);
$in = "Moderator-54.5166.3/ADm/Skf32
Admin-1.456.12mrlpWvaL/5
Support-15.96271AcsmKSdq632";
$out = <<<OUT
54 Moderator 5166.30   32
1  Admin....  456.12    5
15 Support..96271.00  632
OUT;

assert((new JobSeeker())->tabulateData($in) === $out);

Проблема валидации

Подсвеченное в коде поле имеет недопустимое значение. Выполнить программу невозможно.

Уровень 1

Level