Daha kolay iletişim demek… ○ dairesel baskı!


12

Dayanarak bu , ama ben istendi [1] , [2] bir grafik baskı yapmak.

KOLAY İLETİŞİM DAHA HIZLI KODLAMA DEMEKTİR DAHA AZ KODLUK DEMEKTİR…

Görev

Metnin dairesel bir görüntüsünü oluşturun EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS . Tüm büyük harfler kullanılır. Harf üstleri daire dışına bakmalıdır. Ya önceki boşluk FEWERen altta (saat 6) ya da (kek noktaları için) metninizin dönmesi gerekir.


@Uriel Eh, her harf 5.45 ° alır, bu yüzden 5.4 ° ila 5.5 ° diyelim mi?
Adám

2/21Yaklaşık hata 0,002'den küçük olduğunda , bunun iyi bir hassasiyet olacağını düşünüyorum .
Uriel

Yanıtlar:


7

Mathematica, 153 Bayt

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

resim açıklamasını buraya girin

178 bayta yükseltilmesi, dönmesini sağlar:

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}

resim açıklamasını buraya girin


7

HTML ve JS, 13 + 170 = 284 227 192 186 183 bayt

@Shaggy sayesinde 41 bayt kaydedildi

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

Daha iyi görünürlük sağlamak için 250'ye ayarlanan genişlik ve yükseklik bayt sayısına dahil edilmedi.


İle JS'nizi 223 bayta indirin (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

Veya JS'nizin en son sürümünü 179 bayta düşürün(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

Biraz hassasiyeti feda etmekten mutluluk duyuyorsanız, başka bir 6 bayt kaydetmek için Math.PIile değiştirebilirsiniz 22/7.
Shaggy

ve Math.PI/332/21, ama bu iyi mi?
Uriel

1
Es6 kullanarak bazı baytlar kaydedebilirsiniz for...of: for(c of"CATION...vex.fillText(c,
Brian McCutchon

6

Oktav, 168 bayt

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

Burada deneyin


Güzel! Gerekmiyor gibi görünüyor axis([-2,2,-2,2]);. Ama axis equalsonunda gerçek bir daire elde etmek için eklemek isteyebilirsiniz
Luis Mendo

for loop ile ne yapıyorsun? Benim gibi bir Octave acemi için bir açıklama ekleyebilir misiniz?
Michthan

Tabii ki, zamanım olduğunda bir açıklama ekleyeceğim. Umarım daha sonra bugün :-)
Stewie Griffin

4

Bash + ImageMagick, 168 bayt

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

Örnek çıktı:

Örnek çıktı


1
Kısaltmak için sabit bir yazı tipi adı kullanabileceğinizi düşünüyorum.
dkudriavtsev

4

BBC TEMEL, 248

Yorumlayıcıyı http://www.bbcbasic.co.uk/bbcwin/download.html adresinden indirin

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

Bunu döndürülmüş metni desteklemeyen bir dilde yapmak - eğlence için. Her karakter 3x3 nokta vuruşlu bir dizidir. Toplam 66 karakter var, ancak basmadığımız 2 taban tabana zıt boşluk var (KODERLERDEN sonra ve HIZLI öncesi.) Sihirli dizginin her baytı bir harfin tek bir dikey satırı ve karşıtın tek bir dikey satırı için kodlama yapar mektup. Bu şekilde sadece 180 derece süpürmemiz gerekiyor.

resim açıklamasını buraya girin


Zeki, ancak bir baytta 4 piksel yüksekliğinde harfler yapabilmelisiniz, değil mi? Ayrıca, metniniz saat yönünün tersine 5 karakter döndürülmelidir.
2017'de

@ Kod çok sayıda yazdırılamaz içerdiğinden 4 piksel yüksekliğinde yapmak zordur. Tercümanın hoşuna gideceğini sanmıyorum. Spesifikasyonu rotasyon için yanlış yorumladım / yanlış yorumladım. ( MEANSzaten altta ve yanlış şekilde döndürdüm) Düzenleme +.2olarak değiştirilmesi gerekiyor -.3.
Level River St

OP büyük harf belirttiğinden, A'yı ⠰⠳ ve R'yi ⠸⠫ olarak yapabilir ?
2017'de

@Adam şu anda çok fazla iş ve okunabilirliği azaltacağına inanıyorum. Bazı büyük harflerin yerine küçük harfle benzeyen eşdeğerlerin yerine gösterişli ve hesap makinesi yazı tiplerinde sık rastlanır. Daha sonra nasıl göründüğünü göreceğim.
Level River St

3

SVG (HTML5), 212 bayt

<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

Daha kolay iletişime cevabımın statik versiyonu, daha hızlı kodlama anlamına gelir, daha az kodlayıcı anlamına gelir ... bu yüzden FEWERen altta. Yazı tipinizin benimkine uymaması durumunda ayarlanabilir sürüm:

<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


DEMİR ve FEWER arasındaki boşluğu nasıl ayarlarsınız ? Tarayıcımda bir kelime gibi okuyorlar.
Adám

@ Adám Ayarlanabilir sürümü baştan sona taşıdım.
Neil

Güzel. Bu her şeyden önce.
Adám

2

Postscript (127 bayt)

Hex dökümü:

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 (metin) sürümü:

/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

Örnek çıktı:

resim açıklamasını buraya girin


2

Java 8, 1.087 bayt

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

Ekran görüntüsü


Güzel, ama ANANS ve KOLAY COM arasında bir boşluk eksik görünüyor.
Adám

@ Adám: Saat 6 yönündeki FEWER ile uyuşmuyor!
sergiol

0

LaTeX + TikZ, 380 bayt

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

Örnek çıktı

resim açıklamasını buraya girin


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

resim açıklamasını buraya girin

Daha sonra golf olacak!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.