Einfachere Kommunikation bedeutet… ○ runde Ausgabe!


12

Aufgrund dessen wurde ich aber gebeten, [1] , [2] eine grafische Ausgabe zu machen.

EINFACHERE KOMMUNIKATION BEDEUTET SCHNELLERE CODIERUNG BEDEUTET WENIGER CODIERUNG BEDEUTET…

Aufgabe

Erzeugen Sie eine kreisförmige Darstellung des Textes EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Alle Großbuchstaben werden verwendet. Die Buchstabenoberseiten müssen außerhalb des Kreises liegen. Entweder muss das Leerzeichen FEWERunten sein (6 Uhr) oder (für Brownie-Punkte) Ihr Text muss sich drehen.


@Uriel Nun, nominell dauert jeder Buchstabe 5,45 °, sollen wir also 5,4 ° bis 5,5 ° sagen?
Adám

Ich glaube, das wäre eine gute Genauigkeit, wenn man bedenkt, dass der 2/21Approximationsfehler kleiner als 0,002 ist.
Uriel

Antworten:


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]

Bildbeschreibung hier eingeben

Wenn Sie es auf 178 Byte erhöhen, wird es gedreht:

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}

Bildbeschreibung hier eingeben


7

HTML und JS, 13 + 170 = 284 227 192 186 183 Bytes

41 Bytes gespart dank @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>

Die Breite und Höhe, die auf 250 festgelegt wurden, um eine bessere Sichtbarkeit zu ermöglichen, waren nicht in der Byteanzahl enthalten.


Reduzieren Sie Ihre JS auf 223 Bytes mit (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

Oder reduzieren Sie die neueste Version Ihres JS mit(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

Wenn Sie gerne ein wenig Präzision opfern, könnten Sie ersetzen Math.PImit 22/7anderen 6 Bytes zu speichern.
Shaggy

und Math.PI/332/21, aber ist das ok?
Uriel

1
Sie können einige Bytes mit es6 for...of: for(c of"CATION...undx.fillText(c,
Brian McCutchon

6

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

Probieren Sie es hier aus


Nett! Es scheint axis([-2,2,-2,2]);nicht nötig zu sein. Aber Sie können axis equalam Ende hinzufügen , um einen wahren Kreis zu bekommen
Luis Mendo

Was machst du mit der for-Schleife? Können Sie eine Erklärung für einen Oktavenanfänger wie mich hinzufügen?
Michthan

Natürlich werde ich eine Erklärung hinzufügen, wenn ich Zeit habe. Hoffentlich später heute :-)
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

Beispielausgabe:

Beispielausgabe


1
Ich denke, Sie können einen festen Schriftartnamen verwenden, um ihn zu verkürzen.
dkudriavtsev

4

BBC BASIC, 248

Laden Sie den Interpreter unter http://www.bbcbasic.co.uk/bbcwin/download.html herunter

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

Tun Sie dies in einer Sprache, die gedrehten Text nicht unterstützt - zum Spaß. Jedes Zeichen ist ein 3x3-Punktmatrixfeld. Es gibt insgesamt 66 Zeichen, aber es gibt 2 diametral gegenüberliegende Leerzeichen, die wir nicht drucken (nach CODERS und vor FASTER). Jedes Byte der magischen Zeichenkette codiert für eine einzelne vertikale Reihe eines Buchstabens und eine einzelne vertikale Reihe der gegenüberliegenden Brief. Auf diese Weise müssen wir nur um 180 Grad kehren.

Bildbeschreibung hier eingeben


Clever, aber Sie sollten in der Lage sein, 4 Pixel hohe Buchstaben in einem Byte zu schreiben, oder? Außerdem sollte Ihr Text 5 Zeichen gegen den Uhrzeigersinn gedreht werden.
Adám

@Adám schwer zu tun 4 Pixel hoch, da Code viele nicht druckbare enthalten wird. Ich glaube nicht, dass es dem Dolmetscher gefallen wird. Ich habe die Spezifikation für die Rotation falsch interpretiert / gespeichert. ( MEANSwar schon ganz unten und ich habe es falsch gedreht) +.2muss auf -.3Bearbeiten umgestellt werden .
Level River St

Da das OP Großbuchstaben angibt, tun Sie A vielleicht als ⠰⠳ und R als ⠸⠫ ?
Adám

@Adam, das ist jetzt eine Menge zusätzlicher Arbeit, und ich glaube, es wird die Lesbarkeit verringern. In Arty- und Taschenrechner-Schriftarten werden bestimmte Großbuchstaben häufig durch Entsprechungen ersetzt, die Kleinbuchstaben entsprechen. Ich werde später sehen, wie es aussieht.
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

Statische Version meiner Antwort auf einfachere Kommunikationsmittel schneller Mittel Mittel weniger Programmierer ... Codierung , so dass gezwickt FEWERist an der Unterseite. Anpassbare Version für den Fall, dass Ihre Schriftart nicht zu meiner passt:

<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


Wie passt man den Abstand zwischen MEANS und FEWER an ? In meinem Browser lesen sie sich wie ein Wort.
Adám

@Adám Ich habe die einstellbare Version über portiert.
Neil

Nett. Das geht weit darüber hinaus.
Adám,

2

Postscript (127 Bytes)

Hex-Dump:

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

Ungolfed (Text) Version:

/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

Beispielausgabe:

Bildbeschreibung hier eingeben


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

Bildschirmfoto


Schön, aber Ihnen scheint ein Leerzeichen zwischen MEANS und EASIER COM zu fehlen.
Adám

@Adam: Es entspricht nicht der FEWER um 6 Uhr Regel!
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}

Beispielausgabe

Bildbeschreibung hier eingeben


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

Bildbeschreibung hier eingeben

Wird es später mehr Golf!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.