Komunikasi yang lebih mudah berarti ... ○ edisi sirkuler!

12

Berdasarkan ini , tetapi saya diminta [1] , [2] untuk membuat edisi grafis.

KOMUNIKASI LEBIH MUDAH BERARTI LEBIH CEPAT

Tugas

Hasilkan tampilan teks melingkar EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Huruf besar apa saja berjalan. Bagian atas huruf harus menghadap keluar dari lingkaran. Entah spasi sebelumnya FEWERharus di bawah (jam 6) atau (untuk poin brownies) teks Anda harus diputar.

Adm
sumber
@Uriel Nah, secara nominal, setiap huruf membutuhkan 5,45 °, jadi haruskah kita katakan 5,4 ° hingga 5,5 °?
Adm
Saya percaya itu akan menjadi presisi yang baik, mengingat 2/21kesalahan aproksimasi kecil dari 0,002.
Uriel

Jawaban:

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]

masukkan deskripsi gambar di sini

Meningkatkannya menjadi 178 byte memungkinkannya memutar:

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}

masukkan deskripsi gambar di sini

Ian Miller
sumber
7

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

41 byte disimpan berkat @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>

Lebar dan tinggi yang diatur ke 250 untuk memungkinkan visibilitas yang lebih baik tidak termasuk dalam jumlah byte.

Uriel
sumber
Kurangi JS Anda menjadi 223 byte dengan (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
Atau, kurangi versi terbaru JS Anda menjadi 179 byte dengan(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
Jika Anda senang mengorbankan sedikit presisi, Anda bisa menggantinya Math.PIdengan 22/7untuk menyimpan 6 byte lagi.
Shaggy
dan Math.PI/332/21, tetapi apakah itu dianggap oke?
Uriel
1
Anda dapat menyimpan beberapa byte menggunakan es6 for...of: for(c of"CATION...danx.fillText(c,
Brian McCutchon
6

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

Coba di sini

Stewie Griffin
sumber
Bagus! Sepertinya axis([-2,2,-2,2]);tidak diperlukan. Tetapi Anda mungkin ingin menambahkan axis equaldi akhir untuk mendapatkan lingkaran yang benar
Luis Mendo
apa yang kamu lakukan dengan for loop? Bisakah Anda menambahkan penjelasan untuk seorang pemula Oktaf seperti saya?
Michthan
Tentu saja, saya akan menambahkan penjelasan ketika saya punya waktu. Semoga nanti hari ini :-)
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

Contoh output:

Contoh output

betseg
sumber
1
Saya pikir Anda dapat menggunakan nama font tetap untuk mempersingkatnya.
dkudriavtsev
4

BBC BASIC, 248

Unduh juru bahasa di 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.

Tidak disatukan

  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

Melakukan ini dalam bahasa yang tidak mendukung teks yang diputar - untuk bersenang-senang. Setiap karakter adalah array matriks 3x3 dot. Ada total 66 karakter tetapi ada 2 ruang yang berlawanan secara diametral yang tidak kami cetak (setelah CODERS dan sebelum LEBIH CEPAT.) Setiap byte dari string sihir mengkodekan untuk satu baris vertikal satu huruf dan satu baris vertikal sebaliknya. surat. Dengan cara ini kita hanya perlu menyapu 180 derajat.

masukkan deskripsi gambar di sini

Level River St
sumber
Pintar, tetapi Anda seharusnya bisa melakukan 4 piksel huruf tinggi dalam satu byte, bukan? Juga, teks Anda harus diputar 5 karakter berlawanan arah jarum jam.
Adm
@ Adám sulit dilakukan setinggi 4 piksel karena kode akan berisi banyak hal yang tidak patut. Saya pikir penerjemah tidak akan menyukainya. Saya salah menafsirkan / salah mengingat spek untuk rotasi. ( MEANSsudah ada di bagian bawah dan saya memutarnya dengan cara yang salah) +.2perlu diubah ke -.3Editing.
Level River St
Karena OP menentukan huruf besar, mungkin melakukan A sebagai ⠰⠳ dan R sebagai ⠸⠫ ?
Adám
@Adam itu banyak pekerjaan tambahan sekarang, dan saya percaya itu akan mengurangi keterbacaan. Ini umum dalam font arty dan kalkulator untuk huruf besar tertentu untuk diganti dengan yang mirip huruf kecil. Saya akan melihat tampilannya nanti.
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

Versi statis dari jawaban saya untuk komunikasi yang Lebih Mudah berarti pengkodean yang lebih cepat berarti lebih sedikit coders yang berarti ... di- tweak sehingga FEWERada di bagian bawah. Versi yang dapat disesuaikan jika font Anda tidak cocok dengan font saya:

<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
sumber
Bagaimana Anda mengatur jarak antara MEANS dan FEWER ? Di browser saya, mereka membaca seperti satu kata.
Adám
@ Adám Saya sudah mem-porting versi yang bisa disesuaikan.
Neil
Bagus. Itu terjadi terus menerus.
Adám
2

Postscript (127 byte)

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

Versi (teks) tidak disatukan:

/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

Output sampel:

masukkan deskripsi gambar di sini

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

Tangkapan layar

Roberto Graham
sumber
Bagus, tetapi Anda sepertinya kehilangan ruang antara MEANS dan COM LEBIH MUDAH.
Adám
@ Adám: Tidak sesuai dengan FEWER pada jam 6 aturan!
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}

Contoh output

masukkan deskripsi gambar di sini

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

masukkan deskripsi gambar di sini

Akankah golf lebih nanti!

sergiol
sumber