Code Golf: 1x1 schwarzes Pixel
-
05-10-2019 - |
Frage
Vor kurzem habe ich mein Lieblings Bild-Editor ein 1x1 schwarzes Pixel zu machen (was sich als nützlich erweisen kann, wenn man feste Boxen in HTML billig zeichnen möchten). Auch wenn ich es ein monochromes PNG gemacht, kam es aus 120 Bytes sein! Ich meine, das ist ein bisschen steil. 120 Bytes. Für ein Pixel . Ich baute es dann zu einem GIF, die die Größe auf 43 Bytes fallen gelassen. Viel besser, aber immer noch ...
Herausforderung
Die kürzeste Bilddatei oder ein Programm, dass oder erzeugt ein 1x1 schwarzes Pixel. Eine Vorlage kann sein:
- Eine Bilddatei, die ein 1x1 schwarzes Pixel darstellt. Das gewählte Format muss in der Lage sein, größer darstellen Bilder als 1x1, und kann nicht ad-hoc (das heißt, es kann kein Bildformat sein, das Sie nur für die Code-Golf aus). Bilddateien werden von Byteanzahl gewählt werden.
- Ein Programm, das solch eine Bilddatei erzeugt. Die Programme werden durch Zeichenzahl, wie üblich in Code Golf eingestuft werden.
Solange eine Antwort in eine dieser beiden Kategorien fällt, ist alles fair game.
Auch für Bilddateien, bitten sie in hexadezimal angeben oder entweicht, anstatt ein externes Bild Host mit: -)
Lösung
Andere Tipps
Daten URI , 83 Zeichen
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==
Bild-Datei: 10 Bytes , in PGM Format:
P5 1 1 1\n\0
Um es zu schaffen, in Python: 40 Zeichen
open('b.pgm', 'w').write('P5 1 1 1\n\0')
Unicode Kunst Format:
·
Das PBM -Format ist ein Schwarz-Weiß-Grafik-Format.
Eine binäre Darstellung eines einzelnen schwarzen Pixel würde 8 Bytes nehmen und es in eine Datei mit C # zu schreiben würde wie folgt aussehen:
File.WriteAllText("p.pbm", "P4 1 1 ÿ");
Logo / Turtle basic, 12 Bytes
PENDOWN FD 1
Ich kann mich nicht erinnern, wenn pendown
zu pd
verkürzt werden kann oder nicht, wenn ja, dass es auf 7 Byte fällt.
bash: 31 Zeichen
Das Skript eines einzelnes Pixel gif aus dem interwebs zum Download ist weniger Bytes als das einzelne Pixel selbst ...
wget http://tinyurl.com/2w97dyo
Python + PIL 68 Zeichen
from PIL import Image
Image.fromstring("P",(1,1),"\0").save("B.gif")
Postscript, 29 Bytes. nicht wirklich ein „einzelne Pixel“, aber es war ein einzelne Pixel auf meinem Vorschau-Bildschirm.
0 0 moveto .5 0 lineto stroke
Python (w / PIL) (85 Zeichen):
from PIL import Image
i=Image.new("P",(1,1))
i.putpixel((0,0),(0))
i.save("i.gif","GIF")
Ein altes Bildformat ich verwenden: 4 Byte
01 00 00 0C
Das Format besteht aus einer Anordnung von 16-Bit-Integer (little endian):
Bit-Mapping:
0-10: number of pixels to shade
10-11: control bits
12-15: VGA16 pidel color
Steuerbits Werte:
0: normal
1: end of line
3: end of file
SVG, 59 Zeichen:
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
Unfortuntally, einschließlich Doctype es wächst auf 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 Zeichen
#lang slideshow
(disk 1)
Ich bin ziemlich spät zu dieser Party, aber http://www.perlmonks.org/ ? node_id = 7974 eine hat allgemeine Antwort als alle bisher geschrieben ist:
## 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","."}
Wenn Sie nach dem Wikipedia-Artikel suchen, um es zu verbinden, fand ich XPM2, 26 Bytes , aber ich kann nicht geöffnet werden, dass mit jedem Programm hier.
! XPM2
1 1 1 1
. c #000
.
Rebmu : 16 Zeichen
en'PNGmkIM![1x1]
Wenn Sie es wollen, in eine Datei auf einem Argument speichern Sie passieren, dass drei weitere Zeichen, um das Programm fügt hinzu:
rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
Das Programm Abkürzung für die folgende Rebol ist, Klammern für Klarheit hinzugefügt:
write a (encode 'png (make image! [1x1]))
<div style="height: 0; width: 1px; border-top: 1px solid #000">
Aber Positionierung es mehr dauern.