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:
- 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 N
está 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
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 64140; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 42156; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
(0, 35, 149)
,(255, 255, 255)
,(237, 41, 57)
.echo 🇫🇷
no es lo suficientemente grandeRespuestas:
CJam,
2322 bytesLo 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.
Cómo funciona
En ambos programas, utilizamos la secuencia de escape ANSI
\x9bXYm
, dondeX
es3
para el color de primer plano y el color4
de fondo, yY
especifica el color que se utilizará, para cambiar entre los tres colores de la bandera.El otro programa es similar.
Salida
fuente
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.
La salida se ve así:
Alternativamente:
Bash con utilidades OSX, 56
La
dc
expresión:3^26-1
e imprime en ternario22222222222222222222222222
3^26
. Salida en ternario esto es1111111111111111111111111100000000000000000000000000
tr
luego traduce los 210 caracteres a 🔵⚪️🔴.yes
emite esta línea indefinidamente.sed 26q
detiene la salida en 26 líneas.fuente
Desmos,
3012 bytesPruébalo en línea.
No estoy completamente seguro de si esto es válido, avíseme si hay algún problema.
fuente
Python 2, 47 bytes
Contiene no imprimibles: aquí hay un hexdump (reversible con
xxd -r
):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:
fuente
in [0]
->in[0]
\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.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
personaje se ve un poco mejor, por ejemploprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 bytes
87 88 121 122 149Guardado 27 bytes gracias a @insertusernamehere
Ahorra 9 bytes gracias a @Joey
Guardado 1 bytes gracias a @sanchies
Ahorra 1 bytes gracias a @Neil
Usando un montón de abuso de sintaxis HTML, esto puede ser bastante corto.
Captura de pantalla de salida:
O pruébelo (asegúrese de que su navegador sea compatible con SVG):
fuente
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
funciona también (no"
), guardando un byte completo.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.
Mostrar fragmento de código
Brainfuck, 258 bytes
Esto es básicamente lo mismo, pero solo en el viejo Brainfuck.
O, si prefiere este en oOo CODE (984 bytes):
fuente
Bash + ImageMagick,
607773 bytes(Uf, +17 caracteres debido a los requisitos de color que no noté antes ...)
Salidas al archivo
a
, en formato netpbm:También se puede generar en PNG, si cambia el nombre del archivo a
a.png
(+4 caracteres).Salida:
fuente
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
lugar de-sample
; Además, la barra invertida no parece ser necesariaLaTeX, 139 bytes
Gracias a @WChargin por guardar 21 bytes.
Esto imprime la siguiente imagen de 12 cm * 8 cm en una página A4:
Tenga en cuenta que "Página 1" también se imprime en la parte inferior de la página
fuente
asymptote
solución ...s.\newcommand\z[1].\def\z#1
para 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\input color
\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}
Pyth, 27 bytes
Hay algunos caracteres no imprimibles, así que aquí hay un hexdump:
Esto crea un archivo
o.png
, que tiene exactamente 78 píxeles de ancho y 52 píxeles de alto:Explicación:
fuente
save it as an image o.png
, pero no hay ".png" en ninguna parte?python3 pyth.py code.pyth
, puede encontrarlo en el mismo directorio.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).
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):
Verifique su validez en: https://html5.validator.nu/
Impresión de pantalla del resultado:
fuente
>
?style="..."
si eso es lo que busca en el segundo ejemplo.<html>
, no<head>
, no<body>
, no</tr>
, no</td>
y no se cierran todas las etiquetas que faltan.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.TI-Basic,
524442 bytes(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:
Si el sombreado no es válido para el desafío, ¡avísame!
Sin las primeras 2 líneas, se ve así:
fuente
ffmpeg,
110113116117119108100 bytesPantalla, usando ffplay, 100 bytes:
Guardado en el archivo, usando ffmpeg, 108 bytes:
La versión actual del comando cancelará con un error PERO generará una sola imagen ".png", la misma que se muestra a continuación.
fuente
white
lugar de#ffffff
: los valores deben ser los mismos.CSS, 127
128144bytesNo necesita otra etiqueta, funciona únicamente con el
body
elemento.Ediciones
display:block;
y algunos;
.}
.fuente
JavaScript, 140
143147151153bytesEdiciones
2*i*26
coni*52
. Gracias a Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
bucle. Gracias a ETHproductions .with
declaración. Gracias a Dendrobium .fillStyle=["#0055a4","#ef4135"][i]
coni?"#ef4135":"#0055a4"
.fuente
2*i*26
puede convertirse52*i
, no?with
declaració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]
x=(d=document).body.appendChild(d.createElement
lienzo).getContext
2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 bytes
Se muestra la salida:
También se pueden hacer 49 bytes con
si no te importan los ejes y bordes:
fuente
Blitz 2D / 3D ,
154bytesEsto produce exactamente lo mismo que el ejemplo dado en la pregunta (excepto por el suavizado en los bordes donde se encuentran los colores).
Se muestra la salida y se ve así:
fuente
Mathematica,
6394103 bytesCuando 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!
(Gracias a Martin Büttner por eliminar 5 bytes pero agregar 16)
Se ve como esto:
Si agrega,
,Axes->None
se ve así:Si no le importa el borde, puede usar esto: (95 bytes)
Se ve como esto:
Sin hachas:
fuente
Axes->None
. También debe especificarAspectRatio->2/3
. El cambio de nombreRGBColor
es simple:r=RGBColor;...r["..."]
. También puede usar la notación de prefijo para guardar dos bytes másr@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. El rojo se ve lo suficientemente cerca.Javascript (ES6) 117 bytes
Lo dibuja en la consola
fuente
'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óni=c=s=[]
lugar dei=0,c=[],s=''
actualizar los colores que podrían ayudar un poco ...red
yblue
). Es el segundo punto, contando desde abajo. Esto está dentro de las especificaciones.pb , 68 bytes
¡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:
fuente
C, 115 bytes
Contiene no imprimibles:
Para que este programa funcione, un par de cosas deben ser ciertas:
ESC [48;2;<r>;<g>;<b>m
secuencia de escape "truecolor".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:
fuente
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 "MATLAB,
827978 bytesLa salida se ve así:
fuente
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.Visual Basic + Excel,
618bytesSolo 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
fuente
Range("A1:C13").Interior.ColorIndex = 5
yRange("G1:I13").Interior.ColorIndex = 3
que parece ser suficiente.ActiveWorkbook.Colors
para especificar los valores exactos de RGB. Excel 2007 tiene opciones de color adicionales, pero no las conozco de antemano.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
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
CSS, 102
110111114bytesfuente
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- un byte más corto}
.66%
con0
.Dyalog APL (
4744)Resultado:
fuente
2*8 11 10
?iKe , 43 bytes
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.
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:
Pruébalo en tu navegador .
Editar:
Se guardó un byte usando un
#FFF
color CSS corto para la franja blanca: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:
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:
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:
fuente
Octava,
7776 bytesMuestra la imagen:
fuente
Procesamiento, 100 bytes
Muestra esto:
(La solución ingenua es más corta que la primera).
fuente
size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
Ruby,
564745 bytesASCII
fuente
PHP, 70 bytes
Lo anterior es un hexdump que se puede revertir con
xxd -r
. Alternativamente, también se puede generar con el siguiente script PHP:Asumo la configuración predeterminada, ya que no tienen un .ini (puede deshabilitar su .ini local con la
-n
opció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
Salida
fuente
ShaderToy (GLSL), 147 bytes
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.
fuente