<?php

error_reporting(-1);
mb_internal_encoding('UTF-8');

$phrase = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';

/*Подсчитываем длину фразы. */
$phraseLength = mb_strlen($phrase);

/* Произвольно устанавливаем длину радиуса - вычисляем её опытным путём. Желательно иметь возможность каким-либо образом вычислить длину радиуса из длины фразы. */
$radius = 14.2;

/* Создаём массив со вложенными массивами, наполненными ключами и пробелами в значениях. Опытным путём вычислили количество ключей со значениями во вложенных массива. Желательно каким-либо образом вычислить это количество из длины фразы. */
$screen = array();
for ($x = 0; $x < $phraseLength; $x++) {
    $screen[$x] = array_fill(0, 75, ' ');
}

/* Находим угол между буквами и переводим градусы в радианы. */
$angleBetweenLettersDegrees = 360 / $phraseLength;
$angleBetweenLettersRadians = deg2rad($angleBetweenLettersDegrees);

/* Устанавливаем координаты x и y, заполняем многомерный массив $screen буквами в соответствии с этими координатами. Координату y приходится каждый раз множить на определённое опытным путём число, а также прибавлять опять же полученное опытным путём число. К координате x также приходится прибавлять такое число. Желательно каким-либо образом вычислять это всё из имеющихся данных! */
$angle = 0; 
for ($i = 0; $i < $phraseLength; $i++) {
    $y = (round($radius * cos($angle)) * 2.65) + 37;
    $x = round($radius * sin($angle)) + 15;
    $angle += $angleBetweenLettersRadians;
    $screen[$x][$y] = mb_substr($phrase, $i, 1);
}

/* Заполненный массивами с пробелами и буквами массив представляем как строки, склеиваем их и выводим одну за другой. */
foreach ($screen as $strings) {
	$result = implode('', $strings);
    echo  "$result\n";
}

?>