Comunicação mais fácil significa ... ○ edição circular!


12

Baseado nisso , mas me pediram [1] , [2] para fazer uma edição gráfica.

COMUNICAÇÃO MAIS FÁCIL SIGNIFICA CÓDIGO MAIS RÁPIDO, MENOS CÓDIGOS, CÓDIGOS…

Tarefa

Gere uma exibição circular do texto EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Qualquer fonte maiúscula vai. Os topos das letras devem ficar fora do círculo. O espaço anterior FEWERdeve estar na parte inferior (6 horas) ou (para pontos de brownie), seu texto deve girar.


@ Uriel Bem, nominalmente, cada letra leva 5,45 °, então digamos 5,4 ° a 5,5 °?
Adám 8/17/17

Acredito que seria uma boa precisão, considerando que o 2/21erro de aproximação é menor que 0,002.
Uriel

Respostas:


7

Mathematica, 153 bytes

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

insira a descrição da imagem aqui

Aumentar para 178 bytes permite girar:

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}

insira a descrição da imagem aqui


7

HTML e JS, 13 + 170 = 284 227 192 186 183 bytes

41 bytes salvos graças a @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>

A largura e a altura definidas para 250 para permitir melhor visibilidade não foram incluídas na contagem de bytes.


Reduza seu JS para 223 bytes com (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)}.
Shaggy

Ou, reduzir a versão mais recente de seus JS para 179 bytes com(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

Se você estiver satisfeito em sacrificar um pouco de precisão, poderá substituir Math.PIpor 22/7para salvar outros 6 bytes.
Shaggy

e Math.PI/332/21, mas isso é considerado ok?
Uriel

1
Você pode salvar alguns bytes utilizando ES6 for...of: for(c of"CATION...ex.fillText(c,
Brian McCutchon

6

Oitava, 168 bytes

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

Experimente aqui


Agradável! Parece que axis([-2,2,-2,2]);não é necessário. Mas você pode querer adicionar axis equalno final para obter um verdadeiro círculo
Luis Mendo

o que você faz com o loop for? Você pode adicionar uma explicação para um novato do Octave como eu?
Michthan

Obviamente, adicionarei uma explicação quando tiver tempo. Esperemos que mais tarde hoje :-)
Stewie Griffin

4

Bash + ImageMagick, 168 bytes

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

Exemplo de saída:

Saída de exemplo


1
Eu acho que você pode usar um nome de fonte fixo para abreviá-lo.
dkudriavtsev

4

BBC BASIC, 248

Faça o download do intérprete em 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

Faça isso em um idioma que não suporta texto girado - por diversão. Cada caractere é uma matriz de matriz de pontos 3x3. Há um total de 66 caracteres, mas existem 2 espaços diametralmente opostos que não imprimimos (depois de CODERS e antes MAIS RÁPIDOS.) Cada byte da string mágica codifica uma única linha vertical de uma letra e uma única linha vertical do lado oposto. carta. Dessa forma, só precisamos varrer 180 graus.

insira a descrição da imagem aqui


Inteligente, mas você deve ser capaz de escrever letras de 4 pixels de altura em um byte, não? Além disso, seu texto deve ser girado 5 caracteres no sentido anti-horário.
Adám

@ Adám difícil de fazer 4 pixels de altura, pois o código conterá muitos imprimíveis. Eu não acho que o intérprete vai gostar. Interpretei / lembrei errado a especificação para rotação. ( MEANSjá estava na parte inferior e eu girei na direção errada) +.2precisa ser alterado para -.3Edição.
Level River St

Como o OP especifica maiúsculas, talvez faça A como ⠰⠳ e R como ⠸⠫ ?
Adám

@ Adam, agora há muito trabalho extra e acredito que reduzirá a legibilidade. É comum em fontes artísticas e de calculadora que certas letras maiúsculas sejam substituídas por equivalentes semelhantes a minúsculas. Vou ver como fica mais tarde.
Level River St

3

SVG (HTML5), 212 bytes

<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

A versão estática da minha resposta para uma comunicação mais fácil significa codificação mais rápida, menos codificadores significa ... aprimorado para que FEWERfique na parte inferior. Versão ajustável caso sua fonte não corresponda à minha:

<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


Como você ajusta o espaçamento entre MEIOS e MENOS ? No meu navegador, eles lêem como uma palavra.
Adám

@ Adám Eu já portou a versão ajustável.
Neil

Agradável. Isso vai além e além.
Adám

2

Postscript (127 bytes)

Despejo hexagonal:

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

Versão ungolfed (texto):

/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

Saída de amostra:

insira a descrição da imagem aqui


2

Java 8, 1.087 bytes

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);}}

Captura de tela


Bom, mas parece que falta um espaço entre o MEANS e o EASIER COM.
Adám

@ Adám: Ele não está de acordo com a regra das POUCAS às 6 horas!
sergiol

0

LaTeX + TikZ, 380 bytes

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

Saída de exemplo

insira a descrição da imagem aqui


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

insira a descrição da imagem aqui

Golf mais tarde!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.