fork download
  1. <?php
  2.  
  3. //Вводим фразу и определяем ее длину
  4. $phrase="Теряется первый символ";
  5. $phraseLenght=mb_strlen($phrase);
  6. //Вводим радиус, по которому будут писаться буквы, высоту(?), центр координат Х и Y, вводим переменные для угла и буквы
  7. $radius=12.5;
  8.  
  9. $height=35;
  10. $centerX=40;
  11. $centerY=15;
  12. $angle=0;
  13. $word='';
  14.  
  15. //Создаем массив, который будет включать в себя $y массивов, в которых будет содержаться по 80 элементов ' '
  16. $screen=array();
  17. for ($y=0; $y<$height;$y++){
  18. $screen[$y]=array_fill(0,80,' ');
  19. }
  20. //Посимвольно перебираем строку до тех пор, пока количество итераций не превысит число символов в строке
  21. for ($i=0;$i<=$phraseLenght;$i++){
  22. //Выбираем букву из строки
  23. $word=mb_substr($phrase,$i,1);
  24. //Определяем угол. Так как нужно писать по кругу, каждый следующий угол будет равен сумме предыдущего и угла,
  25. //равного 360/количество символов. Попутно переводим угол в радианы
  26. $angle=$angle+((360/$phraseLenght)*pi()/180);
  27. //Определяем координату Х по правилу прямоугольного треугольника. Для Х необходим корректирующий коэффициент,
  28. //подобранный долгими мучениями в лабораторных условиях
  29. $coordinateX=3*(round($radius*sin($angle)));
  30. //То же с Y, только уже без коррекции
  31. $coordinateY=round($radius*cos($angle));
  32. //В массиве $screen лежат координаты Y, а в массиве $screen[$y]- координаты Х. Помня, что центры координат находятся не в [0,0],
  33. //прибавляем каждую координату к значению центра координат
  34. $screen[$centerY+$coordinateY][$centerX+$coordinateX]=$word;
  35. }
  36. //Выводим значения массива $screen, склеивая через ' ' и добавляя после каждого выведенного массива $screen[$y] "\n"
  37. foreach ($screen as $v){
  38. $string=implode ('',$v);
  39. echo $string . "\n";
  40. }
  41.  
Success #stdin #stdout 0.02s 25000KB
stdin
Standard input is empty
stdout
                                                                                
                                                                                
                                        е                                       
                            р                       п                           
                   в                                                            
                                                                                
                                                                                
             ы                                                     я            
                                                                                
                                                                                
       й                                                                 с      
                                                                                
                                                                                
                                                                            т   
                                                                                
                                                                                
                                                                                
    с                                                                       е   
                                                                                
                                                                                
       и                                                                 я      
                                                                                
                                                                                
             м                                                     р            
                                                                                
                                                                                
                   в                                         е                  
                            о                                                  
                                        л