Codice Golf: 1x1 pixel nero
-
05-10-2019 - |
Domanda
Di recente, ho usato il mio editor di immagini preferito per fare un pixel nero 1x1 (che può rivelarsi utile quando si vuole disegnare scatole solide in HTML a buon mercato). Anche se ho fatto un PNG in bianco e nero, è venuto fuori per essere 120 byte! Voglio dire, che una specie di ripida. 120 byte. Per un pixel . Ho poi convertito in un formato GIF, che è sceso la dimensione fino a 43 byte. Molto meglio, ma ancora ...
Challenge
Il file di immagine più breve o programma che o genera di un 1x1 pixel nero. Una presentazione può essere:
- Un file di immagine che rappresenta un pixel nero 1x1. Il formato scelto deve essere in grado di rappresentare le immagini più grandi di 1x1, e non può essere ad-hoc (che è, non può essere un formato di immagine che hai appena fatto per il golf codice). I file di immagine saranno classificati dal numero di byte.
- Un programma che genera un tale file di immagine. I programmi saranno classificati dal conteggio dei caratteri, come al solito in campo codice.
Fino a quando una risposta rientra in una di queste due categorie, tutto è gioco equo.
Inoltre, per i file immagine, si prega di specificare in formato esadecimale o sfugge piuttosto che utilizzare un host immagine esterna: -)
Soluzione
Altri suggerimenti
dati URI , 83 caratteri
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==
File immagine: 10 byte , in PGM formato:
P5 1 1 1\n\0
Per crearla, in Python: 40 caratteri
open('b.pgm', 'w').write('P5 1 1 1\n\0')
Il href="http://en.wikipedia.org/wiki/Netpbm_format" rel="nofollow noreferrer"> PBM formato è un formato grafico in bianco e nero.
Una rappresentazione binaria di un singolo pixel nero avrebbe preso 8 byte, e la scrittura in un file con C # sarà simile:
File.WriteAllText("p.pbm", "P4 1 1 ÿ");
logo / tartaruga di base, 12 byte
PENDOWN FD 1
Non riesco a ricordare se pendown
può essere ridotto a pd
o no, in caso affermativo, che scende a 7 byte.
bash: 31 caratteri
Lo script per scaricare un singolo pixel GIF da interwebs è meno byte rispetto al singolo pixel in sé ...
wget http://tinyurl.com/2w97dyo
Python + PIL 68 caratteri
from PIL import Image
Image.fromstring("P",(1,1),"\0").save("B.gif")
Postscript, 29 byte. non proprio un "singolo pixel", ma è stato un singolo pixel sul mio schermo di anteprima.
0 0 moveto .5 0 lineto stroke
Python (w / PIL) (85 caratteri):
from PIL import Image
i=Image.new("P",(1,1))
i.putpixel((0,0),(0))
i.save("i.gif","GIF")
Un vecchio formato di immagine che ho utilizzato: 4 bytes
01 00 00 0C
Il formato è costituito da una matrice di 16 bit interi (little endian):
Bit Mapping:
0-10: number of pixels to shade
10-11: control bits
12-15: VGA16 pidel color
Controllo bit valori:
0: normal
1: end of line
3: end of file
SVG, 59 caratteri:
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
Unfortuntally, tra cui Doctype cresce 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 caratteri
#lang slideshow
(disk 1)
Sono abbastanza tardi per questo partito, ma http://www.perlmonks.org/ ? NODE_ID = 7974 ha una più generale la risposta di chiunque di scritto finora:
## 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","."}
Quando si cerca per l'articolo di Wikipedia per collegarla ho trovato XPM2, 26 bytes , ma non ho potuto aperta che con qualsiasi programma qui.
! XPM2
1 1 1 1
. c #000
.
Rebmu : 16 caratteri
en'PNGmkIM![1x1]
Se si desidera salvare un file in base a un argomento si passa, che aggiunge altri tre caratteri al programma:
rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
Il programma è una scorciatoia per il seguente Rebol, parentesi aggiunto per chiarezza:
write a (encode 'png (make image! [1x1]))
<div style="height: 0; width: 1px; border-top: 1px solid #000">
Ma il posizionamento ci vorrà più.