Łatwiejsza komunikacja oznacza… ○ wydanie cykliczne!

12

Na tej podstawie poproszono mnie [1] , [2] o wykonanie edycji graficznej.

ŁATWSZA KOMUNIKACJA OZNACZA SZYBSZE KODOWANIE OZNACZA MNIEJ KODÓW OZNACZA…

Zadanie

Wygeneruj okrągły tekst EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Idzie dowolna wielka czcionka. Wierzchołki liter muszą znajdować się poza okręgiem. Albo poprzednia spacja FEWERmusi znajdować się na dole (godzina szósta), albo (dla punktów brownie) tekst musi się obracać.

Adám
źródło
@Uriel Cóż, nominalnie, każda litera zajmuje 5,45 °, więc czy powiemy 5,4 ° do 5,5 °?
Adám
Uważam, że byłaby to dobra precyzja, biorąc pod uwagę 2/21błąd aproksymacji mniejszy niż 0,002.
Uriel

Odpowiedzi:

7

Mathematica, 153 bajtów

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

wprowadź opis zdjęcia tutaj

Zwiększenie go do 178 bajtów pozwala na obrót:

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}

wprowadź opis zdjęcia tutaj

Ian Miller
źródło
7

HTML i JS, 13 + 170 = 284 227 192 186 183 bajtów

41 bajtów zapisanych dzięki @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>

Szerokość i wysokość ustawione na 250 w celu zapewnienia lepszej widoczności nie zostały uwzględnione w liczbie bajtów.

Uriel
źródło
Zmniejsz swój JS do 223 bajtów za pomocą (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)}.
Kudłaty
Lub zmniejsz najnowszą wersję swojego JS do 179 bajtów za pomocą(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
Jeśli jesteś szczęśliwy, aby poświęcić trochę precyzji, można wymienić Math.PIz 22/7zaoszczędzić kolejne 6 bajtów.
Kudłaty
i Math.PI/332/21, ale czy to jest uważane za w porządku?
Uriel
1
Możesz zapisać niektóre bajty za pomocą es6 for...of: for(c of"CATION...ix.fillText(c,
Brian McCutchon
6

Oktawa, 168 bajtów

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

Wypróbuj tutaj

Stewie Griffin
źródło
Ładny! Wydaje się, że axis([-2,2,-2,2]);nie jest potrzebne. Ale możesz dodać axis equalna końcu, aby uzyskać prawdziwe koło
Luis Mendo
co robisz z pętlą for? Czy możesz dodać wyjaśnienie dla nowicjusza Octave takiego jak ja?
Michthan
Oczywiście dodam wyjaśnienie, kiedy będę miał czas. Mam nadzieję, że dzisiaj :-)
Stewie Griffin
4

Bash + ImageMagick, 168 bajtów

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

Przykładowe dane wyjściowe:

Przykładowe dane wyjściowe

betseg
źródło
1
Myślę, że możesz użyć stałej nazwy czcionki, aby ją skrócić.
dkudriavtsev
4

BBC BASIC, 248

Pobierz tłumacza na 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.

Nie golfił

  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

Rób to w języku, który nie obsługuje obróconego tekstu - dla zabawy. Każdy znak jest macierzą macierzy 3 x 3 kropki. Jest w sumie 66 znaków, ale są 2 diametralnie przeciwne spacje, których nie drukujemy (po KODERACH i przed SZYBCIEJ). Każdy bajt magicznego ciągu koduje pojedynczy pionowy rząd jednej litery i pojedynczy pionowy rząd przeciwnej list. W ten sposób musimy zamiatać tylko o 180 stopni.

wprowadź opis zdjęcia tutaj

Level River St
źródło
Sprytne, ale powinieneś być w stanie zrobić 4 bajty wysokich liter w bajcie, nie? Ponadto tekst powinien zostać obrócony o 5 znaków w lewo.
Adám
@ Adám trudno zrobić 4 piksele, ponieważ kod będzie zawierał wiele niedrukowalnych elementów. Nie sądzę, żeby tłumaczowi się to spodobało. Źle zinterpretowałem / źle zapamiętałem specyfikację rotacji. ( MEANSbył już na dole i obróciłem go w niewłaściwy sposób) +.2należy zmienić na -.3Edycja.
Level River St
Ponieważ OP określa wielkie litery, może zrobić A jako ⠰⠳ i R jako ⠸⠫ ?
Adám
@Adam to teraz dużo dodatkowej pracy i uważam, że zmniejszy to czytelność. W przypadku czcionek artystycznych i kalkulatorów powszechne jest zastępowanie niektórych wielkich liter odpowiednikami przypominającymi małe. Zobaczę później, jak to wygląda.
Level River St
3

SVG (HTML5), 212 bajtów

<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

Statyczna wersja mojej odpowiedzi na Łatwiejszą komunikację oznacza szybsze kodowanie oznacza, że ​​mniej koderów oznacza… poprawione tak, że FEWERjest na dole. Wersja do dostosowania, jeśli twoja czcionka nie pasuje do mojej:

<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
źródło
W jaki sposób dostosować odstępy między POMOCĄ i mniejszej liczby ? W mojej przeglądarce czytają jak jedno słowo.
Adám
@ Adám Przeniesiłem regulowaną wersję w poprzek.
Neil,
Ładny. To wykracza poza to.
Adám
2

Postscript (127 bajtów)

Zrzut szesnastkowy:

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

Wersja nie golfowa (tekstowa):

/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

Przykładowe dane wyjściowe:

wprowadź opis zdjęcia tutaj

gęś121
źródło
2

Java 8, 1087 bajtów

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

Zrzut ekranu

Roberto Graham
źródło
Fajnie, ale wydaje się, że brakuje Ci spacji między MEANS a ŁATWIEJSZĄ KOM.
Adám
@ Adám: Nie jest zgodny z MNIEJSZĄ regułą o godzinie 6!
sergiol,
0

LaTeX + TikZ, 380 bajtów

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

Przykładowe dane wyjściowe

wprowadź opis zdjęcia tutaj

Renzo
źródło
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]}

wprowadź opis zdjęcia tutaj

Będzie grał w golfa później!

sergiol
źródło