Более легкое общение означает… ○ циркулярное издание!

12

Исходя из этого , но меня попросили [1] , [2] сделать графическое издание.

ЛЕГКИЕ СРЕДСТВА СВЯЗИ БЫСТРОЕ КОДИРОВАНИЕ СРЕДСТВА МЕНЬШЕ КОДЕРОВ СРЕДСТВА…

задача

Генерация кругового отображения текста EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Любой прописной шрифт идет. Вершины письма должны быть вне круга. Либо пространство перед FEWERдолжно быть внизу (6 часов), либо (для коричневых точек) ваш текст должен вращаться.

Адам
источник
@ Uriel Ну, формально, каждая буква занимает 5,45 °, так скажем, 5,4 ° до 5,5 °?
Адам
Я считаю, что это было бы хорошей точностью, учитывая, что 2/21ошибка аппроксимации не превышает 0,002.
Уриэль

Ответы:

7

Mathematica, 153 байта

x=Pi/33;Graphics@Map[StringSplit["CATION MEANS FASTER CODING MEANS FEWER CODERS MEANS EASIER COMMUNI",""][[#/x]]~Text~{Sin@#,Cos@#}~Rotate~-#&,Range@66x]

введите описание изображения здесь

Увеличение его до 178 байт позволяет ему вращаться:

x=Pi/33;Graphics@Map[StringSplit["CATION MEANS FASTER CODING MEANS FEWER CODERS MEANS EASIER COMMUNI",""][[#/x-a]]~Text~{Sin@#,Cos@#}~Rotate~-#&,(a+Range@66)x]~Animate~{a,1,66,1}

введите описание изображения здесь

Ян Миллер
источник
7

HTML и JS, 13 + 170 = 284 227 192 186 183 байта

41 байт сохранен благодаря @Shaggy

(x=c.getContext("2d")).translate(r=c.height/2,r)
for(i in t="CATION MEANS FASTER CODING MEANS FEWER CODERS MEANS EASIER COMMUNI"){x.rotate(2/21);x.fillText(t[i],0,-r*.8)}
<canvas id=c height=250 width=250>

Ширина и высота, установленные на 250, чтобы обеспечить лучшую видимость, не были включены в число байтов.

Уриэль
источник
Уменьшите JS до 223 байт с помощью (x=c.getContext("2d"))[t="translate"](r=c.height/2,r,i=66);r*=.8;while(i--){x.rotate(a=i*Math.PI/33);x[t](0,-r);x.fillText("EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS "[i],0,0);x[t](0,r);x.rotate(-a)}.
Лохматый
Или уменьшите последнюю версию вашего JS до 179 байт с помощью(x=c.getContext("2d")).translate(r=c.height/2,r);r*=.8;for(i in t="EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS "){x.rotate(Math.PI/33);x.fillText(t[i],0,-r)}
Shaggy
Если вы счастливы пожертвовать немного точности, вы можете заменить Math.PIс 22/7спасти еще 6 байт.
Лохматый
и Math.PI/332/21, но считается ли это нормальным?
Уриэль
1
Вы можете сохранить несколько байтов, используя es6 for...of: for(c of"CATION...иx.fillText(c,
Brian McCutchon
6

Октава, 168 байт

for i=1:(n=nnz(s='CATION MEANS FASTER CODING MEANS FEWER CODERS MEANS EASIER COMMUNI')),text(sin(i/n*2*pi),cos(i/n*2*pi),s(i),'rotation',-i/n*360);axis([-2,2,-2,2]);end

Попробуй здесь

Стьюи Гриффин
источник
Ницца! Кажется, axis([-2,2,-2,2]);это не нужно. Но вы можете добавить axis equalв конце, чтобы получить истинный круг
Луис Мендо
что вы делаете с циклом for? Можете ли вы добавить объяснение новичку Октавы, как я?
Миштхан
Конечно, я добавлю объяснение, когда у меня будет время. Надеюсь, позже сегодня :-)
Стьюи Гриффин
4

Bash + ImageMagick, 168 байт

convert -font $(convert -list font|grep Font:|head -n1|cut -d" " -f4) label:"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS " -distort Arc 360 i.png

Пример вывода:

Пример вывода

betseg
источник
1
Я думаю, что вы можете использовать фиксированное имя шрифта, чтобы сократить его.
дкудрявцев
4

BBC BASIC, 248

Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/download.html.

F.i=6TO767a=i DIV6*.024-.3r=(80+i MOD6)MOD83*9-369IFASC(M."?[O@Wo}@b}O@O|O@y?l@xHH@GGE@zmo@yo|@}oU@o?m@?L|@phh@GEE@?u?@?{o@Wk?@?I?@g|O@EGE@?]M@z}o@|_|@}?m@?MO@GDG@xhh@?k?@?oU@z}o@?LO@a?L",i DIV6))>>i MOD6A.1CIRCLEFILL500-r*COS(a),500+r*SIN(a),9
N.

Ungolfed

  FORi=6TO767
    a=i DIV 6 * .024 - .3
    r=(80 + i MOD 6) MOD 83 * 9 - 369            :REM iterate through ({80,81,82,0,1,2} - 41 = {39,40,41,-41,-40,-39}) * 9
    IF ASC(MID$("?[O@Wo}@b}O@O|O@y?l@xHH@GGE@zmo@yo|@}oU@o?m@?L|@phh@GEE@?u?@?{o@Wk?@?I?@g|O@EGE@?]M@z}o@|_|@}?m@?MO@GDG@xhh@?k?@?oU@z}o@?LO@a?L",i DIV6))>>i MOD6AND1    THEN
      CIRCLEFILL 500-r*COS(a), 500+r*SIN(a), 9   :REM dots are circle radius 9 according to documentation (but BBC BASIC actually draws them smaller.)
    ENDIF
  NEXT

Делать это на языке, который не поддерживает повернутый текст - для удовольствия. Каждый символ представляет собой матричный массив размером 3х3. Всего 66 символов, но есть 2 диаметрально противоположных пробела, которые мы не печатаем (после CODERS и перед FASTER.) Каждый байт магической строки кодирует одну вертикальную строку из одной буквы и одну вертикальную строку противоположного письмо. Таким образом, нам нужно только развернуться на 180 градусов.

введите описание изображения здесь

Уровень реки St
источник
Умно, но вы должны быть в состоянии сделать 4-пиксельные буквы в байте, нет? Кроме того, ваш текст должен быть повернут на 5 символов против часовой стрелки.
Адам
@ Adám трудно сделать 4 пикселя в высоту, так как код будет содержать много непечатных. Я не думаю, что переводчику это понравится. Я неверно истолковал / неверно запомнил спецификацию вращения. ( MEANSбыл уже внизу, и я повернул его неправильно) +.2необходимо изменить на -.3Редактирование.
Уровень Река St
Так как OP определяет верхний регистр, возможно, сделать A как ⠰⠳ и R как ⠸⠫ ?
Адам
@ Адам, сейчас много дополнительной работы, и я верю, что это снизит читабельность. Обычно в arty и калькуляторных шрифтах некоторые заглавные буквы заменяются эквивалентами, напоминающими строчные. Я посмотрю, как это будет выглядеть позже.
Уровень Река St
3

SVG (HTML5), 212 байт

<svg width=500 height=500><defs><path id=p d=M250,451a201,201,0,0,1,0,-402a201,201,0,0,1,0,402></defs><text font-size="32"><textPath xlink:href=#p>FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS

Статическая версия моего ответа на Упрощенное общение означает, что более быстрое кодирование означает меньшее количество кодировщиков, значит… настроено так, что FEWERнаходится внизу. Настраиваемая версия, если ваш шрифт не совпадает с моим:

<p><input type=number value=0 min=0 max=9 oninput=p.setAttribute('d','M250,250m0,20_a20_,20_,0,1,1,20_,-20_a20_,20_,0,1,1,-20_,-20_a20_,20_,0,1,1,-20_,20_a20_,20_,0,1,1,20_,20_'.replace(/_/g,this.value))></p>
<svg width=500 height=500><defs><path id=p d=M250,250m0,200a200,200,0,1,1,200,-200a200,200,0,1,1,-200,-200a200,200,0,1,1,-200,200a200,200,0,1,1,200,200></defs><text font-size="32"><textPath xlink:href=#p>FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS

Нил
источник
Как отрегулировать расстояние между СРЕДСТВАМИ и МЕНЬШЕ ? В моем браузере они читаются как одно слово.
Адам
@ Adám Я перенес регулируемую версию.
Нейл
Ницца. Это выходит за рамки.
Адам
2

Постскриптум (127 байт)

Шестнадцатеричный дамп:

00000000: 2f53 2031 92a5 9233 2f4d 6f6e 6f20 3992  /S 1...3/Mono 9.
00000010: 8e88 6432 3030 926b 3292 9a28 4943 4154  ..d200.k2..(ICAT
00000020: 494f 4e20 4d45 414e 5320 4641 5354 4552  ION MEANS FASTER
00000030: 2043 4f44 494e 4720 4d45 414e 5320 4645   CODING MEANS FE
00000040: 5745 5220 434f 4445 5253 204d 4541 4e53  WER CODERS MEANS
00000050: 2045 4153 4945 5220 434f 4d4d 554e 297b   EASIER COMMUN){
00000060: 5388 0033 2032 9287 9278 5320 6661 6c73  S..3 2...xS fals
00000070: 6592 112d 352e 3435 9288 7d92 4992 a7    e..-5.45..}.I..

Ungolfed (текстовая) версия:

/S 1 string def
/Mono 9 selectfont
100 200 moveto
2 setlinejoin
(ICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS EASIER COMMUN)
{S 0 3 2 roll put S false charpath -5.45 rotate} forall
stroke

Пример вывода:

введите описание изображения здесь

goose121
источник
2

Java 8, 1087 байт

import javafx.animation.*;import javafx.application.*;import javafx.scene.*;import javafx.scene.layout.*;import javafx.scene.shape.*;import javafx.scene.text.*;import javafx.stage.*;import javafx.util.*;import java.util.*;import static javafx.animation.PathTransition.*;public class P extends Application{@Override public void start(Stage stage)throws Error{char[] t="EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS".toCharArray();Shape q=new Circle(400,400,120);List<Text>h=new ArrayList<>();List<Transition>z=new ArrayList<>();for(char c:t){Text o=new Text(c+"");h.add(o);z.add(x(q, o));}Pane p=new Pane();p.getChildren().addAll(h);int s=h.size();for(int i=0;i<s;i++){Transition w=z.get(i);w.jumpTo(Duration.seconds(10).multiply((i+.5)*1/s));w.play();}stage.setScene(new Scene(p,800,800));stage.show();}Transition x(Shape e,Text t){PathTransition v=new PathTransition(Duration.seconds(10),e,t);v.setCycleCount(INDEFINITE);v.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT);v.setInterpolator(Interpolator.LINEAR);return v;}static void main(String[]a){launch(a);}}

Скриншот

Роберто Грэм
источник
Хорошо, но вы, кажется, упускаете пробел между MEANS и EASIER COM.
Адам
@ Adám: Это не соответствует правилу FEWER в 6 часов!
sergiol
0

LaTeX + TikZ, 380 байт

\documentclass[tikz,border=20pt]{standalone}\usetikzlibrary{decorations,decorations.text,}\begin{document}\begin{tikzpicture}\draw[color=white,rotate=-90,postaction={decorate,decoration={text along path,raise=4pt,text align={align=center},text={FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS },reverse path}}](0,0)circle(2.425cm);\end{tikzpicture}\end{document}

Пример вывода

введите описание изображения здесь

Renzo
источник
0

Tcl / Tk, 222

grid [canvas .c]
set i 90;lmap c [split "FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS" ""] {.c cr t [expr {93*cos([set i [expr $i+5.5]]/57.3)+99}] [expr {93*sin($i/57.3)+99}] -te $c -ang [expr -$i-90]}

введите описание изображения здесь

Будет ли это гольф позже?

sergiol
источник