Cuando me topé con esta pregunta , recordé que una vez también había visto reglas precisas para la construcción de la bandera de Corea del Sur. Y esta es una construcción bastante diferente.
¡Entonces debes dibujar una construcción exacta de este ahora!
Especificación
Puede representar la bandera en un archivo o pantalla usando gráficos vectoriales o de trama. Si su salida está rasterizada, su imagen debe tener dimensiones de 450x300 píxeles o más.
Todas las relaciones y posiciones de longitud deben ser exactamente como se muestra en el siguiente diagrama:
Tenga en cuenta que los centros de los dos círculos pequeños se alinean con la diagonal.
Para los colores, debe usar la siguiente paleta:
- Blanco: #FFFFFF
- Negro: # 000000
- Rojo: # C60C30
- Azul: # 003478
El límite negro no debe dibujarse a menos que su sistema de dibujo no le permita especificar un lienzo 3: 2 por razones técnicas (de lo contrario, debe usar un lienzo 3: 2 y la bandera debe llenarlo todo). Si necesita agregar el límite, puede ser arbitrariamente grueso; la bandera debe considerarse estrictamente dentro del límite negro. No se deben dibujar otras líneas de ayuda o indicadores de longitud. Es decir, la bandera debería aparecer exactamente como en la primera imagen.
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
CountryData["ROK","Flag"]
que no cuenta?Respuestas:
PHP / HTML / SVG, 324
(saltos de línea agregados para legibilidad)
Los datos comprimidos se expanden a los mismos datos SVG que mi respuesta anterior que se muestra a continuación, pero con dos cambios para ayudar a la compresión:
Las dos
<use>
secciones se expanden al contenido original de la<defs>
sección. Esto hace que el texto fuente sea más largo, pero reduce la entropía para que se comprima mejor.En el primer
<g>
elemento, cambiétransform=translate(36,24)rotate(33.69)
atransform=rotate(33.69)translate(43.27)
. Esto tiene el mismo efecto geométricamente, pero se comprime mejor porque la secuencia><g transform=rotate(
ahora aparece dos veces.De forma predeterminada, PHP servirá esto como
Content-Type: text/html
, por lo que la sintaxis XML no válida no debería ser un problema.SVG / HTML, 463
El analizador HTML no está demasiado preocupado por la sintaxis correcta, por lo que podemos eliminar las comillas en los parámetros siempre que no contengan espacios. Debería ser posible exprimir esto aún más con un poco de Javascript.
fuente
Python + Pycairo,
371 370366 bytesEmite un pequeño archivo SVG llamado
F
.fuente
C(*[.77,0,.05,.2,.19,.47][i::2])
es más corto queC(*[(.77,.05,.19),(0,.2,.47)][i%2])
s=SVGSurface("F",12,8);c=Context(s)
lugar de soloc=Context(SVGSurface("F",12,8))
?HTML + CSS,
966 906 843 792762 bytesNo es un ganador en cualquier momento, pero es muy divertido dibujar en CSS. Sin embargo, esto se puede jugar mucho.
CSS, HTML :
;border:1px solid
es solo para mostrar ya que la<body>
etiqueta tiene límites claros que pueden ser observados por el Inspector o herramientas similares, según lo establecido por el OPNOTA Solo funciona en Firefox (o Chrome canary / dev) debido al uso de transformaciones y gradientes no específicos del proveedor.
Véalo en acción
fuente
0deg
->0
(dos veces) y eliminarleft:0
dea:before
. En HTML puedes usar<p><ul></ul>
. (<p>
se cerrará implícitamente antes<ul>
):before{content:''}
, y:after{content:''}
son más largas que acaba de añadir otro elemento (a pesar de este hecho, mirando mejor).-webkit-
antes de todos lostransform:
s, ¡pero no hace falta decir que eso lo haría un poco más largo!BBC básico,
349343 caracteres ASCII, tamaño de archivo tokenised 330Descargue el emulador en http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
El uso de los colores correctos agregó mucho, pero el golf de todos los comandos gráficos hasta los códigos VDU sin procesar proporciona un ahorro de 6 caracteres en general en comparación con mi publicación original. Todos los gráficos en la BBC micro se realizan a través de códigos de control ASCII específicos de la máquina, por lo que en lugar de usar comandos gráficos de alto nivel, puede alimentar bytes directamente al controlador VDU (generalmente más corto pero con un gran costo para la legibilidad). Un valor que termina en punto y coma en lugar de coma es una representación little endian de 16 bits de 2 bytes.
Versión sin golf
Al comienzo del programa muevo el origen al centro de la pantalla.
No dibujo semicírculos grandes de colores. En su lugar, ejecuto un bucle que dibuja pequeños círculos rojos y azules, girando en sentido antihorario. Hago casi 3 revoluciones completas (comenzando con el azul a la derecha) que obviamente es más que suficiente para completar el disco. Me detengo en la tercera revolución, justo cuando el azul en la esquina inferior derecha está en la posición correcta para alinearse con las barras (que deben trazarse).
Cuando el ángulo es correcto, dibujo una de las barras. El vector x, y para dibujar el pequeño círculo azul actual sirve para indicar en qué dirección debe estar la barra. Para cada una de las 3 revoluciones,
a*7DIV44
se calcula un valor diferente del número entero , que indica si se debe dibujar la primera, segunda o tercera barra, con su borde interno a 6 / 8,7 / 8 o 8/8 unidades del centro ( de acuerdo con las unidades utilizadas en la especificación de la pregunta.) Debido a que las unidades del programa son 1/4 de las de la especificación, esta sigue siendo una media unidad, por lo que dividimos por 2 nuevamente antes de guardar en la variable ´b´ para evitar la reducción a la mitad más tarde.Las barras se dibujan sólidas, luego se elimina el centro si es necesario. Esto evita que los pliegues se unan a medias barras. La variable z indica si se debe cortar una barra. Es decir, cuando y es negativo para las barras del medio y cuando x es positivo para las otras barras.
MOVE
Es un movimiento absoluto.MOVEBY
Es un movimiento relativo.PLOT133
considera las dos últimas posiciones del cursor de gráficos, más la nueva especificada (en coordenadas relativas) como tres esquinas de un paralelogramo, y traza ese paralelogramo.Salida (y discusión de las limitaciones del idioma)
Seleccioné un modo de pantalla de 1280x800 píxeles lógicos = 640x400 píxeles físicos, que por defecto tiene un fondo negro. Sobre esto dibujo un rectángulo blanco de -600, -400 a 600,400 para que actúe como mi "lienzo".
BBC Basic puede manejar 16 colores a la vez, desde una paleta reprogramable. Pero solo admite el color de 18 bits, mientras que la pregunta especifica los colores como 24 bits. Los colores lo más cerca posible.
fuente
Tortuga Python 3 (
552549 bytes)( Imagen a tamaño completo )
Editar: ahora que tenemos fragmentos de pila, aquí hay una prueba de fragmentos de pila con Skulpt , con la ayuda de la respuesta de ArtOfCode aquí . Desafortunadamente, Skulpt aún no ha implementado Python por completo, así que tuve que mutilar la mitad de mi código para que esto funcione. En otras palabras, este fragmento solo pretende indicar cómo funciona mi programa (sin necesidad de abrir Python).
(Además, estoy descubriendo que esto podría no funcionar en algunos navegadores ...)
Código actual:
Dado que la tortuga es muy lenta, si desea resultados instantáneos, puede agregar
t.tracer(0)
después de la primera línea antes de ejecutar el script.Nota: por alguna razón, la tortuga sigue dibujando lo que parecen píxeles negros adicionales a pesar de que ya lo he llamado
up()
, y no tengo idea de por qué ...fuente
HTML + ES6, 388
Si su navegador admite ES6, puede verlo en JSFiddle o ejecutar el fragmento.
Construye la bandera con algunas formas básicas, girando el lienzo primero para tener en cuenta los ángulos.
fuente
<canvas width=576 height=384 id=D><script>c=D.getContext('2d')
es 9 bytes menos. Además, dado que toda la página es blanca, creo que debe dibujar el borde.Mathematica
404450fuente
C ++ DEMASIADO GRANDE
Intenté esto usando mi biblioteca de dibujo PPM hecha en casa . Es técnicamente escalable, pero estoy limitado por mi función de relleno recursivo porque no es confiable y le gusta segmentar, creo que está usando demasiada memoria, por lo que no dejaré que el usuario configure la escala. La imagen es irregular porque las coordenadas que ingresé para cada esquina de las barras están ligeramente apagadas.
Lo configuré para comenzar con un fondo negro, luego puse un círculo blanco en el medio, luego círculos rojos y azules en eso. Se usaron rellenos recursivos para agregar el resto de rojo y azul. Luego dibujó rectángulos con líneas blancas para marcar las barras negras. Divida el fondo negro en 4 secciones con líneas blancas y use 4 rellenos recursivos para hacer que cada sección sea blanca. Hacerlo en 1 pasada habría causado una falla predeterminada. Todavía es muy lento para renderizar.
Código principal sin golf (el resto de la biblioteca es demasiado grande, jugar al golf no importa)
fuente
PostScript ,
572477 bytesCódigo de golf:
Código sin golf:
Resultado:
fuente
Python 2, 483 bytes
Posibles mejoras:
Salida como texto PPM, uso:
versión beta sin golf
fuente