Una comunicazione più semplice significa ... ○ edizione circolare!


12

Sulla base di questo , ma mi è stato chiesto [1] , [2] di fare un'edizione grafica.

COMUNICAZIONE PIÙ SEMPLICE SIGNIFICA CODIFICA PIÙ VELOCE SIGNIFICA PIÙ CODICI SIGNIFICA ...

Compito

Genera una visualizzazione circolare del testo EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Qualsiasi carattere maiuscolo va. Le lettere in cima devono essere rivolte fuori dal cerchio. Lo spazio precedente FEWERdeve essere in fondo (6) o (per i punti del brownie) il testo deve ruotare.


@Uriel Beh, nominalmente ogni lettera impiega 5,45 °, quindi dovremmo dire da 5,4 ° a 5,5 °?
Adám,

Credo che sarebbe una buona precisione, considerando che l' 2/21errore di approssimazione è inferiore a 0,002.
Uriel,

Risposte:


7

Mathematica, 153 byte

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

inserisci qui la descrizione dell'immagine

Aumentandolo a 178 byte consente di ruotare:

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}

inserisci qui la descrizione dell'immagine


7

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

41 byte salvati grazie 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>

La larghezza e l'altezza impostate su 250 per consentire una migliore visibilità non sono state incluse nel conteggio dei byte.


Riduci il tuo JS a 223 byte 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,

Oppure, riduci l'ultima versione del tuo JS a 179 byte 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

Se sei felice di sacrificare un po 'di precisione, potresti sostituirlo Math.PIcon 22/7per salvare altri 6 byte.
Shaggy,

e Math.PI/332/21, ma è considerato ok?
Uriel,

1
Puoi salvare alcuni byte usando es6 for...of: for(c of"CATION...ex.fillText(c,
Brian McCutchon

6

Ottava, 168 byte

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

Provalo qui


Bello! Sembra che axis([-2,2,-2,2]);non sia necessario. Ma potresti voler aggiungere axis equalalla fine per ottenere un vero cerchio
Luis Mendo

cosa fai con il ciclo for? Puoi aggiungere una spiegazione per un novizio di Octave come me?
Michthan,

Naturalmente, aggiungerò una spiegazione quando avrò il tempo. Speriamo più tardi oggi :-)
Stewie Griffin,

4

Bash + ImageMagick, 168 byte

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

Esempio di output:

Esempio di output


1
Penso che puoi usare un nome di carattere fisso per accorciarlo.
dkudriavtsev,

4

BBC BASIC, 248

Scarica l'interprete su 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

Farlo in una lingua che non supporta il testo ruotato - per divertimento. Ogni personaggio è un array di matrici di punti 3x3. Ci sono un totale di 66 caratteri ma ci sono 2 spazi diametralmente opposti che non stampiamo (dopo CODERS e prima di FASTER.) Ogni byte della stringa magica codifica per una singola riga verticale di una lettera e una singola riga verticale dell'opposto lettera. In questo modo dobbiamo solo spazzare di 180 gradi.

inserisci qui la descrizione dell'immagine


Intelligente, ma dovresti essere in grado di scrivere lettere alte 4 pixel in un byte, no? Inoltre, il testo deve essere ruotato di 5 caratteri in senso antiorario.
Adám,

@ Adám difficile fare 4 pixel di altezza poiché il codice conterrà molti non stampabili. Non penso che piacerà all'interprete. Ho interpretato / ricordato male le specifiche per la rotazione. ( MEANSera già in fondo e l'ho ruotato nel modo sbagliato) +.2deve essere modificato in -.3Modifica.
Level River St,

Poiché l'OP specifica le lettere maiuscole, forse fare A come ⠰⠳ e R come ⠸⠫ ?
Adám,

@Adam ora è un sacco di lavoro extra e credo che ridurrà la leggibilità. È comune nei caratteri arty e calcolatori che alcune lettere maiuscole vengano sostituite con equivalenti simili a minuscole. Vedrò come sarà dopo.
Level River St,

3

SVG (HTML5), 212 byte

<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 versione statica della mia risposta alla comunicazione più semplice significa codifica più veloce significa meno programmatori significa ... ottimizzato in modo che FEWERsia in fondo. Versione regolabile nel caso in cui il tuo carattere non corrisponda al mio:

<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


Come si regola la spaziatura tra MEANS e FEWER ? Nel mio browser, leggono come una sola parola.
Adám,

@ Adám Ho portato la versione regolabile attraverso.
Neil,

Bello. Questo va oltre.
Adám,

2

Postscript (127 byte)

Discarica esadecimale:

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

Versione non testata (testo):

/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

Uscita campione:

inserisci qui la descrizione dell'immagine


2

Java 8, 1.087 byte

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

Immagine dello schermo


Bello, ma sembra che manchi uno spazio tra MEANS e COM più FACILE.
Adám,

@Adám: non è conforme alla FEWER alle 6 in regola!
sergiol,

0

LaTeX + TikZ, 380 byte

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

Esempio di output

inserisci qui la descrizione dell'immagine


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

inserisci qui la descrizione dell'immagine

Sarà più golf dopo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.