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 13
unidades.
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 .
fuente
Respuestas:
GolfScript (
376 373 364350 o645 610607 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:
Es una variante del motor de gramática constructiva con el que estarán familiarizados los seguidores de la complejidad de kolmogorov :
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:
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:
y genera un archivo SVG de 547 bytes:
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:
Para ver la estructura, aquí está el SVG renderizado con
fill="none"
todo y algunos colores de relleno cambiados a colores de trazo:fuente
SVG (
462 460 454 429 384365 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.
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!
fuente
fill="none"
al grupo o ajustando la curva.<rect>
debe tener altura en74
lugar de78
. Y lo convierten en un ahorro de 5-char para reemplazarlo con un<path>
tantofill
ystroke
,stroke-width="18"
y luego se movió dentro de la<g>
y lo comúnstroke-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.Mathematica
787612600514506bytesSorprendente cantidad de código necesaria. Seguramente será golpeado.
Forma no golfista
Golfed
fuente
HTML + ES6, 533
Fragmento (modificado):
fuente
serif
, que ni siquiera es una fuente específica ...HTML + CSS,
676636625bytesEsto se puede jugar mucho, deshaciéndolosAhora usando transformaciones para centrar todo en lugar deleft:XXXpx
y usando algún tipo de centrado.left:XXXpx
.Nota: Esto funciona mejor / como se esperaba en Firefox en Windows
El resultado final se ve así:
fuente
ActionScript 3.0, 491 bytes
Forma de golf:
Salida: http://megaswf.com/file/2708781.swf
fuente
var ww=new WarmWelcome(); stage.addChild(ww);
y dibuje en Flash con el enlace AS3:)
MATLAB R2013a,
551541Este 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:
Salida (rasterizada):
fuente
LaTeX / TikZ (613 bytes)
El resultado de
pdflatex
es un archivo PDF con el sombrero como gráficos vectoriales y un cuadro delimitador ajustado.Sin golf
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.
fuente
Perl + TK: 555
Las nuevas líneas son solo para facilitar la lectura, aunque me perdí de tantas variables.
Aquí hay una foto:
No creo que sea casi perfecto en píxeles, pero está lo suficientemente cerca :)
fuente