Dibuja el cálido sombrero secreto de bienvenida


56

Winter Bash 2014 está en su mejor momento y ¿a todos no nos gustan los sombreros? ¡Especialmente los sombreros secretos!

Entonces, ¿por qué no dibujar uno de sombreros secretos?

El reto

Su tarea es dibujar el Warm Welcome Hat en proporción, en un idioma de su elección y con una construcción exacta tal como aparece en esta página .

Como siempre , puede representar el sombrero en un archivo o pantalla usando gráficos vectoriales o de trama. Si su salida está rasterizada, su imagen debe tener dimensiones de 400x400 píxeles o más.

Además, el contenido real del sombrero (el área del rectángulo delimitador de las partes coloreadas de la imagen) debe cubrir más del 40% de su imagen de salida.

Especificaciones

La siguiente imagen enumera varias dimensiones del sombrero. Todas las dimensiones están en la unidad, por ejemplo, píxeles. Todos los radios del borde de la imagen se dibujarán con un radio de 13unidades.

ingrese la descripción de la imagen aquí

Colores :

  • Rojo en la estrella y anillo circular - rgb (255, 28, 34)
  • Amarillo en el círculo - rgb (255, 202, 87)
  • Gris más claro - rgb (88, 88, 92)
  • Gris más oscuro - rgb (31, 26, 26)
  • Gris medio - rgb (64, 64, 64)

Puntuación

Este es el código de golf, por lo que gana la respuesta más corta (en bytes).

Como advertencia, el uso de la compresión existente (como incrustar un GIF comprimido) cae en varias lagunas estándar .


Acerca de la edición sugerida: elegí rechazar. Veo que la imagen se muestra correctamente tal como está.
mbomb007

Respuestas:


15

GolfScript ( 376 373 364 350 o 645 610 607 bytes)

Siguiendo la especificación original , que requería la construcción exacta del SVG, se genera un SVG golfizado en 607 bytes.

El código contiene muchos caracteres que no se imprimen, así que aquí está la salida xxd:

0000000: 221a c837 cde6 0c0c 4658 5786 cead ca66  "..7....FXW....f
0000010: 3507 d130 1577 4657 4067 df6b 97e7 510f  5..0.wFW@g.k..Q.
0000020: cbb0 e3e5 77c6 a91d d830 fa92 eea0 d447  ....w....0.....G
0000030: 7721 cc59 3f4c 230b e0bb fd3e ecf3 d4f7  w!.Y?L#....>....
0000040: 2c6b abd5 b1e5 939d 68b4 e89e 39ca a259  ,k......h...9..Y
0000050: b934 ef6f 203a 7abf 1a2c b468 3351 4c53  .4.o :z..,.h3QLS
0000060: c056 9a59 f38c a97e cf82 8840 ee7c 43e4  .V.Y...~...@.|C.
0000070: 123f df1a 00d4 542d a29c 0195 3ad5 4af4  .?....T-....:.J.
0000080: c644 57c7 0b6b 4d4f 908b 8cf7 c8e2 536d  .DW..kMO......Sm
0000090: 9d36 1139 1406 5c5c dcbc 3a11 1993 63a6  .6.9..\\..:...c.
00000a0: 4f8b 7b62 de77 5158 a485 dec1 87b4 1d11  O.{b.wQX........
00000b0: 01b1 e49d 8adb 0b29 ad44 93e4 7bbd 027e  .......).D..{..~
00000c0: 7a6f 60ca 99f4 6ab3 7bc0 63c3 ba70 1220  zo`...j.{.c..p. 
00000d0: 1aea 9206 da5a 95ce 6f70 67f8 856e 8807  .....Z..opg..n..
00000e0: adec e533 0c1e 3dc6 96e5 54d4 2837 4497  ...3..=...T.(7D.
00000f0: f5ea 2135 d261 9c02 fa61 c12a 7180 085a  ..!5.a...a.*q..Z
0000100: a5b8 e3d6 68cb 0659 f4ad d01d 5fc4 9e5b  ....h..Y...._..[
0000110: d030 46d5 96c4 439f da99 2cb1 52b9 5d53  .0F...C...,.R.]S
0000120: 098e 7598 2785 a962 a40d edbd 18cb e46c  ..u.'..b.......l
0000130: 6edb ba9f 17be 36ab ef23 0caf 3ce8 352d  n.....6..#..<.5-
0000140: fad5 762b a388 ca17 413f 7dac 6dd1 116e  ..v+....A?}.m..n
0000150: b2e8 9cd1 d00a dda1 716d a148 acc7 8749  ........qm.H...I
0000160: f2c3 a7a9 8128 02e9 d83c f350 7a02 74ec  .....(...<.Pz.t.
0000170: 6270 6089 a16d 7bfa b6dd e56a 366a d85b  bp`..m{....j6j.[
0000180: 33e5 b777 05c1 6f4e f06b ca95 3ffc 49f7  3..w..oN.k..?.I.
0000190: 1a08 6bc5 abb0 c745 e439 b87e b81c 52c8  ..k....E.9.~..R.
00001a0: a445 935e 5c5c 00d3 34de c002 721c b69d  .E.^\\..4...r...
00001b0: 16ee aab0 9562 4d44 44ed 0193 13a7 eed2  .....bMDD.......
00001c0: 99e4 6350 a756 c21a 980b 6bca 57f9 8443  ..cP.V....k.W..C
00001d0: eecc 9fd1 05ce 78c4 f95f dc90 8926 6eb4  ......x.._...&n.
00001e0: 88b8 7b90 44be 33c3 cc2a b032 d809 17d0  ..{.D.3..*.2....
00001f0: 7e32 c4c9 e37f ceb3 b1e0 b634 a690 8163  ~2.........4...c
0000200: cd34 e3d9 9768 3e13 ac10 5003 1cb7 af6b  .4...h>...P....k
0000210: 863f cba0 9896 e50a d029 8e2b 584c d86f  .?.......).+XL.o
0000220: 67a7 120e 318a cb22 3235 3662 6173 6520  g...1.."256base 
0000230: 3132 3462 6173 655b 305d 2f28 3332 2c7b  124base[0]/(32,{
0000240: 5c5b 3124 295d 2f5c 3224 3d2a 7d2f 5c2c  \[1$)]/\2$=*}/\,
0000250: 297b 2d2e 3634 3e33 322a 2b7d 2b25 2b    ){-.64>32*+}+%+

Es una variante del motor de gramática constructiva con el que estarán familiarizados los seguidores de de :

'MAGIC STRING'256base 124base[0]/(40,{\[1$)]/\2$=*}/\,){-.64>32*+}+%+

Resultó ser un poco mejor en mayúsculas el SVG de golf, comprimir eso y luego en minúsculas después de la descompresión.

Cuando se ejecuta, produce un SVG de 840 bytes:

<svg width="192" height="192"><g transform="translate(-19.356 39.823) scale(.11435537421402706)"><path d="m873 126c-28-56-97-79-153-50l-361 182c-40 20-63 60-62 102v369c0 63 51 114 114 114h1198c63 0 114-51 114-114v-369c1-62-22-82-62-102l-361-182c-56-29-125-6-153 50c-28 56-6 124 49 152h-372c55-28 77-96 49-152z" fill="#231f20"/><path d="m1642 812c0 60-49 109-109 109h-1047c-60 0-109-49-109-109v-435c0-60 49-109 109-109h96.557636322653a530 274 0 0 1 854.884727354693 0h96.557636322653c60 0 109 49 109 109v435z" fill="#424143"/><path d="m1561 826c0 52-42 95-95 95h-912c-52 0-95-42-95-95v-463c0-52 42-95 95-95h912c52 0 95 42 95 95v463z" fill="#595a5c"/><circle cy="594" cx="1010" r="199" fill="#f9c960" stroke="#ec2227" stroke-width="42"/><path d="m1063 615l85-62-105 0-33-100-33 100-105 0 85 62-32 100 85-62 85 62z" fill="#ec2227"/></g></svg>

Modifiqué la posición unos milipixels y corregí una pequeña asimetría en la parte gris más oscura.


Pero los cambios en la pregunta y la discusión en el chat indican que en realidad está permitido crear una buena aproximación al SVG, que se puede hacer en 364 bytes. La cadena de descompresión es similar, por lo que la salida xxd del archivo GolfScript es:

0000000: 2710 9f1d b7bb 6ca9 ad60 1325 b869 45a6  '.....l..`.%.iE.
0000010: 9371 2eee 1271 1dac 0244 9ca3 2820 e6be  .q...q...D..( ..
0000020: b038 68e4 4e53 bbe9 7809 a67a 5f02 2f14  .8h.NS..x..z_./.
0000030: 66a1 0cb3 648c 76d4 0450 028d fd32 b81f  f...d.v..P...2..
0000040: 351a d449 bba8 e685 4de8 1fc0 abfd 8b9f  5..I....M.......
0000050: d9d9 33cd 16e9 5c27 b7a0 dc0f 4138 a2ca  ..3...\'....A8..
0000060: 2b45 a2c2 571e 7e1e 1030 dcfd b48e 377b  +E..W.~..0....7{
0000070: 112e 7762 d14c 1fed 0bcb 15b4 c383 f828  ..wb.L.........(
0000080: b317 8c9f 890b ce84 7782 4c10 fc8e 7602  ........w.L...v.
0000090: 9fef 9563 fe30 45b0 7144 30b3 f3c5 fa22  ...c.0E.qD0...."
00000a0: ccae 8a08 c506 466b 6b84 317e 62dd a558  ......Fkk.1~b..X
00000b0: 8423 d8ef 9d67 e807 0d23 847d 4dab 68ff  .#...g...#.}M.h.
00000c0: 952b ca20 14d3 0881 2880 6611 eb53 10c6  .+. ....(.f..S..
00000d0: 0058 573f 3c87 957c 8512 59ff 94f3 ae38  .XW?<..|..Y....8
00000e0: 4145 bf8d 4123 6e84 aa62 904d a878 0bca  AE..A#n..b.M.x..
00000f0: 854b deaa 32ae 70fc b31a 9578 676a df8a  .K..2.p....xgj..
0000100: 7310 ecfc 47d2 5dde 1a8c 3898 943b ede3  s...G.]...8..;..
0000110: d0a2 55a4 eb00 b623 0302 d79c a712 b616  ..U....#........
0000120: 5037 dc2d 0dad 2732 3536 6261 7365 2031  P7.-..'256base 1
0000130: 3133 6261 7365 5b30 5d2f 2832 312c 7b5c  13base[0]/(21,{\
0000140: 5b31 2429 5d2f 5c32 243d 2a7d 2f5c 2c29  [1$)]/\2$=*}/\,)
0000150: 7b2d 2e36 343e 3332 2a2b 7d2b 252b       {-.64>32*+}+%+

y genera un archivo SVG de 547 bytes:

<svg width="1426" height="858"><path d="m475 114-361.5 182v370h1199v-370l-361.5-182" stroke="#231f20" stroke-linecap="round" stroke-linejoin="round" stroke-width="227"/><ellipse cx="713" cy="367" rx="530" ry="274" fill="#424143"/><rect x="80" y="205" width="1266" height="653" rx="109" ry="109" fill="#424143"/><rect x="161" y="205" width="1103" height="653" rx="95" ry="95" fill="#595a5c"/><circle cx="713" cy="531" r="199" fill="#f9c960" stroke="#ec2227" stroke-width="42"/><path d="m713 390 85 262-223-162 276 0-223 162z" fill="#ec2227"/></svg>

Gracias a Paul LeBeau por señalar un ahorro de 7 bytes en el SVG que se tradujo a 9 bytes en el GolfScript, y por su respuesta que demostró que la estrella se puede dibujar con solo 5 puntos. (Usando su respuesta, podría llegar a 329 bytes, o 323 con algunos ajustes a su respuesta, pero no me siento cómodo con eso).

Exportado al 50% con Inkscape:

Imagen del sombrero representada como PNG

Para ver la estructura, aquí está el SVG renderizado con fill="none"todo y algunos colores de relleno cambiados a colores de trazo: Imagen del esquema


@Optimizer, pero a diferencia del JS, es casi perfecto en píxeles. Además de jugar al golf, la única diferencia con el SVG original es que corrige una asimetría. Si lo relajo al estilo de la imagen marcada de Martin, probablemente pueda ahorrar mucho.
Peter Taylor

"<g>" y "</g>" no son necesarios, por lo que debería poder ahorrar un poco más.
Paul LeBeau

@PaulLeBeau, muy cierto, gracias.
Peter Taylor

26

SVG ( 462 460 454 429 384 365 bytes)

Sé que no es un lenguaje de programación, pero pensé que al menos sería útil para cualquiera que generara salida SVG ...

Esto se basa en el SVG de Peter Taylor.

Al usar los coords originales y optimizar un poco las rutas, logré reducir el SVG. También arreglé los colores.

<svg><g stroke-linecap=round stroke-linejoin=round stroke-width=26><path d=M54,13,13,36V75H151V36L110,13 stroke=#1f1a1a /><path d=M21,84V36H37A91,91,0,0,1,127,36h16V84z stroke=#404040 /><path d=M30,36v48h104V36z stroke=#58585c fill=#58585c /></g><circle cx=82 cy=60 r=23 fill=#ffca57 stroke=#ff1c22 stroke-width=5 /><path d=M82,43,92,74,66,55H98L72,74z fill=#ff1c22

Actualización: Se corrigió la falla señalada por Peter Taylor y la posición de los rectificadores y se guardaron 2 bytes más.

Actualización 2: Incorporado otra solución y sugerencias de Peter (-6 bytes)

Actualización 3: Acabo de notar que las instrucciones ahora especifican que todos los radios son 13, así que aprovechando eso y optimizando las rutas un poco más, guardé otros 25 bytes. Violín más legible aquí.

Actualización 4: dado que ya estoy asumiendo que el SVG está incrustado en HTML (los SVG independientes necesitan la declaración del espacio de nombres), en realidad puedo exprimir esto más. (a) No necesito los atributos de ancho y alto porque el tamaño del SVG es más pequeño que el tamaño predeterminado que los navegadores le dan a los objetos cuyo tamaño es indeterminado (300x150), y (b) el analizador HTML perdona los atributos que no No tiene comillas, por lo que algunas de ellas pueden eliminarse (idea de Squeamish Ossifrage ). Guarda otros 45 bytes.

Actualización 5: Uso de los trucos de hsl para quitar entre comillas los colores y soltar las etiquetas finales. Guardamos otros 19 bytes. Al principio, este último me pareció un poco engañoso, pero como funciona en todos los navegadores, cambié de opinión. :) Gracias hsl!


Algunas buenas ideas, pero hay un defecto bastante malo. El gris medio no llega lo suficientemente alto como para cubrir el relleno del gris oscuro. No estoy seguro de si esto se soluciona mejor agregando fill="none"al grupo o ajustando la curva.
Peter Taylor

Bien visto, gracias. Corregido ahora. No estaba usando el radio de arco correcto porque olvidé restar la mitad del ancho del trazo.
Paul LeBeau

El <rect>debe tener altura en 74lugar de 78. Y lo convierten en un ahorro de 5-char para reemplazarlo con un <path>tanto filly stroke, stroke-width="18"y luego se movió dentro de la <g>y lo común stroke-width="18"se movió de dos rutas de acceso al <g>. Tener otro en <path>lugar de un <rect>también debería ayudar un poco a la compresibilidad.
Peter Taylor

Gracias. Parece que hay una diferencia entre los radios (8 frente a 9), por lo que los tuve diferentes. Pero no está del todo claro, por lo que tener ambos como 9 apenas se nota de todos modos.
Paul LeBeau

Los radios se especifican como 13, por lo que he actualizado el SVG.
Paul LeBeau

20

Mathematica 787612600514506 bytes

Sorprendente cantidad de código necesaria. Seguramente será golpeado.

Forma no golfista

red=RGBColor[1.,.11,.13]
yellow=RGBColor[1.,.79,.34]
lightGrey=RGBColor[.35,.35,.36]
midGrey=RGBColor[.25,.25,.25]
r=RoundingRadius->8;
pentagonalVertices[offset_]:=Table[{Cos[2π k/5+ offset],Sin[2π k/5+offset]},{k,0,5}];
x=63;x2=72;
y=37;
pts={{e=22,50},{h=72,30},{h,-17},{-h,-15},{-h,30},{-e,50}};
pts2={{-h,-15},{-h,30},{-e,50}}
Graphics[{
{Black,Thickness[.13],JoinForm["Round"],CapForm["Round"], Line[pts]},
midGrey,Rectangle[{-x2,-y},{x2,y},r],
Disk[{0,-55},104,{Pi/3,2Pi/3}],
White,Rectangle[{-40,-60},{40,0},r],
lightGrey,Rectangle[{-x,-y},{x,y},r],
red,Disk[{0,0},25],yellow,Disk[{0,0},19.5],red,
GraphicsComplex[16.7 pentagonalVertices[Pi/2],Polygon[{1,3,5,2,4}]],
GraphicsComplex[6.4 pentagonalVertices[3 Pi/2],Polygon[{1,2,3,4,5}]]}]

sombrero

Golfed

g=GraphicsComplex;c=RGBColor;d=c[1.,.11,.13];o="Round";k=Rectangle;j=Disk;n=Polygon;r=RoundingRadius->8;w@s_:=Table[{Cos[2\[Pi]k/5+s],Sin[2\[Pi]k/5+s]},{k,0,5}];x=63;i=72;y=37;p={{e=22,50},{h=72,30},{h,-17},{-h,-15},{-h,30},{-e,50}};Graphics[{Thickness[.13],JoinForm@o,CapForm@o,Line@p,c[.25,.25,.25],k[{-i,-y},{i,y},r],j[{0,-55},104,{\[Pi]/3,2\[Pi]/3}],White,k[{-40,-60},{40,0},r],c[.35,.35,.36],k[{-x,-y},{x,y},r],d,j[{0,0},25],c[1.,.79,.34],j[{0,0},19.5],d,g[16.7w[\[Pi]/2],n[{1,3,5,2,4}]],g[6.4w[3\[Pi]/2],n[{1,2,3,4,5}]]}]

¿Puedo preguntar cómo cuenta los bytes? (Soy nuevo aquí) Obtengo 651 bytes al contar su versión de golf con este sitio: mothereff.in/byte-counter
Jean-Paul

1
Utilizo una aplicación de contador automático utilizada por Wolfram para evaluar la duración de los envíos al concurso one-liner ( blog.wolfram.com/2014/11/10/… ). No cuenta los espacios opcionales incluidos para facilitar la lectura. En realidad, lee el no, de caracteres, no bytes, pero supongo que un char = un byte.
DavidC

¡Tiene sentido! Lástima que no puedo hacer lo mismo para mi presentación :) Gracias por la respuesta.
Jean-Paul

Supongo que podrías verlo de esa manera. Pero eso deja una pantalla muy difícil de leer en una sola línea. Prefiero mantenerlo legible.
DavidC

18

HTML + ES6, 533

<canvas id=D width=600 height=400><script>c=D.getContext('2d')
S=x=>c.strokeStyle=F(x)
F=x=>c.fillStyle=x
W=x=>c.lineWidth=x
B=x=>c.stroke()||c.fill()||c.beginPath()
G='s.charCodeAt(i++)*9-300,'
L=s=>B()||eval('for(i in s)i%2||c.lineTo('+G+G+'0)')&&B()
c.lineCap=c.lineJoin='round'
W(60)
S('#1F1A1A')
L(';,+3+BXBX3H,')
S('#404040')
L('.3.EUEU3.3')
c.arc(291,390,270,4,5.2,0)
B()
S('#58585C')
L('131ERER313')
S(R='#FF1C22')
F('#FFCA57')
W(30)
c.arc(291,240,69,0,7,0)
B()
c.font='105px serif'
S(R)
c.fillText('\u2605',239,276)</script>

Fragmento (modificado):

<canvas style="margin:-40px 0 0 100px;height:250px;" id=D width=600 height=400><script>stages=[function(){c=D.getContext('2d');S=function(x){return c.strokeStyle=F(x)};F=function(x){return c.fillStyle=x};W=function(x){return c.lineWidth=x};B=function(x){return c.stroke()||c.fill()||c.beginPath()};G='s.charCodeAt(i++)*9-300,';L=function(s){return B()||eval('for(i in s)i%2||c.lineTo('+G+G+'0)')&&B()}},function(){c.lineCap=c.lineJoin='round';W(60);S('#1F1A1A');L(';,+3+BXBX3H,')},function(){S('#404040');L('.3.EUEU3.3')},function(){c.arc(291,390,270,4,5.2,0);B()},function(){S('#58585C');L('131ERER313')},function(){S(R='#FF1C22');F('#FFCA57');W(30);c.arc(291,240,69,0,7,0);B()},function(){c.font='105px serif';S(R);c.fillText('\u2605',239,276)}];next=function(i){stages[i]();if(i<6)setTimeout(next,1000,i+1)};next(0)</script>

¡sombrero!


@Optimizer He agregado una imagen, ya que me parece bien tanto en FF como en Chrome. La fuente debe ser diferente en Windows o algo así.
grc

@grc Creo que no puede confiar en que ciertas fuentes estén disponibles en todos los sistemas; especialmente si usas serif, que ni siquiera es una fuente específica ...
Alexander

En Arial Unicode MS (la fuente Arial de Windows que realmente tiene el punto de código) ese punto de código ni siquiera tiene la forma correcta. Los puntos tienen una base más estrecha.
Peter Taylor

13

HTML + CSS, 676636625 bytes

Esto se puede jugar mucho, deshaciéndolos left:XXXpxy usando algún tipo de centrado. Ahora usando transformaciones para centrar todo en lugar de left:XXXpx.

*{left:50%;transform:translate(-50%);position:absolute;border-radius:13px;height:75px}a,b,f{width:145px;background:#404040}b{width:126px;background:#58585C}c{width:163px;height:61px;top:50px}d,e{width:68px;height:40px;top:-15px}c,d,e{background:#1F1A1A}d{left:0;transform:skew(0deg,-26deg);border-radius:9px 24px}e{left:96px;transform:skew(0deg,26deg);border-radius:24px 9px}f{height:40px;width:99px;top:-13px;border-radius:150px/60px}g{height:34px;width:34px;background:#FFCA57;border:5px solid #FF1C22;border-radius:40px;top:13px;color:#FF1C22;font-size:1cm;line-height:31px;padding:3px}
<c><d></d><e></e><f></f><a><b><g>

Nota: Esto funciona mejor / como se esperaba en Firefox en Windows

El resultado final se ve así:

ingrese la descripción de la imagen aquí


Nunca he visto etiquetas HTML con golf. Interesante.
Arturo Torres Sánchez

1
@ ArturoTorresSánchez Entonces necesitas ver esto
Optimizer

La estrella ahora parece un poco desplazada hacia la izquierda y la parte superior en FF 34.0 / Windows
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

8

ActionScript 3.0, 491 bytes

Forma de golf:

var h=new Shape(),g=h.graphics,l=g.lineTo,m=g.moveTo,s=g.lineStyle,b=g.beginFill,e=g.endFill,r=g.drawRoundRect;s(23,0x231F20);m(77,18);l(41,36);l(41,73);m(125,18);l(161,36);l(161,73);s();b(0x424143);g.drawEllipse(48,16,106,55);e();b(0x424143);r(38,27,126,65,23,23);e();b(0x595A5C);r(46,27,110,65,17,17);e();s(4.2,0xEC2227);b(0xF9C960);g.drawCircle(101,59,20);e();s();b(0xEC2227);m(106,61);l(115,55);l(104,55);l(101,45);l(98,55);l(87,55);l(96,61);l(93,71);l(101,65);l(110,71);e();addChild(h);

Salida: http://megaswf.com/file/2708781.swf


1
O bien: var ww=new WarmWelcome(); stage.addChild(ww);y dibuje en Flash con el enlace AS3:)
wchargin

7

MATLAB R2013a, 551 541

Este es mi primer código de golf. Entonces, si algo no está de acuerdo con las reglas, por favor enséñame / dime :)

Forma de golf:

hold on
r=[1 .11 .13];h=[];b=2.4;q=-37;o='Curvature';p='Position'
x='FaceColor';z='EdgeColor';v=@rectangle;t=@repmat;s=@set
for i=1:19;h=[h v(p,[-82+b*i -32+i 22 73]) v(p,[60-b*i -32+i 22 73])];end
s(h,o,1,x,[.12 .1 .1])
c=.8:.01:2.2
h=[h fill(104*cos(c),104*sin(c)-52,t(.25,1,3))]
h=[h v(p,[-72 q 144 74],o,.1,x,t(.25,1,3))]
a=v(p,[-63 q 126 74])
a=[a v(p,[-63 q 126 74])]
s(a,o,.1,x,[t(.35,1,2) .36])
v(p,[-20 -20 40 40],o,1,x,[1 .79 .34],z,r,'LineWidth',10)
plot(0,0,'rp',['Marker' x],r,'MarkerSize',58.5)
s([a h],z,'none')
axis equal off

Salida (rasterizada):

ingrese la descripción de la imagen aquí


6

LaTeX / TikZ (613 bytes)

\RequirePackage{xcolor,tikz}\RequirePackage[active,tightpage]{preview}\PreviewMacro[[!]\tikz\def~#1{\definecolor#1{HTML}}~1{EC2227}~2{F9C960}~3{595A5C}~4{231F20}~5{424143}\def\r{rounded
corners}\def\R{radius}\tikz[x=1pt,y=1pt]{\def~{\fill[}\draw[4,line
width=22.8,line
cap=round,line
join=round](-23.8,41.7)--(-59.9,23.5)--(-59.9,-13.3)--(59.9,-13.3)--(59.9,23.5)--(23.8,41.7);~5,x
\R=53,y
\R=27.4](0,16.4)circle;~5,\r=10.9](-63,-32.65)rectangle(63,32.65);~3,\r=9.5](-55.1,-32.65)rectangle(55.1,32.65);~1,\R=22](0,0)circle;~2,\R=17.8](0,0)circle;~1](90:14.1)\foreach\!in{0,...,4}{--(90+\!*144:14.1)}--cycle;}\stop

El resultado de pdflatexes un archivo PDF con el sombrero como gráficos vectoriales y un cuadro delimitador ajustado.

Resultado

Sin golf

\documentclass{minimal}
% Package xcolor provides color model HTML
% in order to take the exact same values, used in the SVG file 
\usepackage{xcolor}
\usepackage{tikz}

% Package preview is used to get a correct bounding
% box for the graphics
\usepackage[active,tightpage]{preview}
\PreviewEnvironment[{[]}]{tikzpicture}

% Color definitions. one digit instead of a name saves many bytes
\definecolor1{HTML}{EC2227}
\definecolor2{HTML}{F9C960}
\definecolor3{HTML}{595A5C}
\definecolor4{HTML}{231F20}
\definecolor5{HTML}{424143}

\begin{document}
  \begin{tikzpicture}[x=1pt,y=1pt]
    % Draws the dark lines in the background
    \draw[4,line width=22.8,line cap=round,line join=round]
    (-23.8,41.7)--(-59.9,23.5)--(-59.9,-13.3)
    --(59.9,-13.3)--(59.9,23.5)--(23.8,41.7);
    % Draws the ellipsis
    \fill[5,x radius=53,y radius=27.4](0,16.4)circle;
    % Draw the rear rectangle 
    \fill[5,rounded corners=10.9](-63,-32.65)rectangle(63,32.65);   
    % Draws the rectangle in the foreground
    \fill[3,rounded corners=9.5](-55.1,-32.65)rectangle(55.1,32.65);
    % Draws the red full circle
    \fill[1,radius=22](0,0)circle;  
    % Draws the inner yellow circle 
    \fill[2,radius=17.8](0,0)circle;
    % Draw the star
    \fill[1](90:14.1)\foreach\!in{0,...,4}{--(90+\!*144:14.1)}--cycle;
  \end{tikzpicture}%
\end{document}

Los valores se toman del archivo SVG, eran más precisos (pero también contiene errores de redondeo). La parte más complicada eran las líneas oscuras inclinadas en el fondo. Se dibujan como líneas muy gruesas con tapas y uniones de líneas redondeadas.

Animación


Qué belleza :)
Jean-Paul

2

Perl + TK: 555

Las nuevas líneas son solo para facilitar la lectura, aunque me perdí de tantas variables.

use Tk;@w=(-width=>13);$c=tkinit->Canvas->pack;
$c->createPolygon($a=131,$b=163,168,150,$a,$b,$e=269,$b,232,150,$e,$b,$e,$d=225,$a,$d,-outline=>"#1f1a1a",@w);
$c->createPolygon(137,$f=169,263,$f,263,$g=231,137,$g,-outline=>$h="#".40x3,@w);
$c->createOval($a,147,$e,$g,-fill=>$h,-outline=>$h);
$c->createPolygon(143,$f,257,$f,257,$g,143,$g,-fill=>$l="#58585c",-outline=>$l,@w);
$c->createOval(175,175,$d,$d,-width=>5,-fill=>"#ffca57",-outline=>$r="#ff1c22");
$c->createPolygon((map{200+($_%2?17:6)*sin.628*$_,200+($_%2?17:6)*cos.628*$_}0..11),-fill=>$r);
MainLoop

Aquí hay una foto:

ingrese la descripción de la imagen aquí

No creo que sea casi perfecto en píxeles, pero está lo suficientemente cerca :)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.