Une communication plus facile signifie… ○ édition circulaire!


12

Sur cette base , mais on m'a demandé [1] , [2] de faire une édition graphique.

MOYEN DE COMMUNICATION PLUS FACILE MOYEN DE CODAGE PLUS RAPIDE MOYEN MOYEN DE CODAGE…

Tâche

Générez un affichage circulaire du texte EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . N'importe quelle police en majuscule disparaît. Les sommets des lettres doivent être tournés vers l'extérieur du cercle. Soit l'espace avant FEWERdoit être en bas (6 heures) ou (pour les points brownie) votre texte doit tourner.


@Uriel Eh bien, nominalement, chaque lettre prend 5,45 °, alors dirons-nous 5,4 ° à 5,5 °?
2017

Je pense que ce serait une bonne précision, étant donné que l' 2/21erreur d'approximation est inférieure à 0,002.
Uriel

Réponses:


7

Mathematica, 153 octets

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

entrez la description de l'image ici

L'augmenter à 178 octets lui permet de tourner:

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}

entrez la description de l'image ici


7

HTML et JS, 13 + 170 = 284 227 192 186 183 octets

41 octets économisés grâce à @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 largeur et la hauteur définies sur 250 pour permettre une meilleure visibilité n'étaient pas incluses dans le nombre d'octets.


Réduisez votre JS à 223 octets avec (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, réduisez la dernière version de votre JS à 179 octets avec(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 vous êtes prêt à sacrifier un peu de précision, vous pouvez remplacer Math.PIpar 22/7pour économiser encore 6 octets.
Shaggy

et Math.PI/332/21, mais est-ce considéré comme correct?
Uriel

1
Vous pouvez enregistrer quelques octets en utilisant es6 for...of: for(c of"CATION...etx.fillText(c,
Brian McCutchon

6

Octave, 168 octets

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

Essayez-le ici


Agréable! Cela ne semble axis([-2,2,-2,2]);pas nécessaire. Mais vous voudrez peut-être ajouter axis equalà la fin pour obtenir un vrai cercle
Luis Mendo

que faites-vous avec la boucle for? Pouvez-vous ajouter une explication pour un novice Octave comme moi?
Michthan

Bien sûr, j'ajouterai une explication quand j'aurai le temps. Si tout va bien plus tard aujourd'hui :-)
Stewie Griffin

4

Bash + ImageMagick, 168 octets

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

Exemple de sortie:

Exemple de sortie


1
Je pense que vous pouvez utiliser un nom de police fixe pour le raccourcir.
dkudriavtsev

4

BBC BASIC, 248

Téléchargez l'interprète sur 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.

Non 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

Faire cela dans une langue qui ne prend pas en charge le texte pivoté - pour le plaisir. Chaque caractère est un tableau matriciel à 3x3 points. Il y a un total de 66 caractères mais il y a 2 espaces diamétralement opposés que nous n'imprimons pas (après CODERS et avant FASTER.) Chaque octet de la chaîne magique code pour une seule ligne verticale d'une lettre et une seule ligne verticale de l'opposé lettre. De cette façon, nous n'avons qu'à balayer à 180 degrés.

entrez la description de l'image ici


Intelligent, mais vous devriez pouvoir faire des lettres de 4 pixels de haut dans un octet, non? De plus, votre texte doit être tourné de 5 caractères dans le sens antihoraire.
Adám

@ Adám difficile de faire 4 pixels de haut car le code contiendra de nombreux non imprimables. Je ne pense pas que l'interprète l'appréciera. J'ai mal interprété / mal mémorisé la spécification pour la rotation. ( MEANSétait déjà en bas et je l'ai tourné dans le mauvais sens) +.2doit être changé en -.3Édition.
Level River St,

Puisque l'OP spécifie des majuscules, peut-être faire A comme ⠰⠳ et R comme ⠸⠫ ?
Adám

@Adam, c'est beaucoup de travail supplémentaire maintenant, et je pense que cela réduira la lisibilité. Il est courant dans les polices arty et calculatrice que certaines lettres majuscules soient remplacées par des équivalents ressemblant à des minuscules. Je verrai à quoi ça ressemble plus tard.
Level River St,

3

SVG (HTML5), 212 octets

<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 version statique de ma réponse à une communication plus facile signifie un codage plus rapide signifie moins de codeurs signifie… peaufiné de sorte que FEWERc'est au fond. Version réglable au cas où votre police ne correspondrait pas à la mienne:

<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


Comment ajustez-vous l'espacement entre MOYENS et MOINS ? Dans mon navigateur, ils se lisent comme un seul mot.
Adám

@ Adám, j'ai porté la version ajustable.
Neil

Agréable. Cela va au-delà.
2017 à 8h14

2

Postscript (127 octets)

Vidage hexadécimal:

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

Version (texte) non golfée:

/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

Exemple de sortie:

entrez la description de l'image ici


2

Java 8, 1 087 octets

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

Capture d'écran


Bien, mais vous semblez manquer un espace entre MEANS et EASIER COM.
Adám

@ Adám: Il n'est pas conforme à la règle FEWER à 6 heures!
sergiol

0

LaTeX + TikZ, 380 octets

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

Exemple de sortie

entrez la description de l'image ici


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

entrez la description de l'image ici

Va jouer au golf plus tard!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.