Giao tiếp dễ dàng hơn có nghĩa là phiên bản tròn…!


12

Dựa trên điều này , nhưng tôi đã được yêu cầu [1] , [2] để thực hiện một phiên bản đồ họa.

DỄ DÀNG GIAO TIẾP TRUYỀN THÔNG DỄ DÀNG CỘNG ĐỒNG

Bài tập

Tạo một màn hình tròn của văn bản EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Bất kỳ phông chữ viết hoa đi. Các ngọn thư phải đối mặt với vòng tròn. Không gian trước FEWERphải ở dưới cùng (6 giờ) hoặc (đối với các điểm brownie) văn bản của bạn phải xoay.


@Uriel Vâng, trên danh nghĩa, mỗi chữ cái mất 5,45 °, vậy chúng ta sẽ nói 5,4 ° đến 5,5 °?
Adám

Tôi tin rằng đó sẽ là một độ chính xác tốt, xem xét 2/21sai số gần đúng là nhỏ hơn 0,002.
Uriel

Câu trả lời:


7

Toán học, 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]

nhập mô tả hình ảnh ở đây

Tăng nó lên 178 byte cho phép nó xoay:

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}

nhập mô tả hình ảnh ở đây


7

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

41 byte được lưu nhờ @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>

Chiều rộng và chiều cao được đặt thành 250 để cho phép khả năng hiển thị tốt hơn không được bao gồm trong số byte.


Giảm JS của bạn xuống còn 223 byte với (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)}.
Xù xì

Hoặc, giảm phiên bản mới nhất của JS của bạn xuống còn 179 byte với(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

Nếu bạn vui lòng hy sinh một chút độ chính xác, bạn có thể thay thế Math.PIbằng 22/7để lưu thêm 6 byte.
Xù xì

Math.PI/332/21, nhưng mà coi ok?
Uriel

1
Bạn có thể lưu một số byte bằng es6 for...of: for(c of"CATION...x.fillText(c,
Brian McCutchon

6

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

Hãy thử nó ở đây


Đẹp! Có vẻ như axis([-2,2,-2,2]);không cần thiết. Nhưng bạn có thể muốn thêm axis equalvào cuối để có được một vòng tròn thực sự
Luis Mendo

Bạn làm gì với vòng lặp for? Bạn có thể thêm một lời giải thích cho một người mới làm quen với Octave như tôi không?
Michthan

Tất nhiên, tôi sẽ thêm một lời giải thích khi tôi có thời gian. Hy vọng sau ngày hôm nay :-)
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

Ví dụ đầu ra:

Ví dụ đầu ra


1
Tôi nghĩ bạn có thể sử dụng một tên phông chữ cố định để rút ngắn nó.
dkudriavtsev

4

BBC CƠ BẢN, 248

Tải xuống thông dịch viên tại http://www.bbcbasic.co.uk/bbcwin/doad.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.

Ung dung

  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

Làm điều này trong một ngôn ngữ không hỗ trợ văn bản xoay - cho vui. Mỗi ký tự là một mảng ma trận điểm 3x3. Có tổng cộng 66 ký tự nhưng có 2 khoảng trắng đối diện mà chúng ta không in (sau CODERS và trước FASTER.) Mỗi ​​byte của chuỗi ma thuật mã hóa cho một hàng dọc của một chữ cái và một hàng dọc duy nhất của đối diện lá thư. Theo cách này chúng ta chỉ phải quét qua 180 độ.

nhập mô tả hình ảnh ở đây


Thông minh, nhưng bạn sẽ có thể thực hiện các chữ cái cao 4 pixel trong một byte, phải không? Ngoài ra, văn bản của bạn nên được xoay 5 ký tự ngược chiều kim đồng hồ.
Adám

@ Adám khó làm cao 4 pixel vì mã sẽ chứa nhiều dấu vết không thể in được. Tôi không nghĩ người phiên dịch sẽ thích nó. Tôi giải thích sai / đánh giá sai thông số kỹ thuật cho luân chuyển. ( MEANSđã ở dưới cùng và tôi xoay nó sai cách) +.2cần được thay đổi thành -.3Chỉnh sửa.
Cấp sông St

Vì OP chỉ định chữ hoa, có thể làm A là ⠰⠳ và R là ⠸⠫ ?
Adám

@Adam đó là rất nhiều công việc làm thêm bây giờ, và tôi tin rằng nó sẽ làm giảm khả năng đọc. Nó phổ biến trong các phông chữ arty và máy tính cho các chữ cái viết hoa nhất định được thay thế bằng các chữ cái tương tự như chữ thường. Tôi sẽ xem nó trông như thế nào sau này.
Cấp sông 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

Phiên bản tĩnh của câu trả lời của tôi để giao tiếp dễ dàng hơn có nghĩa là mã hóa nhanh hơn có nghĩa là ít lập trình viên hơn có nghĩa là tinh chỉnh vì thế FEWERở phía dưới. Phiên bản điều chỉnh trong trường hợp phông chữ của bạn không khớp với tôi:

<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


Làm thế nào để bạn điều chỉnh khoảng cách giữa PHƯƠNG TIỆNFEWER ? Trong trình duyệt của tôi, họ đọc như một từ.
Adám

@ Adám Tôi đã chuyển phiên bản điều chỉnh qua.
Neil

Đẹp. Đó là hơn và hơn thế nữa.
Adám

2

Bản ghi (127 byte)

Đổ lục giác:

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

Phiên bản Ungolfed (văn bản):

/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

Đầu ra mẫu:

nhập mô tả hình ảnh ở đây


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

Ảnh chụp màn hình


Đẹp, nhưng dường như bạn đang thiếu một khoảng trống giữa MEans và EASIER COM.
Adám

@ Adám: Nó không phù hợp với FEWER ở quy tắc 6 giờ!
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}

Ví dụ đầu ra

nhập mô tả hình ảnh ở đây


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

nhập mô tả hình ảnh ở đây

Sẽ chơi golf sau!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.