Una comunicación más fácil significa ... ○ ¡edición circular!

12

Basado en esto , pero me pidieron [1] , [2] que hiciera una edición gráfica.

COMUNICACIÓN MÁS FÁCIL SIGNIFICA CÓDIGO MÁS RÁPIDO SIGNIFICA CÓDIGOS MENOS SIGNIFICA

Tarea

Genere una visualización circular del texto EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Cualquier fuente en mayúscula va. La parte superior de las letras debe quedar fuera del círculo. O bien el espacio anterior FEWERdebe estar en la parte inferior (6 en punto) o (para puntos brownie) su texto debe girar.

Adán
fuente
@Uriel Bueno, nominalmente, cada letra toma 5.45 °, ¿entonces diremos 5.4 ° a 5.5 °?
Adám
Creo que sería una buena precisión, teniendo en cuenta que el 2/21error de aproximación es menor que 0.002.
Uriel

Respuestas:

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]

ingrese la descripción de la imagen aquí

Aumentarlo a 178 bytes le permite rotar:

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}

ingrese la descripción de la imagen aquí

Ian Miller
fuente
7

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

41 bytes guardados gracias 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>

El ancho y la altura establecidos en 250 para permitir una mejor visibilidad no se incluyeron en el recuento de bytes.

Uriel
fuente
Reduzca su JS a 223 bytes con (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
O reduzca la última versión de su JS a 179 bytes con(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
Si estás dispuesto a sacrificar un poco de precisión, podría reemplazar Math.PIa 22/7salvar otras 6 bytes.
Shaggy
y Math.PI/332/21, pero ¿se considera que está bien?
Uriel
1
Puede guardar algunos bytes usando es6 for...of: for(c of"CATION...yx.fillText(c,
Brian McCutchon
6

Octava, 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

Pruébalo aquí

Stewie Griffin
fuente
¡Agradable! Parece axis([-2,2,-2,2]);que no es necesario. Pero es posible que desee agregar axis equalal final para obtener un verdadero círculo
Luis Mendo
¿Qué haces con el bucle for? ¿Puedes agregar una explicación para un novato de Octave como yo?
Michthan
Por supuesto, agregaré una explicación cuando tenga tiempo. Ojalá más tarde hoy :-)
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

Salida de ejemplo:

Salida de ejemplo

Betseg
fuente
1
Creo que puedes usar un nombre de fuente fijo para acortarlo.
dkudriavtsev
4

BBC BASIC, 248

Descargue el intérprete en 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.

Sin golf

  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

Hacer esto en un idioma que no admite texto rotado, por diversión. Cada personaje es una matriz de matriz de puntos 3x3. Hay un total de 66 caracteres, pero hay 2 espacios diametralmente opuestos que no imprimimos (después de CODERS y antes de FASTER). Cada byte de la cadena mágica codifica para una sola fila vertical de una letra y una sola fila vertical del opuesto letra. De esta manera solo tenemos que barrer 180 grados.

ingrese la descripción de la imagen aquí

Level River St
fuente
Inteligente, pero deberías poder hacer letras de 4 píxeles de alto en un byte, ¿no? Además, su texto debe rotarse 5 caracteres en sentido antihorario.
Adám
@ Adám es difícil de hacer 4 píxeles de altura ya que el código contendrá muchos elementos no imprimibles. No creo que al intérprete le guste. Interpreté mal o recordé mal las especificaciones para la rotación. ( MEANSya estaba en la parte inferior y lo giré de la manera incorrecta) +.2debe cambiarse a -.3Edición.
Level River St
Como el OP especifica mayúsculas, ¿quizás A como ⠰⠳ y R como ⠸⠫ ?
Adám
@ Adam, eso es mucho trabajo extra ahora, y creo que reducirá la legibilidad. Es común en las fuentes artísticas y de calculadora que ciertas letras mayúsculas sean reemplazadas por equivalentes que se asemejan a minúsculas. Veré cómo se ve más 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

La versión estática de mi respuesta a una comunicación más fácil significa una codificación más rápida significa menos codificadores significa ... ajustado para que FEWEResté en la parte inferior. Versión ajustable en caso de que su fuente no coincida con la mía:

<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

Neil
fuente
¿Cómo se ajusta el espacio entre MEDIOS y MENOS ? En mi navegador, leen como una palabra.
Adám
@ Adám He portado la versión ajustable.
Neil
Agradable. Eso va más allá.
Adám
2

Posdata (127 bytes)

Volcado hexadecimal:

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

Versión sin texto (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

Salida de muestra:

ingrese la descripción de la imagen aquí

ganso121
fuente
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 pantalla

Roberto Graham
fuente
Bien, pero parece que te falta un espacio entre MEANS y EASIER COM.
Adám
@ Adám: ¡No se ajusta a la regla FEWER a las 6 en punto!
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}

Salida de ejemplo

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

¡Lo jugará más golf más tarde!

sergiol
fuente