Більш просте спілкування означає… ○ циркулярне видання!


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

Математика, 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,
Брайан МакКутчон

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? Чи можете ви додати пояснення для послушника Octave, як я?
Міхтан

Звичайно, я додам пояснення, коли матиму час. Сподіваємось, пізніше сьогодні :-)
Стюі Гріффін

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

Приклад виводу:

Приклад виведення


1
Я думаю, ви можете використовувати фіксовану назву шрифту, щоб скоротити її.
dkudriavtsev

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.

Безумовно

  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

Робити це мовою, яка не підтримує повернутий текст - для задоволення. Кожен символ - це матричний масив розміром 3x3. Всього 66 символів, але є 2 діаметрально протилежні проміжки, які ми не друкуємо (після КОДЕРЖІВ і перед Швидше.) Кожен байт чарівної рядки кодує один вертикальний рядок однієї літери та один вертикальний ряд протилежного лист. Таким чином нам залишається лише прокотитися через 180 градусів.

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


Розумний, але ти повинен вміти робити 4 барили високої літери в байті, ні? Також текст слід повертати на 5 символів проти годинникової стрілки.
Адам

@ Adám важко зробити 4 пікселі високою, оскільки код буде містити багато недрукованих матеріалів. Я не думаю, що перекладачеві це не сподобається. Я неправильно інтерпретував / неправильно записав специфікацію для обертання. ( MEANSбув уже внизу, і я повернув його неправильно), +.2потрібно змінити на " -.3Редагування".
Рівень Св. Св

Оскільки OP визначає великі регістри , можливо, A як ⠰⠳, а R як ⠸⠫ ?
Адам

@ Адам, це вже багато додаткової роботи, і я вважаю, що це зменшить читабельність. У шрифтах Arty та калькуляторах звичайні шрифти певних великих літер замінюються на еквіваленти, що нагадують малі літери. Я побачу, як це виглядає пізніше.
Річка Рівня Св

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..

Негольована (текстова) версія:

/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

Вибірка зразка:

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


2

Java 8, 1 087 байт

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: Це не відповідає ПРАВИЛЬНОМУ в 6 годин!
сергіол

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}

Приклад виведення

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


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]}

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

Буде гольф пізніше!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.