การสื่อสารที่ง่ายขึ้นหมายถึง…○หนังสือเวียน!


12

จากสิ่งนี้แต่ฉันถูกขอให้[1] , [2]ทำแบบกราฟิก

การสื่อสารที่ง่ายขึ้นหมายถึงการเข้ารหัสที่เร็วขึ้นหมายถึงการเข้ารหัสที่น้อยลงหมายถึง ...

งาน

EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS สร้างการแสดงผลแบบวงกลมของข้อความ ฟอนต์ตัวพิมพ์ใหญ่ใด ๆ ท็อปส์ซูจดหมายจะต้องหันออกจากวงกลม พื้นที่ก่อนหน้าFEWERจะต้องอยู่ที่ด้านล่าง (6 โมง) หรือ (สำหรับจุดบราวนี่) ข้อความของคุณจะต้องหมุน


@ Uriel เอลในนามจดหมายแต่ละฉบับใช้เวลา 5.45 °ดังนั้นเราจะพูดว่า 5.4 °ถึง 5.5 °หรือไม่?
Adám

ฉันเชื่อว่าจะเป็นความแม่นยำที่ดีโดยพิจารณา2/21ข้อผิดพลาดการประมาณมีขนาดเล็กกว่า 0.002
Uriel

คำตอบ:


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]

ป้อนคำอธิบายรูปภาพที่นี่

การเพิ่มเป็น 178 ไบต์ช่วยให้สามารถหมุนได้:

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}

ป้อนคำอธิบายรูปภาพที่นี่


7

HTML และ JS, 13 + 170 = 284 227 192 186 183 ไบต์

บันทึกแล้ว 41 ไบต์ด้วย @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>

ความกว้างและความสูงตั้งไว้ที่ 250 เพื่อให้การมองเห็นที่ดีขึ้นไม่รวมอยู่ในจำนวนไบต์


ลด JS ของคุณไปยัง 223 (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

หรือลดเวอร์ชันล่าสุดของ JS ของคุณเป็น 179 ไบต์ด้วย(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

หากคุณยินดีเสียสละความแม่นยำเล็กน้อยคุณสามารถแทนที่Math.PIด้วย22/7เพื่อบันทึกอีก 6 ไบต์
Shaggy

และMath.PI/332/21แต่นั่นถือว่าโอเคไหม
Uriel

1
คุณสามารถบันทึกไบต์โดยใช้ es6 for...of: for(c of"CATION...และx.fillText(c,
Brian McCutchon

6

ระดับเสียงคู่, 168 ไบต์

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

ลองที่นี่


ดี! ดูเหมือนว่าaxis([-2,2,-2,2]);ไม่จำเป็น แต่คุณอาจต้องการที่จะเพิ่มaxis equalในตอนท้ายเพื่อให้ได้วงกลมจริง
Luis Mendo

คุณทำอะไรกับ for loop? คุณสามารถเพิ่มคำอธิบายสำหรับสามเณรสามคนอย่างฉันได้ไหม?
Michthan

แน่นอนฉันจะเพิ่มคำอธิบายเมื่อฉันมีเวลา หวังว่าในวันนี้ภายหลัง :-)
Stewie Griffin

4

Bash + ImageMagick, 168 ไบต์

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

ตัวอย่างผลลัพธ์:

ตัวอย่างผลลัพธ์


1
ฉันคิดว่าคุณสามารถใช้ชื่อตัวอักษรคงที่เพื่อย่อให้สั้นลง
dkudriavtsev

4

BBC BASIC, 248

ดาวน์โหลดล่ามได้ที่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.

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

ทำสิ่งนี้ในภาษาที่ไม่รองรับข้อความที่หมุน - เพื่อความสนุกสนาน อักขระแต่ละตัวเป็นอาร์เรย์เมทริกซ์ 3x3 จุด มีอักขระทั้งหมด 66 ตัว แต่มีช่องว่างตรงข้าม 2 เส้นที่เราไม่พิมพ์ (หลัง CODERS และก่อนหน้านี้เร็วกว่า) แต่ละไบต์ของสตริงมายากลจะเข้ารหัสสำหรับแถวแนวตั้งเดี่ยวของตัวอักษรหนึ่งและแถวแนวตั้งเดี่ยวของฝั่งตรงข้าม จดหมาย ด้วยวิธีนี้เราต้องกวาดผ่าน 180 องศาเท่านั้น

ป้อนคำอธิบายรูปภาพที่นี่


ฉลาด แต่คุณควรจะสามารถทำตัวอักษรสูง 4 พิกเซลในไบต์ใช่ไหม? นอกจากนี้ควรหมุนข้อความของคุณ 5 ตัวในแนวทวนเข็มนาฬิกา
อดัม

@ Adámทำยาก 4 พิกเซลสูงเพราะรหัสจะมี unprintables มากมาย ฉันไม่คิดว่าล่ามจะชอบ ฉันตีความสเป็คที่ผิดพลาด / misremembered สำหรับการหมุน ( MEANSเป็นที่ด้านล่างแล้วและฉันหมุนไปในทางที่ผิด) +.2จำเป็นต้องเปลี่ยนเป็นการ-.3แก้ไข
เลเวลริเวอร์

เนื่องจาก OP ระบุตัวพิมพ์ใหญ่อาจจะ A เป็น⠰⠳และ R เป็น⠸⠫ ?
อดัม

@ อดัมตอนนี้มีงานพิเศษมากมายและฉันเชื่อว่ามันจะลดความสามารถในการอ่าน เป็นเรื่องปกติในแบบอักษรอาร์ตี้และเครื่องคิดเลขสำหรับตัวอักษรตัวพิมพ์ใหญ่บางตัวที่จะถูกแทนที่ด้วยสิ่งที่คล้ายกันซึ่งเป็นตัวพิมพ์เล็ก ฉันจะดูว่ามันดูในภายหลัง
เลเวลริเวอร์

3

SVG (HTML5), 212 ไบต์

<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

คำตอบของฉันในรูปแบบคงที่สำหรับการสื่อสารที่ง่ายยิ่งขึ้นหมายถึงการเข้ารหัสที่เร็วขึ้นหมายถึง coders ที่น้อยลงหมายถึง ... tweaked FEWERที่ด้านล่าง เวอร์ชันที่ปรับได้ในกรณีที่แบบอักษรของคุณไม่ตรงกับของฉัน:

<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


คุณจะทำอย่างไรปรับระยะห่างระหว่างหมายถึงและน้อยลง ? ในเบราว์เซอร์ของฉันพวกเขาอ่านเหมือนคำเดียว
2560

@ Adámฉันได้ปรับรุ่นที่ปรับได้แล้ว
Neil

ดี นั่นมันไปเรื่อย ๆ
อดัม

2

Postscript (127 ไบต์)

การถ่ายโอนข้อมูล Hex:

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 (ข้อความ):

/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

ตัวอย่างผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


2

Java 8, 1,087 ไบต์

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

ภาพหน้าจอ


ดีมาก แต่ดูเหมือนว่าคุณจะขาดช่องว่างระหว่าง MEANS และ EASIER COM
อดัม

@ Adám: มันไม่สอดคล้องกับ FEWER ที่ 6 โมงเช้ากฎ!
sergiol

0

LaTeX + TikZ, 380 ไบต์

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

ตัวอย่างผลลัพธ์

ป้อนคำอธิบายรูปภาพที่นี่


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

ป้อนคำอธิบายรูปภาพที่นี่

จะตีกอล์ฟเพิ่มในภายหลัง!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.