Código Golf: 1x1 píxel negro
-
05-10-2019 - |
Pregunta
Recientemente, he usado mi editor de imágenes favorito para hacer un píxel negro 1x1 (que puede ser útil cuando se desea dibujar cuadros sólidos en HTML barata). A pesar de que he hecho un PNG blanco y negro, que llegó a ser de 120 bytes! Quiero decir, eso es algo caro. 120 bytes. Para un píxel . entonces convertido a un GIF, que se redujo el tamaño a 43 bytes. Mucho mejor, pero aún así ...
Challenge
El archivo de imagen más corta o programa que es o genera a 1x1 píxel negro. Una presentación puede ser:
- Un archivo de imagen que representa un píxel negro 1x1. El formato elegido debe ser capaz de representar imágenes de más de 1x1, y no puede ser ad-hoc (es decir, que no puede ser un formato de imagen que acaba de hacer para campo de código). Los archivos de imagen serán calificadas por cuenta de bytes.
- Un programa que genera un archivo de imagen de este tipo. Los programas serán calificadas por recuento de caracteres, como es habitual en campo de código.
Mientras una respuesta cae en una de estas dos categorías, todo es juego limpio.
Además, para los archivos de imagen, por favor especificar en hexadecimal o se escapa en lugar de utilizar un host de imagen externa: -)
Solución
Otros consejos
URI de datos , 83 caracteres
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==
Archivo de imagen: 10 bytes , en PGM formato:
P5 1 1 1\n\0
Para crearlo, en Python: 40 caracteres
open('b.pgm', 'w').write('P5 1 1 1\n\0')
El href="http://en.wikipedia.org/wiki/Netpbm_format" rel="nofollow noreferrer"> PBM formato es un formato de gráficos en blanco y negro.
Una representación binaria de un solo píxel negro tomaría 8 bytes, y escribirlo en un archivo con C # se vería así:
File.WriteAllText("p.pbm", "P4 1 1 ÿ");
Logo / tortuga básica, 12 bytes
PENDOWN FD 1
No puedo recordar si pendown
se puede acortar a pd
o no, si es así, que la deja caer a 7 bytes.
bash: 31 caracteres
La secuencia de comandos para descargar una sola gif de píxel desde la interwebs es menos bytes que el único píxel en sí ...
wget http://tinyurl.com/2w97dyo
Python + PIL 68 caracteres
from PIL import Image
Image.fromstring("P",(1,1),"\0").save("B.gif")
Postscript, 29 bytes. no es realmente un "solo píxel", pero era un solo píxel en mi pantalla de vista previa.
0 0 moveto .5 0 lineto stroke
Python (w / PIL) (85 caracteres):
from PIL import Image
i=Image.new("P",(1,1))
i.putpixel((0,0),(0))
i.save("i.gif","GIF")
Un formato de imagen antigua Solía ??usar: 4 bytes
01 00 00 0C
El formato consiste en una matriz de enteros de 16 bits (Little Endian):
mapeo de bits:
0-10: number of pixels to shade
10-11: control bits
12-15: VGA16 pidel color
Control bits de valores:
0: normal
1: end of line
3: end of file
SVG, 59 caracteres:
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
Unfortuntally, incluyendo Doctype crece a 157 ...:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
DrRacket : 23 caracteres
#lang slideshow
(disk 1)
Estoy bastante tarde para este partido, pero http://www.perlmonks.org/ ? node_id = 7974 tiene una más general respuesta que cualquiera de publicado hasta ahora:
## tinygif
## World's Smallest Gif
## 35 bytes, 43 if transparent
use strict;
my($RED,$GREEN,$BLUE,$GHOST,$CGI);
## Adjust the colors here, from 0-255
$RED = 255;
$GREEN = 0;
$BLUE = 0;
## Set $GHOST to 1 for a transparent gif, 0 for normal
$GHOST = 0;
## Set $CGI to 1 if writing to a web browser, 0 if not
$CGI = 0;
$CGI && printf "Content-Length: %d\nContent-Type: image/gif\n\n",
$GHOST?43:35;
printf "GIF89a\1\0\1\0%c\0\0%c%c%c\0\0\0%s,\0\0\0\0\1\0\1\0\0%c%c%c\1\0;",
144,$RED,$GREEN,$BLUE,$GHOST?pack("c8",33,249,4,5,16,0,0,0):"",2,2,4;
XPM , 57 bytes :
/* XPM */
static char *_x_[] = {"1 1 1 1",".c #000","."}
En la búsqueda de un artículo de Wikipedia para vincularlo encontré XPM2, 26 bytes , pero no pude abierto que con cualquier programa aquí.
! XPM2
1 1 1 1
. c #000
.
Rebmu : 16 caracteres
en'PNGmkIM![1x1]
Si usted quiere que guardar en un archivo basado en un argumento que se pasa en, que añade tres caracteres más para el programa:
rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
El programa es la abreviatura de la siguiente Rebol, paréntesis añadido para mayor claridad:
write a (encode 'png (make image! [1x1]))
<div style="height: 0; width: 1px; border-top: 1px solid #000">
Sin embargo, el posicionamiento se tardará más.