Dibuja la bandera nacional de Francia


106

Se han publicado muchos otros desafíos de la bandera, pero ninguno para la bandera nacional de Francia . Esta semana parece un momento apropiado.

Produzca esta bandera en la menor cantidad de bytes posible:

bandera francesa

  • La imagen debe tener una relación de 3: 2, con un tamaño de al menos 78 píxeles de ancho y 52 píxeles de alto.
  • Cada franja ocupa un tercio del ancho.
  • Los colores de la raya de izquierda a derecha son RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • La imagen se puede guardar en un archivo o canalizarse sin formato a STDOUT en cualquier formato de archivo de imagen común, o se puede mostrar.
  • Alternativamente, envíe un bloque de texto de al menos 78 caracteres de ancho hecho de caracteres que no sean espacios en blanco que represente la bandera, utilizando códigos de color ANSI para colorearla. (Use azul, blanco y rojo estándar).
  • Las imágenes / bibliotecas de banderas incorporadas no están permitidas.

El código más corto en bytes gana.

Tabla de clasificación

El Fragmento de pila al final de esta publicación genera la tabla de clasificación a partir de las respuestas a) como una lista de la solución más corta por idioma yb) como una tabla de clasificación general.

Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:

## Language Name, N bytes

¿Dónde Nestá el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:

## Perl, 43 + 2 (-p flag) = 45 bytes

También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


44
Esos valores RGB no coinciden con su imagen. Por lo que veo, tienes RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
vaso de precipitados

8
Almacenar la paleta especificada de forma compacta es probablemente la parte más complicada de este problema en la mayoría de los idiomas. Dado eso, parece bastante injusto que las soluciones gráficas permitan la salida ANSI con una paleta estándar. ¿Por qué no permitir que las soluciones gráficas utilicen puro (0, 0, 255) / (255, 255, 255) / (255, 0 0) para nivelar el campo de juego?
JohnE

15
Cada franja ocupa un tercio del ancho. Podría ser más interesante usar la variante naval: mediante una regulación fechada el 17 de mayo de 1853, la marina volvió a usar las proporciones 30:33:37, que ahora continúa usando, ya que el aleteo de la bandera hace que las porciones estén más alejadas del driza parece más pequeña.
Ben Jackson

34
echo 🇫🇷no es lo suficientemente grande
Digital Trauma

55
@JohnE estoy de acuerdo. Las reglas sobre colores le dan a las soluciones de arte ASCII una gran ventaja. Tampoco hacen que el desafío sea más "difícil" (simplemente agrega bytes realmente) para los idiomas que pueden usar colores arbitrarios y descalifica a varios idiomas geniales que no pueden hacer colores arbitrarios.
un espagueti

Respuestas:


38

CJam, 23 22 bytes

00000000: 27 9b 22 5c 22 25 1f 22 66 7b 69 27 6d 32 37 2a  '."\"%."f{i'm27*
00000010: 7d 4e 5d 32 36 2a                                }N]26*

Lo anterior es un hexdump que se puede revertir con xxd -r .

Con el costo de dos bytes adicionales, para un total de 24 bytes , podemos usar colores de fondo en su lugar, haciendo que la salida sea un poco más bonita.

00000000: 27 9b 22 2c 2f 29 00 22 66 7b 69 27 6d 53 32 36  '.",/)."f{i'mS26
00000010: 2a 7d 57 4e 74 32 36 2a                          *}WNt26*

Cómo funciona

En ambos programas, utilizamos la secuencia de escape ANSI \x9bXYm, donde Xes 3para el color de primer plano y el color 4de fondo, y Yespecifica el color que se utilizará, para cambiar entre los tres colores de la bandera.

'<CSI>       Push the '\x9b' character (Control Sequence Introducer).
"\"%<US>"    Push the string of the ISO 8859-1 characters with code
             points 34, 37, and 31.
f{           For each character in the string, push the CSI and that
             character; then:
  i            Cast the character to integer.
  'm27*        Push 27 m's. The first completes the control sequence,
               the remaining 26 will be printed.
}
N]           Wrap the generated array and "\n" in an array.
26*          Repeat it 26 times.

El otro programa es similar.

Salida

salida


Actualmente no estoy seguro de qué tan alto debo hacer la "imagen".
Dennis

Fui con 78x30 en mi respuesta. Esas dimensiones en Lucida Console 9 pt (la fuente predeterminada para xterm) dieron la más cercana a 3: 2.
Mego

Podrías usar un bloque completo para 'belleza'
Matthew Roh

75

Pure Bash (en OSX), 84

El terminal OSX predeterminado admite emojis a todo color. No estoy seguro si esto cuenta como texto o salida gráfica.

printf -vs %26s
for i in {1..26}
do echo ${s// /🔵}${s// /⚪️}${s// /🔴}
done

La salida se ve así:

ingrese la descripción de la imagen aquí


Alternativamente:

Bash con utilidades OSX, 56

yes `dc -e3do26^d1-dn2/*p|tr 201 🔵🔴⚪️`|sed 26q

La dcexpresión:

  • calcula 3^26-1e imprime en ternario22222222222222222222222222
  • divide esto por 2, luego se multiplica por 3^26. Salida en ternario esto es1111111111111111111111111100000000000000000000000000

trluego traduce los 210 caracteres a 🔵⚪️🔴. yesemite esta línea indefinidamente. sed 26qdetiene la salida en 26 líneas.


51
Un terminal que admite emojis. Guau.
rr

66
La primera solución no utiliza los valores RGB correctos ni los colores ANSI estándar, ¿verdad?
Pomo de la puerta

@Doorknob Tienes razón, por supuesto, ninguna de las soluciones lo hace, por lo que esta respuesta puede estar excediendo la línea. Le pedí al OP que me aclarara
Digital Trauma el

3
Es solo Unicode.
undergroundmonorail

1
@steve Realmente no esperaba que esta respuesta se volviera tan popular, especialmente dado que hay preguntas con respecto a su validez . ¿Puedes decir si o no si crees que es válido? ¡Gracias!
Trauma digital

51

Desmos, 30 12 bytes

3x>10
3x<-10

Pruébalo en línea.

No estoy completamente seguro de si esto es válido, avíseme si hay algún problema.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Los colores predeterminados son rojo y azul en ese orden (creo), por lo que no es necesario configurarlos.
un espagueti

77
@ CᴏɴᴏʀO'Bʀɪᴇɴ Entonces es un generador de banderas al azar;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ No son aleatorios para mí: ingresar dos desigualdades de forma manual me pone rojo, luego azul.
Mego

1
Esto es extraño. Me estoy poniendo rojo y azul también.
lirtosiast

2
No creo que sea ... ni encaja con precisión la relación de aspecto.
Pomo de la puerta

51

Python 2, 47 bytes

s="[3%smF";print(s%4*26+s%7*26+s%1*26+"\n")*30

Contiene no imprimibles: aquí hay un hexdump (reversible con xxd -r):

00000000: 733d 221b 5b33 2573 3b31 6d46 223b 7072  s=".[3%s;1mF";pr
00000010: 696e 7428 7325 342a 3236 2b73 2537 2a32  int(s%4*26+s%7*2
00000020: 362b 7325 312a 3236 2b22 5c6e 2229 2a33  6+s%1*26+"\n")*3
00000030: 30                                       0

Utiliza códigos de escape ANSI para imprimir caracteres de colores en STDOUT. Elegí "F" para Francia. No hay enlace en línea porque ideone no admite códigos de escape ANSI en la salida.

Gracias a Dennis y xnor por algunos buenos consejos.

Captura de pantalla de xterm:

bandera


1
Tienes un espacio extra allí. in [0]->in[0]
mbomb007

2
1. Puede usar bytes ESC reales en lugar de \x1b. 2. Bold no parece ser necesario. 3. No estoy seguro de si eso también se aplica al arte ANSI, pero la pregunta parece exigir una relación de 3: 2.
Dennis

Es más corto a sub en los parámetros con el formato: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Presione F para rendir homenaje
Riking

44
El personaje se ve un poco mejor, por ejemplo print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m 21/11/2015

44

HTML / SVG, 76 bytes 87 88 121 122 149

Guardado 27 bytes gracias a @insertusernamehere

Ahorra 9 bytes gracias a @Joey

Guardado 1 bytes gracias a @sanchies

Ahorra 1 bytes gracias a @Neil

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52

Usando un montón de abuso de sintaxis HTML, esto puede ser bastante corto.


Captura de pantalla de salida:

Salida de bandera de Francia


O pruébelo (asegúrese de que su navegador sea compatible con SVG):

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52


3
Traté de vencerlo con CSS y ahora he desarrollado su SVG para que sea aún más pequeño que mi solución CSS. : D Esto es lo más corto que pude llegar a trabajar en Safari, Chrome y Firefox, tiene 122 bytes de largo:<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusernamehere

1
@insertusernamehere Gracias, ¡eso ahorró 27 bytes! Me las arreglé para seguir
jugando

3
Para mí, fill=#0055a4 />funciona también (no "), guardando un byte completo.
Sanchises

3
@sanchises un byte completo? o_O wow : D
developerbmw

44
@developerbmw En realidad, sería más impresionante ahorrar medio byte cuando lo piensas.
Sanchises

29

Brainfuck $ , 153 bytes

+++++++++++++[->>>++>+++++++>++++>>>>++++++++>+++<<<<<<<<<<]>>>+>>#->$#>$#+++++++>$--->+++++[<]<<+++++[->+++++>++++++<<]>+#>($#([-]>[.>]<[<])>>>>+++<<<<)

Emite la imagen con códigos de color ANSI. Elegí una altura de 30 como Mego .

La implementación de referencia de 2009 vinculada a la página de esolangs ha desaparecido. Puede ejecutarlo con este intérprete creado por mí, que admite todo, desde la página esolangs.

Brainfuck, 258 bytes

Esto es básicamente lo mismo, pero solo en el viejo Brainfuck.

>>+++++++++++++[-<<++>>>>++>+++++++>++++>++++>+++++>++++>++++++++>+++[<]<]>>+>>->>------>--->+++++[<]<<<++++[>+++++[->+++++<]>+[>>[.>]<[<]<-]>>>>>+++[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>------[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>+++[<]<++++++++++.[-]<<-]

O, si prefiere este en oOo CODE (984 bytes):

one day ThERe WIlL Be PEaCE iN ThIS wORlD
OnE DaY ThERe WiLl Be peaCe iN ThIS wOrld
one day theRe WIlL be pEaCE iN ThIS wORlD
OnE DaY theRe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCE iN ThIS wOrld
OnE DaY ThErE wilL bE PeaCe IN this woRlD
one day There will Be pEacE in ThiS woRld
one Day TheRe will Be PEaCE iN ThIS wOrLd
onE dAY thEre WilL Be PEaCE iN ThIs World
OnE DaY ThERe WIlL bE pEace in ThIS wORlD
OnE DaY thErE Will Be PeAce in this WoRLd
one dAY thErE wilL bE PeaCE in tHIs world
one day theRe WIlL Be PeAce iN tHIS wORlD
OnE DaY ThErE wIll be PEaCE iN ThIS wORlD
one dAY thERe WiLl be peace In THis worLD
onE dAy thErE WilL Be peACe in this world
one Day TheRe wIll Be pEace In thIs WORlD
OnE DaY ThERe WiLl Be peaCE iN ThIS wORlD
OnE day tHEre WIlL bE peace in tHiS World
oNE daY tHere WiLL be PEace IN this world
one day ThERe WIlL bE peaCe IN thIS wORlD
OnE DaY ThERe WIlL Be PEaCE iN THis WoRld
oNE daY thERe wiLL

25

Bash + ImageMagick, 60 77 73 bytes

convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"

(Uf, +17 caracteres debido a los requisitos de color que no noté antes ...)

Salidas al archivo a, en formato netpbm:

llama@llama:~$ convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
llama@llama:~$ file a
a: Netpbm image data, size = 78 x 52, rawbits, pixmap

También se puede generar en PNG, si cambia el nombre del archivo a a.png (+4 caracteres).

Salida:

ingrese la descripción de la imagen aquí


1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Trauma digital

@DigitalTrauma ¡Gracias! Eso ahorra 4 caracteres y no sale con un error. (Además, nunca supe que ImageMagick podía leer / escribir en STDIN.)
Pomo de la puerta

Puedes usar en -scalelugar de -sample; Además, la barra invertida no parece ser necesaria
Aditsu

25

LaTeX, 139 bytes

Gracias a @WChargin por guardar 21 bytes.

\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,‌​1,1!\z.94,.25,.21!\end{document}

Esto imprime la siguiente imagen de 12 cm * 8 cm en una página A4:

ingrese la descripción de la imagen aquí

Tenga en cuenta que "Página 1" también se imprime en la parte inferior de la página


1
Bueno, esto es aproximadamente 100 bytes más corto que mi asymptotesolución ...
Arcturus

1
s.\newcommand\z[1].\def\z#1para guardar un montón de bytes. Además, puede afeitarse unos pocos mediante el uso \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!-es decir, utilizar sus propios delimitadores en lugar de los apoyos para la agrupación
wchargin

1
También puede\input color
wchargin

1
Para completar, versión revisada (139 bytes):\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!\end{document}
wchargin

24

Pyth, 27 bytes

 .w*52[smmdGc3CM"\0U¤ÿÿÿïA5

Hay algunos caracteres no imprimibles, así que aquí hay un hexdump:

00000000   2E 77 2A 35  32 5B 73 6D  6D 64 47 63  33 43 4D 22  .w*52[smmdGc3CM"
00000010   5C 30 55 A4  FF FF FF EF  41 35                     \0U.....A5

Esto crea un archivo o.png, que tiene exactamente 78 píxeles de ancho y 52 píxeles de alto:

ingrese la descripción de la imagen aquí

Explicación:

.w*52[smmdGc3CM"........
               "........  a string containing the bytes 
                          0, 85, 164, 255, 255, 255, 239, 65, 53
             CM           convert them to integers
           c3             split into 3 lists
      smmdG               duplicate each list 26 times
     [                    put them into a list
  *52                     and duplicate it 52 times
.w                        save it as an image o.png

1
Por un segundo, pensé que había entendido mal la especificación PNG.
primo

1
save it as an image o.png, pero no hay ".png" en ninguna parte?
rev

1
@AsidShout ¿Cómo se llama al programa? Si lo usa python3 pyth.py code.pyth, puede encontrarlo en el mismo directorio.
Jakube

20

HTML (modo peculiar), 68 bytes

Esto utiliza el modo peculiaridades para representar la bandera.

El HTML es MUY inválido, pero funciona en un navegador Android 4.4.2 estándar y en Firefox 42.0 (en Windows 7 x64).

<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>

La bandera se representa con el tamaño correcto y los colores rojo y azul estándar. Todas las páginas web comienzan con un fondo blanco estándar.



Como alternativa:

Una versión HTML5 perfectamente válida (141 bytes):

<!DOCTYPE html><title>x</title><table style=width:78px;height:52px><tr><td style=background:#0055a4><td><td style=background:#ef4135></table>

Verifique su validez en: https://html5.validator.nu/

Impresión de pantalla del resultado:

resultado de validación


1
¿Estás seguro? Cuando tengo un archivo HTML con solo esta línea, no funciona en Firefox, Chrome y Safari. Si el archivo contiene otros elementos HTML después de esa línea, funciona para mí. ¿Entonces quizás no puedes descartar el final >?
insertusernamehere

1
"Perfectamente válido"? Debería ser style="..."si eso es lo que busca en el segundo ejemplo.
mbomb007

3
@ mbomb007 Lo que voy a hacer es crear el código HTML válido más pequeño. Se valida con el validador oficial, por lo que es un HTML perfectamente válido . Puedes probarlo tú mismo si no crees.
Ismael Miguel

1
@ mbomb007 Además, las comillas faltantes son el problema más pequeño: no hay <html>, no <head>, no <body>, no </tr>, no </td>y no se cierran todas las etiquetas que faltan.
Ismael Miguel

1
@insertusernamehere Tenías razón. También estaba molestando en Android. Lo probé en jsfiddle. Pero al acceder data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, no estaba funcionando. Lo arregló ahora y usa el enlace para probarlo.
Ismael Miguel

17

TI-Basic, 52 44 42 bytes

GridOff
AxesOff
11
Shade(-Ans,Ans,Xmin,Xmin/3
Shade(-Ans,Ans,Xmax/3,Xmax,1,1,Ans

(supone un área de gráfico predeterminada [-10,10,1] por [-10,10,1])

Sería 4 bytes más corto sin las primeras 2 líneas, pero por defecto tendría ejes y no se vería tan bien.

Se ve como esto:

ingrese la descripción de la imagen aquí

Si el sombreado no es válido para el desafío, ¡avísame!

Sin las primeras 2 líneas, se ve así:

ingrese la descripción de la imagen aquí


También incluiría la versión sin las primeras tres líneas solo como una comparación.
GamrCorps

1
Creo que puedes pasar de Ymin a Ymax. También puede asumir una pantalla predeterminada de -10 a 10. Tampoco estoy seguro de la validez de esto, ya que las regiones roja y azul solo están medio sombreadas.
lirtosiast

@ThomasKwa Edité mi publicación para mostrar por qué no usé solo Ymin e Ymax. No me di cuenta de que podía asumir una pantalla predeterminada, pero no tienes claro cuál es esa pantalla predeterminada. ¿Podrías aclararlo por favor? Sobre el tema "medio sombreado", así es como TI-Basic sombrea las cosas, si no es válido, lo cambiaré de inmediato.
DanTheMan

1
Una pantalla predeterminada es Ymin = Xmin = -10, Ymax = Xmax = 10. La calculadora comienza con esas configuraciones de ventana y AxesOn, etc., para que pueda asumirlas.
lirtosiast

1
@Doorknob Hasta donde yo sé, es imposible hacerlo sin recurrir a la brujería.
DanTheMan

17

ffmpeg, 110 113 116 117 119 108 100 bytes

Pantalla, usando ffplay, 100 bytes:

ffplay -f lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3

Guardado en el archivo, usando ffmpeg, 108 bytes:

ffmpeg -lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3 -t 1 .png

La versión actual del comando cancelará con un error PERO generará una sola imagen ".png", la misma que se muestra a continuación.

ingrese la descripción de la imagen aquí


8
Guau. Abusando de ffmpeg para hacer imágenes ...
Cole Johnson

Heh, vi esta pregunta y pensé en hacer lo mismo. Buen trabajo haciéndolo compacto. Si está permitido, puede hacerlo un poco más pequeño usando en whitelugar de #ffffff: los valores deben ser los mismos.
llogan

Lo sé. No se molestó lo suficiente. Lo hare ahora.
Gyan

¿Funciona #fff?
ev3commander

No. Pero puedo omitir la f en f.png
Gyan

16

CSS, 127 128 144 bytes

body:before,body:after{content:'';float:left;width:33%;height:100%;background:#0055a4}body:after{float:right;background:#ef4135}

No necesita otra etiqueta, funciona únicamente con el bodyelemento.

Ediciones

  • Guardado 16 bytes al eliminar display:block;y algunos ;.
  • Guardado 1 byte , eliminado el final }.

66
Aunque técnicamente CSS no es un lenguaje de programación según nuestras definiciones.
Conor O'Brien

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Lo sé, solo quería vencer a SVG .
insertusernamehere

44
@ CᴏɴᴏʀO'Bʀɪᴇɴ tiene razón, esta no es una respuesta válida.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ si el css se guardó como un archivo SASS, ya que SASS es un lenguaje de script ¿sería una respuesta válida?
fcalderan

66
Sí, CSS normal es un archivo SASS válido.
ev3commander

16

JavaScript, 140 143 147 151 153 bytes

   with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=2;i--;fillRect(i*52,0,26,52))fillStyle=i?"#ef4135":"#0055a4"


Ediciones

  • Se guardaron 2 bytes al reemplazar 2*i*26con i*52. Gracias a Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Guardado 4 bytes refactorizando el forbucle. Gracias a ETHproductions .
  • Se guardaron 2 bytes mediante el uso de la withdeclaración. Gracias a Dendrobium .
  • Se guardaron 2 bytes al convertir el incremento en decremento. Gracias a Shaun H .
  • Guardado 3 bytes al reemplazar fillStyle=["#0055a4","#ef4135"][i]con i?"#ef4135":"#0055a4".

3
2*i*26puede convertirse 52*i, no?
Conor O'Brien

77
@ CᴏɴᴏʀO'Bʀɪᴇɴ Por supuesto que puede. Gracias. Está más allá de mi hora de dormir.
insertusernamehere

2
Puede reducir 2 bytes utilizando la withdeclaración:with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=0;i<2;fillRect(i++*52,0,26,52))fillStyle=["#0055a4","#ef4135"][i]
Dendrobium

2
guardar un byte: x=(d=document).body.appendChild(d.createElementlienzo ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Eso está bien. Muchas gracias.
insertusernamehere

13

R, 59 bytes

frame();rect(0:2/3,0,1:3/3,1,,,c("#0055a4",0,"#ef4135"),NA)

Se muestra la salida:

ingrese la descripción de la imagen aquí

También se pueden hacer 49 bytes con

barplot(rep(1,3),,0,col=c("#0055a4",0,"#ef4135"))

si no te importan los ejes y bordes:

ingrese la descripción de la imagen aquí


2
La relación parece incorrecta. Creo que tiene una proporción de 2: 3 en un rectángulo de un solo color en lugar de una relación de 3: 2 en toda la bandera.
Fatalize

La relación se puede ajustar manualmente cambiando el tamaño de la ventana de trazado.
Flodel

3
Para calificar, su entrada debe funcionar 'fuera de la caja'. De lo contrario, cualquiera puede publicar una solución de 6 píxeles y decir 'Puede acercar manualmente'.
Sanchises

44
Tú dices 'hachas', yo digo 'asta de bandera'.

2
@sanchises: soy francés y digo jodidamente. LIBERTE!
flodel

12

Blitz 2D / 3D , 154 bytes

Esto produce exactamente lo mismo que el ejemplo dado en la pregunta (excepto por el suavizado en los bordes donde se encuentran los colores).

Graphics 800,533
ClsColor 255,255,255
Cls
Color 0,35,149
Rect 0,0,267,533
Color 237,41,57
Rect 533,0,267,533

Se muestra la salida y se ve así:

ingrese la descripción de la imagen aquí


12

Mathematica, 63 94 103 bytes

Cuando vi este desafío por primera vez, pensé en Sweet ¡Mathematica sería perfecto para esto!hasta que noté que las incorporaciones estaban prohibidas: '(

¡Pero espera! ¡Puedo usar gráficos de barras!

r=RGBColor;BarChart[{1,1,1},ChartStyle->{r@"#0055a4",White,r@"#ef4135"},BarSpacing->0,AspectRatio->2/3]

(Gracias a Martin Büttner por eliminar 5 bytes pero agregar 16)

Se ve como esto:

ingrese la descripción de la imagen aquí

Si agrega, ,Axes->Nonese ve así:

ingrese la descripción de la imagen aquí

Si no le importa el borde, puede usar esto: (95 bytes)

r=RGBColor;BarChart[{1,1},ChartStyle->{r@"#0055a4",r@"#ef4135"},BarSpacing->1,AspectRatio->2/3,Axes->None]

Se ve como esto:

ingrese la descripción de la imagen aquí

Sin hachas:

ingrese la descripción de la imagen aquí


3
Axes->None. También debe especificar AspectRatio->2/3. El cambio de nombre RGBColores simple: r=RGBColor;...r["..."]. También puede usar la notación de prefijo para guardar dos bytes más r@"#0055a4".
Martin Ender

Si no necesita el esquema, intente BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. El rojo se ve lo suficientemente cerca.
DavidC

@DavidCarraher Meh, dado que la pregunta especifica un valor RGB particular, ese debe usarse exactamente.
Martin Ender

Mi recomendación principal fue dibujar dos rectángulos, no tres. Sin embargo, técnicamente tienes razón sobre el rojo.
DavidC

¿No invalidarían las fronteras alrededor de las barras esta solución?
LegionMammal978

11

Javascript (ES6) 117 bytes

Lo dibuja en la consola

for(i=c=s=[];i<156;c[i++]=`color:${[,'blue','#fff'][i%3]||(s+=`
`,'red')}`)s+='%c'+'+'.repeat(26);console.log(s,...c)


2
Para 'white'creo que es más corto que hacer: #fff. Además, los colores rojo y azul deben coincidir con los colores especificados en la especificación
Downgoat

1
Puede guardar algunos bytes en i=c=s=[]lugar de i=0,c=[],s=''actualizar los colores que podrían ayudar un poco ...
Dom Hastings

1
@ Vɪʜᴀɴ Al generar texto, puede usar los colores estándar ( redy blue). Es el segundo punto, contando desde abajo. Esto está dentro de las especificaciones.
Ismael Miguel

@DomHastings Buen consejo, uso inteligente de la coerción. ¡Gracias!
George Reith

1
@sysreq Su texto en la consola ... No tengo control sobre la altura de línea de su consola. Tiene 78 caracteres de ancho y 52 de alto.
George Reith

10

pb , 68 bytes

cw[Y!52]{cccw[X!26]{b[77]>}ccccw[X!52]{b[77]>}cw[X!78]{b[77]>}<[X]v}

¡Guau, un desafío para el que pb es realmente bueno! Esos son pocos y distantes entre sí.

Cuando estaba escribiendo la especificación para pb, incluí la salida en color principalmente como una broma. El idioma lleva el nombre de un "pincel", ¿por qué no haría color? Además de los programas de ejemplo, esta es la segunda vez que lo uso. Se implementa con códigos ANSI según lo requiera la pregunta.

Utilicé 'M' como personaje con el que salir porque es bastante denso.

Salida:

Cambié el tamaño de la captura de pantalla verticalmente a dos tercios de su altura porque las letras no son cuadradas. El resultado es 78 por 52, pero la captura de pantalla original parece realmente incorrecta.

Con comentarios y sangría y basura:

c               # Increase output colour by 1
                # 0 (White) -> 1 (Red)
                # Loop ends with output colour == 1, this is cheaper than
                # setting it back to white every time.

w[Y!52]{        # While the brush's Y coordinate is not 52:
    ccc           # Increase output colour by 3
                    # 1 (Red) -> 4 (Blue)

    w[X!26]{      # While the brush's X coordinate is not 26:
        b[77]       # Write 'M' at the brush's coordinates
        >           # Increase X coordinate by 1
    }             

    cccc          # Increase output colour by 4
                    # 4 (Blue) -> 8 mod 8 = 0 (White)

    w[X!52]{      # While the brush's X coordinate is not 52:
        b[77]       # (same as before)
        >         
    }             

    c             # Increase output colour by 1
                    # 0 (White) -> 1 (Red)

    w[X!78]{      # While the brush's X coordinate is not 78:
        b[77]       # (same as before)
        >
    }

    <[X]          # Set X back to 0
    v             # Increase Y by 1
}

78x30 le dará las dimensiones que desea para la salida del terminal.
Mego

@Mego Sí, pero no estoy seguro si está permitido.
metro subterráneo

El resultado resultante en xterm en la fuente predeterminada coincide con las dimensiones especificadas.
Mego

Sin embargo, me sentiría extraño midiendo el tamaño de la salida de la consola en cualquier cosa que no sea "personajes".
undergroundmonorail

1
Cuando tus personajes son 1.2x más altos que anchos, no son muy buenos píxeles.
Mego

10

C, 115 bytes

ingrese la descripción de la imagen aquí

#define c"[48;2;%d;%d;%dm%9c"
d=255;main(a){while(a++<9)printf(c c c c,0,85,164,0,d,d,d,0,239,65,53,0,0,0,0,10);}

Contiene no imprimibles:

00000000: 2364 6566 696e 6520 6322 1b5b 3438 3b32  #define c".[48;2
00000010: 3b25 643b 2564 3b25 646d 2539 6322 0a64  ;%d;%d;%dm%9c".d
00000020: 3d32 3535 3b6d 6169 6e28 6129 7b77 6869  =255;main(a){whi
00000030: 6c65 2861 2b2b 3c39 2970 7269 6e74 6628  le(a++<9)printf(
00000040: 6320 6320 6320 632c 302c 3835 2c31 3634  c c c c,0,85,164
00000050: 2c30 2c64 2c64 2c64 2c30 2c32 3339 2c36  ,0,d,d,d,0,239,6
00000060: 352c 3533 2c30 2c30 2c30 2c30 2c31 3029  5,53,0,0,0,0,10)
00000070: 3b7d 0a                                  ;}.

Para que este programa funcione, un par de cosas deben ser ciertas:

  • El terminal soporta el ESC [48;2;<r>;<g>;<b>m secuencia de escape "truecolor".
  • El terminal no es xterm, porque la implementación de xterm de lo anterior producirá colores ligeramente incorrectos.
  • El terminal ignora por completo los caracteres NUL.

También se ve mejor si el fondo de su terminal es negro.

Para cambiar a la altura de la bandera, pase los argumentos de la línea de comando al programa. Por cada argumento pasado, la bandera se vuelve una línea más corta. ¡No es un error, es una característica!

Salida:

ingrese la descripción de la imagen aquí


Tuve problemas para compilar esto con gcc(versión 5.1.1). ¿Alguna bandera específica necesaria para compilar? "ac: 1: 10: advertencia: ISO C99 requiere un espacio en blanco después del nombre de macro #define c" \ x1b [48; 2;% d;% d;% dm "
steve

1
@ Steve, ¿eso es una advertencia de que es un error?
Functino

1
@Steve Acabo de probarlo nuevamente, gcc 5.2.1. No hay banderas Produjo 12 advertencias pero creó un binario de trabajo.
Functino

disculpas - funciona bien - se confundió con las advertencias (y el hecho de que el código parece bastante críptico para un novato en C como yo)
steve

9

MATLAB, 82 79 78 bytes

x=[0 1 1 0];y(3:4)=2;fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)

La salida se ve así:


1
¿Qué versión de MATLAB? No funciona en r2013a ya que los colores deben ser números decimales en el rango [0,1].
Tom Carpenter

1
La siguiente línea funciona fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)y le ahorra 2 bytes. :) También usaría punto y coma en lugar de líneas nuevas para evitar que se impriman cosas adicionales.
Tom Carpenter

1
@TomCarpenter Espaciado en la escala de color 0-1, ha pasado un tiempo desde que tuve que especificar los colores. En cuanto a los puntos y comas / nuevas líneas, elegí la legibilidad en lugar de la escritura de la consola, pero he cambiado mi respuesta
costrom el

9

Visual Basic + Excel, 618 bytes

Solo curiosidad por ver cómo se puede jugar al golf.

EDITAR: curiosidad saciada, gracias a @Neil y @JimmyJazzx, 618 bytes se redujeron a 137 bytes

Sub a(): Columns("A:C").ColumnWidth = 26: Range("A1:A13").Interior.Color = RGB(0, 85, 164): Range("C1:C13").Interior.Color = RGB(239, 65, 53): End Sub

Bandera de Excel


1
Grabar una macro da como resultado un código terriblemente ineficiente. Prueba Range("A1:C13").Interior.ColorIndex = 5y Range("G1:I13").Interior.ColorIndex = 3que parece ser suficiente.
Neil

2
Lo siento, ese fue Excel 2003, y olvidé incluir el ActiveWorkbook.Colorspara especificar los valores exactos de RGB. Excel 2007 tiene opciones de color adicionales, pero no las conozco de antemano.
Neil

1
Obtengo 137 bytes con algunos cambios rápidos. Creo que puedes reducir esto más, pero estos son los cambios fáciles. Sub a():Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
JimmyJazzx

Tengo 135 conSub a:Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
Joey

9

CSS, 102 110 111 114 bytes

*{background:linear-gradient(90deg,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat


1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- un byte más corto
user2428118

1
en realidad un solo * es suficiente :) ¡Gracias!
Thomas Eschemann

1
+1; Puede guardar otro byte eliminando el final }.
insertusernamehere

1
Puede eliminar el primer color, ahorra 8 bytes.
Awashi

Puede reemplazar el último 66%con 0.
Mr_Green

8

Dyalog APL ( 47 44)

⎕SM←↑1 21 41{(''⍴⍨2/20)1⍺,⍵,⍨4↑0}¨2*8 11 10

Resultado:

bandera


2
puedes hacer 2*8 11 10?
lirtosiast

1
@ThomasKwa: gracias
marinus

8

iKe , 43 bytes

,(0 0;"|"\"#0055A4|#FFF|#EF4135";52#,&3#26)

Este es un ejemplo de un programa iKe de "tupla cruda": es solo una descripción de un origen ( 0 0), una paleta ( 3 7#"#0055A4#FFFFFF#EF4135") y un mapa de bits (+52#'&3#26 ). Debe ajustar una descripción como esta en una función o usar referencias a vistas si desea animarla.

La paleta es una forma muy simple de crear una serie de colores CSS, equivalentes hexadecimales de la especificación.

  3 7#"#0055A4#FFFFFF#EF4135"
("#0055A4"
 "#FFFFFF"
 "#EF4135")

Si los requisitos de color fueran menos estrictos, podríamos usar una de las paletas integradas de iKe y guardar una cantidad considerable de caracteres:

windows@7 0 4

bandera

Pruébalo en tu navegador .

Editar:

Se guardó un byte usando un #FFFcolor CSS corto para la franja blanca:

,(0 0;3 7#"#0055A4#FFFFFF#EF4135";+52#'&3#26)
,(0 0;"|"\"#0055A4|#FFF|#EF4135";+52#'&3#26)

Si alguien más está interesado en jugar con iKe, hay un manual sobre el repositorio de github . aquí hay otro problema que resolví usando iKe.

Edición 2:

Guardado un byte con una forma más sencilla de construir el mapa de bits:

+52#'&3#26
52#,&3#26

Mi pregunta en el OP no ha sido respondida, pero para el registro si se permiten requisitos de color más flexibles, este programa sería de 30 bytes usando la paleta de Windows 3.1:

,(0 0;windows@7 0 4;52#,&3#26)

bandera2

Desde que se publicó este problema, iKe ha obtenido una función que centra automáticamente las texturas dibujadas sin una posición, lo que podría ahorrar otros 3 bytes, pero esto sería contrario a las reglas:

,(;windows@7 0 4;52#,&3#26)

7

Octava, 77 76 bytes

s(98,49)=0;imshow(cat(3,[s w=s+255 w-18],[s+35 w s+41],[s+149 w s+57])/255);

Muestra la imagen:

ingrese la descripción de la imagen aquí


7

Procesamiento, 100 bytes

size(78,52);background(255);noStroke();fill(#0055A4);rect(0,0,26,52);fill(#EF4135);rect(52,0,26,52);

Muestra esto: Francia

(La solución ingenua es más corta que la primera).


Creo que los comandos de dibujo de Processing pueden aparecer antes que los píxeles presionando aquí: size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
JohnE

@JohnE Lol, sí, acabo de notar eso.
geokavel

@JohnE ¡Incluso mi solución súper básica es más corta que la tuya!
geokavel

jaja- parece que ambos lo complicamos
demasiado

¿Qué tal abusar de las instrucciones de la báscula? Esto funciona en sketchpad.cc pero podría romperse en el procesamiento 3:size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
JohnE

7

Ruby, 56 47 45 bytes

ASCII

$><<"\e[34z\e[37z\e[31z\n".gsub(?z,?m*27)*52

Sí, esto es mejor que el mío. Excepto que la barra del medio debe ser blanca.
iamnotmaynard

@iamnotmaynard Cierto, corregido. ¡Gracias!
Peter Lenkefi

7

PHP, 70 bytes

0000000: 424d 0000 0000 0000 0000 2300 0000 0c00  BM........#.....
0000010: 0000 2001 c000 0100 0800 a455 00ff ffff  .. ........U....
0000020: 3541 ef3c 3f66 6f72 283b 3665 343e 2469  5A.<?for(;6e4>$i
0000030: 3b29 6563 686f 2063 6872 2824 692b 2b2f  ;)echo chr($i++/
0000040: 3936 2533 293b                           96%3);

Lo anterior es un hexdump que se puede revertir con xxd -r. Alternativamente, también se puede generar con el siguiente script PHP:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Asumo la configuración predeterminada, ya que no tienen un .ini (puede deshabilitar su .ini local con la -nopción). Produce una imagen .bmp (288 x 192), que debe canalizarse a un archivo. Esto es tan grande como puedo hacerlo sin afectar el recuento de bytes.


Uso de muestra

$ xxd -r in.hex > france.php
$ php -n france.php > out.bmp
$ out.bmp

Salida

Bandera francesa


Estos colores no se ven bien. ¿Utilizan los valores RGB especificados en la pregunta?
Pomo de la puerta

@Doorknob Lo hacen. Comenzando en el byte 26, se define una paleta de colores de tres valores (bgr): A45500, FFFFFF, 3541EF.
primo

6

ShaderToy (GLSL), 147 bytes

void mainImage(out vec4 o,vec2 i){float x=i.x/iResolution.x*3.0;vec3 w=vec3(255,255,255);o=vec4((x<1.0?vec3(0,85,164):x<2.0?w:vec3(239,65,53))/w,1);}

Véalo aquí

No es particularmente emocionante. Estoy seguro de que hay formas de jugar más al golf; Tomaré un crack cuando llegue a casa.


3
El enlace redirige a shadertoy.com/error : /
Quentin
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.