fork download
  1. <?php
  2.  
  3.  
  4. $text = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  5.  
  6. //делает массив с координатами
  7. $leng = mb_strlen($text);
  8. if ($leng<16) {
  9. exit('Слишком короткий текст.');
  10. }
  11. $radius = ceil($leng/4);
  12. $regexLetters = '/\w/u';
  13. $letters = array();
  14. preg_match_all($regexLetters,$text,$letters);
  15.  
  16. $angle = 360/$leng;
  17. for ($i=0;$i!=$leng;$i++) {
  18. $xysym[] = array(
  19. 'x' => round(((sin(deg2rad($angle * $i)) * $radius) + $radius) * 1.1105),
  20. 'y' => round(cos(deg2rad($angle * $i)) * $radius),
  21. 'sym' => $letters[0][$i]);
  22. }
  23.  
  24. //рисует круг через echo (echo строчка с самыми большимы координатамипо оси y и тд)
  25. foreach ($xysym as $key => $row) {
  26. $x[$key] = $row['x'];
  27. $y[$key] = $row['y'];
  28. $sym[$key] = $row['sym'];
  29. }
  30. array_multisort($y, SORT_DESC, $x, SORT_ASC, $xysym);
  31. $xlast = 0;
  32. $echoTemp = '';
  33. $ylast = $xysym[0]['y'];
  34. for ($i=0;$i<$leng;$i++) {
  35. if ($ylast == $xysym[$i]['y']) {
  36. $xlast = ($xysym[$i]['x'])-$xlast;
  37. for ($z=0;$z<$xlast;$z++) {
  38. $echoTemp =$echoTemp.' ';
  39. }
  40. $echoTemp = $echoTemp.$xysym[$i]['sym'];
  41. $ylast = $xysym[$i]['y'];
  42. $xlast = $xysym[$i]['x'];
  43. } else {
  44. echo $echoTemp."\n";
  45. $echoTemp = '';
  46. $xlast = $xysym[$i]['x'];
  47. for ($z=0;$z<$xlast;$z++) {
  48. $echoTemp = $echoTemp.' ';
  49. }
  50. $echoTemp = $echoTemp.$xysym[$i]['sym'];
  51. $ylast = $xysym[$i]['y'];
  52. }
  53. }
  54. echo $echoTemp."\n";
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
                Я    А    Б
          Э  Ю                В  Г
      Ь                            Д
    Ы                                Е
  Ъ                                    Ё
Щ                                        Ж
Ш                                        З
Ч                                        И
  Ц                                    Й
  Х                                    К
    Ф                                Л
        У                        М
          Т                    Н
              С    Р    П    О