Prefacio
¡Hay muchos desafíos de "dibujar x bandera", y al buscarlo resulta que no hay desafíos para dibujar el Union Jack! Siento que esta sería una bandera más difícil de dibujar, pero aún así debería ser posible.
Desafío
Dibuja la Union Jack. Puede enviarse a un archivo en cualquier formato de archivo de gráficos disponible libremente o dibujarse en la pantalla.
- Se aplican las reglas de Code Golf, gana el código más corto en bytes.
- Se aplican lagunas estándar.
- No se permiten construcciones para dibujar banderas.
Las dimensiones serán las siguientes. Tamaño mínimo 600x300 píxeles (o unidades si su idioma solo admite gráficos escalables). Error máximo 1 píxel.
Los colores serán rojo, blanco y azul según lo definido por su idioma o su documentación, o # CC0000, #FFFFFF y # 003399 por página de Wikipedia.
code-golf
kolmogorov-complexity
graphical-output
Shaun Wild
fuente
fuente
Respuestas:
BBC BASIC
Rev B, 234 bytes
En lugar de dibujar una cruz blanca y una roja, dibujamos 100 cruces progresivamente más estrechas, cambiando del fondo blanco al primer plano rojo en una coordenada de 60.
Descargue el intérprete gratis en http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Totalmente golfizado, 249 bytes
Códigos de VDU de un solo byte, por ejemplo,
25,0
combinados en little endian de doble byte, por ejemplo,25;
y uso máximo de constantes para valores comunes. Palabras clave comprimidas en forma abreviada, p. Ej.FOR
=>F.
(El intérprete se expande automáticamente).Semigolfed
Códigos de VDU sin procesar. En BBC BASIC, los caracteres pueden enviarse al controlador VDU como
VDU65
(imprime una A). Hay ciertos caracteres especiales particulares de la BBC para los gráficos. Estos deben ser seguidos por varios otros bytes para especificar coordenadas, etc. Aquí usamosPLOT
=>VDU25
,GCOL
=>VDU18
,ORIGIN
=>VDU29
.Primero dibujamos la mitad de las partes diagonales: 2 triángulos azules y 2 paralelogramos rojos. Luego cambiamos la escala de -1 a +1 y dibujamos la otra mitad. Finalmente dibujamos las partes horizontal y vertical en la parte superior: 2 rectángulos blancos para formar una cruz blanca, luego 2 rectángulos rojos. La imagen después de la primera iteración del bucle se muestra a continuación, junto con la imagen final.
Código sin golf
BBC basic recuerda las últimas 2 ubicaciones del cursor de gráficos. PLOT81 dibuja un triángulo entre las nuevas coordenadas especificadas y estas dos últimas ubicaciones. PLOT113 y PLOT117 dibujan un paralelogramo de manera similar: se deben dar tres esquinas del paralelogramo en el orden en que se encuentran alrededor del perímetro. Los últimos tres bits del código PLOT definen si las coordenadas dadas son absolutas o relativas, y si se utiliza el color frontal o de fondo. Los bits más significativos definen qué tipo de forma se dibuja (punto, línea, triángulo, paralelogramo, rectángulo, etc.)
fuente
SVG, 298 bytes
la puntuación excluye 3 nuevas líneas innecesarias agregadas para mayor claridad.
Inspirado por la respuesta eliminada de Siren (y en particular el ahorro en bytes de la omisión
</svg>
al final del documento), se me ocurrió un SVG que es dimensionalmente correcto y un poco más corto.Consiste en una ruta azul y una ruta roja (llena, sin trazos) para las partes diagonales y una ruta roja (llena, con un borde blanco de 20 unidades) para la cruz final. Debido al grosor del borde blanco, las dimensiones especificadas de la cruz deben exceder las dimensiones requeridas en 10 alrededor.
Esto funciona bien para mí en Microsoft IE y Edge. A veces muestra una advertencia de "contenido adicional al final del documento" en Chrome.
Así es como aparece sin y con la cruz final. Se requieren 8 puntos para describir el camino azul, 10 puntos para describir el camino rojo y 12 puntos para el cruce final. No es necesario indicar las intersecciones de líneas rectas dentro de los dos primeros caminos.
fuente
PS If anyone wants to argue that SVG isn't a programming language (and I'd be very inclined to agree), consider this a PHP program in the style of many PHP submissions to this site which just echo literal text.
Logotipo,
260239 bytes(Intérprete XLogo)
Utilicé el intérprete XLogo basado en Java, ya que era una de las pocas implementaciones de logotipos que pude encontrar, que admite la configuración del tamaño de la ventana de salida.
El editor XLogo normalmente guarda los archivos como procedimientos que deben llamarse. Este programa está escrito para pegarse en la ventana inmediata. Esto ahorra unos 9 bytes.
Dado que no se requerían colores exactos, me regrese a esto para usar números de color integrados que ahorraron varios bytes. Si desea ver una versión con colores RGB exactos, consulte las revisiones. También sustituí un cálculo trigonométrico con un equivalente más corto.
Sin gofres con comentarios
El único truco real aquí es cambiar los colores para la segunda pasada de un bucle y aprovechar la
wrap
función que nos permite dibujar las franjas horizontales con muy poco esfuerzo. Dado que la altura y el ancho de la bandera son factores de 600, podemos avanzar 600 para rayas verticales u horizontales y terminar nuevamente en el centro. Esto evita tener casos separados para cada uno, incluso si dibuja la barra vertical el doble de veces. Estamos ahorrando espacio de código, no ciclos de reloj.fuente
Procesamiento, 312 bytes
Este es el tipo de rompecabezas donde el procesamiento es bastante eficiente.
Resultados en:
fuente
Python 2, 265 bytes
Salida como PPM binario, uso:
L
representa un corte vertical de las partes diagonales yF
usa la (tipo de) simetría para guardar el código y calcular los índices para las partes superior e inferior.fuente
Posdata (166 bytes)
Versión no tokenizada:
Salida:
fuente