Zeigen Sie zufällige farbige Pixel an

47

Ich mochte immer Bildschirme voller zufällig gefärbter Pixel. Sie sind interessant anzusehen und die Programme, die sie zeichnen, machen Spaß.

Die Herausforderung

Füllen Sie Ihren Bildschirm oder ein Grafikfenster mit farbigen Pixeln.

Die Regeln

  • Ihr Programm muss die gleiche Chance haben, alle Farben (dh den Bereich #000000bis #FFFFFF) oder alle Farben auszuwählen, die auf Ihrem System angezeigt werden können.
  • Ihr Programm muss weiterhin zufällige Pixel anzeigen, bis es manuell gestoppt wird (es kann nicht alleine beendet werden).
  • Pixel können beliebig groß sein, sofern Ihre Ausgabe mindestens 40x40 "Pixel" hat.
  • Ihr Programm muss mit einer solchen Geschwindigkeit ausgeführt werden, dass es jedes Pixel auf dem Bildschirm / Fenster mindestens einmal ersetzen kann, nachdem es drei Minuten lang ausgeführt wurde.
  • Ihr Programm muss wirklich zufällige Farben und Punkte zum Ersetzen auswählen , dh zufällig, wobei alle Punkte / Farben gleich wahrscheinlich sind. Es kann nicht nur zufällig aussehen . Es muss ein pRNG oder besser verwendet werden, und die Ausgabe kann nicht jedes Mal dieselbe sein.
  • Ihr Programm muss die gleiche Chance haben, bei jeder Iteration alle Farben auszuwählen .
  • Ihr Programm darf nur ein Pixel auf einmal ersetzen.
  • Ihr Programm kann weder das Internet noch Ihr Dateisystem ( /dev/randomund /dev/urandomausgenommen) verwenden.

Beispiel

Ihre Ausgabe könnte wie folgt aussehen, wenn Sie zu einem zufälligen Zeitpunkt gestoppt wird:

Der Gewinner

Die kürzeste Antwort in jeder Sprache gewinnt. Habe Spaß!

MD XF
quelle
Mit "wirklich zufällig" gehe ich davon aus, dass Pseudozufall in Ordnung ist (wie Math.random () oder ähnlich)
OldBunny2800
@ OldBunny2800It must use a pRNG or better
TheLethalCoder
Da das Programm das Internet nicht nutzen kann, hinterlasse ich dies einfach in einem Kommentar: babelia.libraryofbabel.info/slideshow.html
KSmarts
1
Gilt das "3-Minuten-Limit" auch für die Rüstzeit? Oder fängt einfach mal das "Programm" an? Ich frage, weil ich eine Minecraft-Redstone-Lösung habe, die sehr schnell ausgeführt wird, aber es dauert eine Weile, bis sie eingerichtet ist (es muss "jedes" Pixel "im 40x40-Raster" platziert "werden"), bevor die Farben sich ändern können.
BradC
5
Wirklich zufällig per definitionem Pseudo- Random ausschließen, aber keine Verteilung definieren. Ich nehme an, Sie meinen ein einheitliches PRNG, bei dem alle Ereignisse gleich wahrscheinlich und unabhängig voneinander sind.
Dennis

Antworten:

85

Minecraft 1.12 Redstone-Befehlsblöcke, 4.355 2.872 Bytes

Minecraft-Screenshot mit Rüstungsständen und Karte

(Größe wird durch die Größe der gespeicherten Strukturblockdatei bestimmt.)

Hier ist eine vollständige YouTube-Übersicht , aber ich werde versuchen, den folgenden Code zu skizzieren.

Setup-Routine:

2 Reihen von Befehlsblöcken für das Setup

Dadurch wird das 40x40-Raster der Minecraft-Rüstungsstände aufgebaut. Rüstungsstände sind notwendig, da Minecraft keine Möglichkeit hat, Variablen in Weltkoordinaten zu setzen . Die Problemumgehung besteht also darin, sich auf die Position dieser Rüstungsstand-Einheiten zu beziehen .

(impulse) summon armor_stand 2 ~ 1 {CustomName:"A"} /create named armor stand
(chain) fill -2 ~ -2 43 ~ 43 stone                  /create big stone square
(chain) fill -1 ~ -1 42 ~ 42 air                    /leave just a ring of stone
(chain) setblock -4 ~ -12 redstone_block            /kicks off next sequence

Dieser benannte Rüstungsständer ist im Grunde unser "Cursor", um alle Rüstungsständer zu platzieren, die wir brauchen werden. Der Redstone-Block im letzten Schritt "treibt" Blöcke in der Nähe an (einschließlich unserer Befehlsblöcke), also startet die nächste Schleife:

(repeat) execute @e[name=A] ~ ~ ~ summon armor_stand ~-1 ~ ~   /create new armor stand 
(chain) tp @e[name=A] ~1 ~ ~                                   /move "cursor" one block
(chain) execute @e[name=A] ~ ~ ~ testforblock ~1 ~ ~ stone     /if at end of row,
(conditional) tp @e[name=A] ~-40 ~ ~1                          /go to start of next row
(chain) execute @e[name=A] ~ ~ ~ testforblock ~ ~ ~2 stone     /If at last row
(conditional) setblock ~6 ~ ~ air                              /stop looping
(conditional) kill @e[name=A]                                  /kill cursor

Zu diesem Zeitpunkt ist unser Raster vollständig:

Fertiges Rüstungsstand-Gitter

Zufällige Farbauswahl

Farb- und Pixelauswahl

Die violetten Repeater in der Mitte dieses Bildes wählen mit dem folgenden Befehl eine zufällige Farbe:

(repeat) execute @r[type=armor_stand,r=9] ~ ~ ~ setblock ~ ~-2 ~ redstone_block

Das "@r []" ist die magische Sauce, es wählt eine zufällige Entität in der Welt aus, die den gegebenen Bedingungen entspricht . In diesem Fall findet es einen Rüstungsständer in einem Umkreis von 9 Blöcken und wir haben 16 Rüstungsständer aufgestellt, einen für jede Wollfarbe. Unter der ausgewählten Farbe wird ein Redstone-Block platziert (der die beiden Befehlsblöcke auf beiden Seiten antreibt).

Zufällige Pixelauswahl

Das Platzieren des Redstone-Blocks unter der ausgewählten Wollfarbe löst zwei weitere Befehlsblöcke aus:

(impulse) execute @r[type=armor_stand] ~ ~ ~ setblock ~ ~3 ~ wool X
(impulse) setblock ~ ~ ~1 air

In dieser ersten Zeile wird mit demselben Befehl magic @r ein beliebiger Panzerungsstand auf der gesamten Karte ausgewählt (ohne Radiusbeschränkung, einschließlich des Gitters 40 x 40) und eine Wolle der ausgewählten Farbe über dem Kopf platziert. Das X bestimmt die Farbe und reicht von 0 bis 15. Der zweite Befehl entfernt den Redstone-Block, damit er wieder einsatzbereit ist.

Ich habe 5 violette Repeaterblöcke und Redstone arbeitet 20-mal pro Sekunde in "Ticks", also platziere ich 100 Pixel pro Sekunde (abzüglich einiger Farbüberlappungen). Ich habe es zeitlich festgelegt und normalerweise bekomme ich das gesamte Raster in ca. 3 Minuten abgedeckt.

Das hat Spaß gemacht, ich werde versuchen, nach anderen Herausforderungen zu suchen, die auch in Minecraft funktionieren könnten. Vielen Dank an lorgon111 für seine YouTube Command Block Tutorial-Serie .

BEARBEITEN: Die Größe der gespeicherten Struktur wurde erheblich reduziert (jetzt bei 2.872 gespeicherten Bytes) :

Befehlsblöcke mit sichtbaren leeren Blöcken schließen

  1. Scooted Dinge in einem Stück (in allen 3 Dimensionen), so dass ich die Gesamtgröße des gespeicherten Bereichs reduzieren konnte.
  2. Die verschiedenfarbigen Wolle wurden in Stein geändert, sie waren sowieso nur dekorativ.
  3. Die Glühsteinlampe entfernt.
  4. Alle Luftblöcke wurden in leere Blöcke (die roten Quadrate) geändert.

Getestet, indem die gespeicherte Struktur in eine neue Welt gezogen wird, funktioniert immer noch alles wie geplant.

EDIT 2 : Schreibgeschützter Dropbox-Link zur NBT-Strukturdatei

Zu Fuß durch ist in meinem YouTube-Video , aber hier sind die Schritte:

  1. Erstellen Sie in Minecraft 1.12 mit der Voreinstellung "Redstone Ready" eine neue kreative, superflache Welt. Mach es friedlich.
  2. Sobald die Welt existiert, kopieren Sie die NBT-Datei in einen neuen \structuresOrdner, den Sie unter der aktuellen Weltspeicherung erstellt haben.
  3. Zurück im Spiel, machen Sie es /give @p structure_blockund /tp @p -12, 56, -22springen Sie an die richtige Stelle, um anzufangen.
  4. Grabe ein Loch und platziere den Strukturblock bei -12, 55, -22.
  5. Klicken Sie mit der rechten Maustaste auf den Strukturblock, und klicken Sie auf die Modustaste, um ihn auf "Laden" zu schalten.
  6. Tippe "random_pixels" ein, aktiviere "include entity" und klicke auf "Load"
  7. Wenn die Strukturdatei gefunden wird, wird eine Vorschau der Gliederung angezeigt. Klicken Sie erneut mit der rechten Maustaste und klicken Sie auf "Laden", um die Struktur in die Welt zu bringen.
  8. Drücken Sie die Taste, um die Setup-Routine auszuführen.
  9. Wenn der Vorgang abgeschlossen ist, betätigen Sie den Schalter, um die Woll-Randomisierung auszuführen.
BradC
quelle
6
Heiliger Mist ... du hast es tatsächlich getan. Und es ist deine erste Antwort, wow! Willkommen auf der Seite, und das ist ein erstaunlicher Anfang!
MD XF
2
@MDXF Zusätzlich zu Ihrer +10 gebe ich +60
NoOneIsHere
2
@NoOneIsHere In Ordnung: P Aber wenn Sie eine Antwort haben, müssen es +100 sein ...
MD XF
2
Ich werde versuchen, dies zu versuchen und Golf zu spielen, wenn Sie die World-Datei geben (ich werde keine weitere Antwort posten, sondern Ihnen nur die Datei geben)
Christopher
2
Nun, shortest answer in each language winsund dies ist die kürzeste Antwort in Minecraft: P haben eine zusätzliche +15
MD XF
20

sh + ffmpeg, 52 Bytes

ffplay -f rawvideo -s cif -pix_fmt rgb24 /dev/random

Zählt ffmpeg als Esolang? : D

Leider ist pix_fmt erforderlich, da ffmpeg standardmäßig yuv420p ist. Das scheitert an der Anforderung, dass "jede mögliche Pixelfarbe gleich wahrscheinlich sein muss". Praktischerweise cifhandelt es sich um eine Verknüpfung für eine relativ große Videogröße, die weniger Speicherplatz als "40x40" benötigt.

Es ist nicht überraschend, dass die Optimierung dieses Gifs mit Gifsicle absolut nichts bewirkt hat. Es ist 4MiB.

Una
quelle
3
Ersetzt dies " nur ein Pixel auf einmal "?
Scott Milner
1
Technisch? ffmpeg wartet jedoch, bis der gesamte Frame mit Pixeln gefüllt ist, bevor er angezeigt wird. Ich habe "darf immer nur 1 Pixel ersetzen" falsch gelesen. : /
Una
1
Und natürlich konnte Gifsicle keine Bytes im GIF speichern: Es gibt keine Möglichkeit, beliebige Daten zu komprimieren, und die zufälligen Pixel sind alle chaotisch angeordnet. Das bedeutet, dass die effizienteste Art, sie zu codieren, jeweils ein Pixel ist. Numberphile (glaube ich?) Hat ein Video über "Was ist Information?" Und zufälliges Rauschen erstellt, um absichtlich die YouTube-Komprimierung zu beeinträchtigen. VSauce hatte auch einmal ein Video über Videokomprimierung, aber ich vergesse, wie es hieß.
Draco18s
2
@Draco18s, ich weiß, die Notiz, dass es inkompressibel ist, hat sich über mich lustig gemacht, weil ich versucht habe, Gifsicle darauf laufen zu lassen.
Una
2
Gifsicle ist das falsche Werkzeug. Precomp verringert den Wert von 4 MB auf 3 MB :) Das liegt daran, dass der GIF-Algorithmus die Zufälligkeit erweitert, anstatt sie zu komprimieren, und Precomp kehrt dies um.
Schnaader
17

C auf POSIX, 98 96 95 92 Bytes

-3 danke an Tas

#define r rand()
f(){for(srand(time(0));printf("\e[%d;%dH\e[%d;4%dm ",r%40,r%40,r%2,r%8););}

Dabei werden 16 Farben (dunkelgrau, rot, grün, blau, orange, cyan, lila, hellgrau, schwarz, pink, hellblau, gelb, hellcyan, magenta, weiß) ausgewählt und direkt auf das Terminal gedruckt.

Beachten Sie, dass bei einer zu langsamen GPU möglicherweise der gesamte Bildschirm gleichzeitig aktualisiert wird. Es geht tatsächlich Pixel für Pixel, aber C ist schnell.

Farben

Alternative Lösung, die die Farben deutlicher macht:

f(){for(srand(time(0));printf("\e[%d;%dH\e[%d;3%dm█",rand()%40,rand()%40,rand()%2,rand()%8););}

Beweise, dass es Pixel für Pixel geht (Screenshot aus einem alternativen Programm):

3d !!!

Wow, das sieht fast dreidimensional aus ...

MD XF
quelle
Es fehlt ein ;, um richtig zu kompilieren, aber ansonsten scheint es großartig zu funktionieren! B-)
Cleblanc
@cleblanc Oh, du hast recht! Ich habe vergessen, das hinzuzufügen, nachdem ich von whilezu gewechselt habe for.
MD XF
2
Sie könnten sich wahrscheinlich ein paar Bytes rasieren #define r rand()und dannr%40, r%40, r%2, r%8
Tas
Wenn keine 32-Bit-Farbe verwendet wird, werden die Anforderungen nicht erfüllt.
Wberry
4
@wberry "Ihr Programm muss die gleiche Chance haben, alle Farben (dh im Bereich von # 000000 bis #FFFFFF) oder alle Farben, die auf Ihrem System angezeigt werden können , auszuwählen . " Dies sind alle Farben, die das POSIX-Terminal anzeigen kann.
MD XF
13

JS + HTML 162 + 32 (194) 124 + 13 (137) Bytes

Vielen Dank an Luke und andere Kommentatoren, die mir viele Bytes erspart haben.

r=n=>n*Math.random()|0
setInterval("b=c.getContext`2d`;b.fillStyle='#'+r(2**24).toString(16);b.fillRect(r(99),r(99),1,1)",0)
<canvas id=c>

Tintenfisch
quelle
2
Eigentlich <canvas id=c>sollte es ausreichen, da ich denke, dass die Standardgröße für das canvas-Element ist 300 x 150 pxund so Ihre "Ansichtsfenstergröße" von übersteigt 99 x 99 px. Wie auch immer, schöne Lösung.
Insertusernamehere
1
@insertusernamehere, ja, danke
Octopus
1
Funktioniert jetzt allerdings nicht in Firefox. Es funktioniert in Chrome
ETHproductions
1
OK, OK, ich habe es verstanden. Sparen Sie 2 Bytes, indem Sie b = c.getContext ausführen 2d. (Ich weiß nicht, wie ich das formatieren soll, aber wenn "2d" ein Vorlagenliteral ist, werden keine Klammern benötigt.) (Meine vorherigen Vorschläge werden gelöscht.)
Rick Hitchcock,
1
Verwenden Sie zusammen mit Ricks Vorschlag eine withAnweisung, um alle Instanzen von b.:r=n=>n*Math.random()|0 setInterval("with(c.getContext`2d`)fillStyle='#'+r(2**24).toString(16),fillRect(r(99),r(99),1,1)")
darrylyeo
11

MATL, 28 Bytes

40tI3$l`3l2$r,40Yr]4$Y(t3YGT

Probieren Sie es bei MATL Online aus . Ich habe .5Y.dieser Version eine halbe Sekunde Pause ( ) hinzugefügt .

Bildbeschreibung hier eingeben

Erläuterung

40       % Push the number literal 40 to the stack
t        % Duplicate
I        % Push the number 3 to the stack
3$l      % Create a 40 x 40 x 3 matrix of 1's (40 x 40 RGB image)
`        % Do...while loop
  3l1$r  % Generate 3 random numbers (RGB)
  ,      % Do twice loop
    40Yr % Generate two integers between 1 and 40. These will be the
  ]      % row and column of the pixel to replace
  4$Y(   % Replace the pixel with the random RGB value
  t      % Make a copy of the RGB image
  3YG    % Display the image
  T      % Push a literal TRUE to create an infinite loop
Suever
quelle
1
Ich liebe es! ----
MD XF
4
Wie haben Sie aus Neugier Ihre Code-Ausgabe verschönert?
Octopus
2
@ Octopus Ich habe gerade LICEcap verwendet . Eines Tages werde ich animierte GIF-Ausgaben in den Online-Compiler integrieren.
Suever
Könnten Sie diese Antwort nicht in MATL konvertieren, um möglicherweise eine niedrigere Punktzahl zu erzielen, da in dieser Antwort weniger Befehle / Methoden verwendet werden, um ein ähnliches Ergebnis zu erzielen?
MD XF
Ich habe gesehen, dass ein bereits ersetzter Pixel wieder ersetzt wurde;).
Magic Octopus Urn
7

TI-BASIC (nur 84 + C (S) E), 37-35 Byte

:For(A,1,5!
:For(B,1,5!
:Pxl-On(A,B,randInt(10,24
:End
:End
:prgmC //"C" is the name of this program

Aufgrund von Hardwareeinschränkungen stürzt dies schließlich ab, da jedes Mal, wenn ein Programm in einem Programm in TI-BASIC verschachtelt ist , 15 KB RAM zugewiesen werden, um ein Lesezeichen im übergeordneten Programm zu behalten. Dies würde auf einem "theoretischen" Rechner mit unendlichem RAM gut funktionieren, aber wenn wir wollen, dass er auf einem realen Rechner auf unbestimmte Zeit ausgeführt wird, können wir ihn einfach While 1für weitere 2 Bytes in eine Schleife packen:

:While 1
:...
:End

Die Taschenrechner der TI-83-Familie mit Farbbildschirmen (TI 84 + CE und CSE) unterstützen 15 Farben. Sie haben Farbcodes 10durch 24. Dies durchläuft alle Pixel in einem 5!Quadrat von 120 x 120 ( ) und weist jedem Pixel eine zufällige Farbe zu.

Ergebnis:

Bildbeschreibung hier eingeben

Scott Milner
quelle
Ja, eine weitere BASIC-Antwort! Nur um sicher zu sein, läuft das für immer?
MD XF
@MDXF Jetzt geht es! ;-). Habe diesen Teil das erste Mal verpasst. +5 Bytes.
Scott Milner
Sie können festlegen, dass die for-Schleifen bei 0 beginnen, wenn Sie 100 x 100 Pixel abdecken möchten.
kamoroso94
@ kamoroso94 Ah, stimmt. Ich könnte es auch tun, 5!wenn ich 120 Pixel Pixel im Glossar erklärt wollte.
Scott Milner
2
@MDXF TI-BASIC ist tokenbasiert . Dh For(ist 1 Byte, Pxl-On(ist 1 Byte, randInt(ist 2 Bytes, etc.
Scott Milner
5

MATLAB, 56 Bytes

x=rand(40,40,3);while imagesc(x),x(randi(4800))=rand;end

Die Ausgabe sieht wie im Bild unten aus. Es ändert sich jeweils ein "Pixel", und nur eine der RGB-Farben ändert sich.

Warum? Die Farben in MATLAB werden als 3D-Matrix dargestellt, eine Ebene für R, G und B. Der obige Code ändert nur eine der Ebenen pro Iteration. Alle Pixel und alle Ebenen können geändert werden. Wenn Sie also etwas warten, sind alle Farben an allen Positionen gleichermaßen möglich.

Fügen Sie pause(t)innerhalb der Schleife hinzu, um tSekunden zwischen den einzelnen Bildern zu pausieren .

Sie müssen es mit Ctrl+ stoppen C.

Bildbeschreibung hier eingeben

Stewie Griffin
quelle
3
Clevere Verwendung des where
Handles
2
Eine Regel wurde geklärt - Your program must have an equal chance of picking all colors/points each iteration. Erfüllt Ihr Programm dies?
MD XF
5

Bash + Coreutils, 59 56 Bytes

for((;;)){ printf "\e[48;5;`shuf -i 0-16777215 -n1`m ";}

\e[48;5;COLORm ist die Fluchtsequenz zur Hintergrundfarbe.

Jedes "Pixel" hat die Chance, jedes Mal im Bereich [0..16777215] zu sein.

marcosm
quelle
1
Wow, das ist eine wirklich gute Idee! +1
MD XF
Sie können 3 Bytes jotfor((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
abschieben
Ich habe diese Idee gestohlen und sie auf 45 Bytes reduziert (\ e ist 1 Escape-Zeichen, und shuf | xargs verkürzt sie (kein Erfordernis für -n 1 und kein Erfordernis für). Codegolf.stackexchange.com/a/158142/7017 Ich kann es löschen, wenn du willst (ich bin mir nicht sicher, ob ich es nur als Kommentar vorschlagen soll, anstatt es zu posten. Mein Ziel ist es, ein bisschen Punkte zu sammeln, um eines Tages die erstaunlichen Antworten auf das erstaunliche "Tetris" zu erhalten im Spiel des Lebens "Herausforderung & Antwort! Siehe codegolf.stackexchange.com/q/11880/7017
Olivier Dulac
5

Javascript + HTML 118 + 13 (131 Byte)

r=_=>255*Math.random()|0;setInterval('x=c.getContext`2d`;x.fillRect(r(),r(),1,1,x.fillStyle=`rgb(${[r(),r(),r()]})`)')
<canvas id=c>

  • Dies erzeugt gleichmäßig verteilte RGB-Farben. Sie können nicht Hex Farben als Zahlen ohne entsprechende Polsterung verwenden wie #7keine gültige Farbe ist, oder #777und #777777haben die gleiche Farbe (2x die Chancen)
  • Das Canvas-Element ist standardmäßig 300x150, aber ich zeichne tatsächlich auf einem 255x255-Quadrat. Es gibt also keine Canvas-Pixel, sodass die effektive Fläche 255x150 beträgt.
  • Funktioniert nur in Google Chrome.
Vitim.us
quelle
2
Toller erster Beitrag! Willkommen auf der Seite!
MD XF
Ich glaube nicht, dass dies die Möglichkeit bietet, Farben mit einem Kanal von 255 anzuzeigen, z. B. Rot, Grün, Blau oder Weiß. Ich denke, Sie müssen stattdessen mit 256 multiplizieren.
kamoroso94
4

Excel VBA, 131 102 85 Bytes

Anonyme VBE- A1:AN40Direktfensterfunktion, die eine Hilfsfunktion (siehe unten) verwendet, um ein Array von Zellen mit zufälligen Farben in den Bereich des Objekts activesheet auszugeben.

Hinweis: Diese Lösung ist auf 32-Bit-Installationen von MS Excel (und damit von Office insgesamt) beschränkt, da 8^8sie nicht mit 64-Bit-Versionen von VBA kompiliert werden können

Randomize:Cells.RowHeight=48:For Each c In[A1:AN40]:c.Interior.Color=(8^8-1)*Rnd:Next

Beispielausgabe

Randomisierte Zellfarben

Vorherige Version

Randomize:Cells.ColumnWidth=2:For Each c In Range("A1:AN40"):c.Interior.Color=RGB(n,n,n):Next

Hilfsfunktion

Gibt ein zufälliges int im Bereich von [0,255] aus

Function n
n=Int(255*Rnd)
End Function
Taylor Scott
quelle
3

C #, 369 288 287 Bytes

namespace System.Drawing{class P{static void Main(){var g=Graphics.FromHwnd((IntPtr)0);var w=Windows.Forms.Screen.GetBounds(Point.Empty);for(var r=new Random();;)g.FillRectangle(new SolidBrush(Color.FromArgb(r.Next(256),r.Next(256),r.Next(256))),r.Next(w.Width),r.Next(w.Height),1,1);}}}

88 Bytes dank @CodyGray eingespart.

Ein vollständiges Programm, das den Griff auf den Bildschirm und seine Größe legt und dann zufällig Pixel darauf zeichnet. Beachten Sie, dass dies Ihre Grafikkarte möglicherweise zum Stillstand bringt, wenn sie ausgeführt wird. Auch wenn der Bildschirm oder ein Steuerelement zu irgendeinem Zeitpunkt eine Neulackierung beschließt, gehen die Pixel verloren und müssen neu gezeichnet werden.

Hinweis: Wenn Sie das Fenster laufen lassen und den Fokus behalten möchten, müssen Sie entweder Alt + F4 drücken oder die Schließen-Taste drücken, wenn Sie den Bildschirm nicht sehen können.

Ich konnte diese Arbeit mit ScreenToGif nicht aufzeichnen, da dies ein erneutes Malen erzwang, damit die Pixel entfernt wurden. Hier ist jedoch ein Screenshot davon, der nach ca. 10-15 Sekunden noch läuft, und ich glaube, ich habe meinen PC möglicherweise zum Stillstand gebracht! Die Lücke in der oberen rechten Ecke ist die Stelle, an der der Bildschirm ein Neulackieren erzwang, als ich den Screenshot machte.

Beispiel für eine Vollversion

Voll / Formatierte Version:

namespace System.Drawing
{
    class P
    {
        static void Main()
        {
            var g = Graphics.FromHdc((IntPtr)0);
            var w = Windows.Forms.Screen.GetBounds(Point.Empty);

            for (var r = new Random();;)
                g.FillRectangle(new SolidBrush(Color.FromArgb(r.Next(256), r.Next(256), r.Next(256))),
                                r.Next(w.Width), r.Next(w.Height), 1, 1);
        }
    }
}

Eine Version für 308 227 226 Bytes, die nur den Bereich 0-40 verwendet:

namespace System.Drawing{class P{static void Main(){var g=Graphics.FromHdc((IntPtr)0);for(var r=new Random();;)g.FillRectangle(new SolidBrush(Color.FromArgb(r.Next(256),r.Next(256),r.Next(256))),r.Next(40),r.Next(40),1,1);}}}

Beispielausgabe für dieses Beispiel:

Kleine Beispielausgabe


TheLethalCoder
quelle
Graphics.FromHwnd((IntPtr)0)würde auch funktionieren und wäre viel kürzer als P / Invoking GetDC. Natürlich ist Ihr Code immer noch wie der von Tas und verliert Ressourcen wie durchgeknallt, weshalb er Ihre Maschine nach nur kurzer Laufzeit zum Stillstand bringt.
Cody Grey
@CodyGray Oh, ich weiß, dass es undicht ist, sollte aber trotzdem innerhalb der Herausforderungsspezifikationen funktionieren. Und GetDCkommt nicht zurück, IntPtr.Zeroalso wird das Senden an FromHdcnicht funktionieren.
TheLethalCoder
1
Lesen Sie den Vorschlag genauer durch. :-) Ich schlage nicht vor, dass Sie anrufen FromHdc, ich schlage vor, dass Sie anrufen FromHwnd. Beachten Sie, dass Sie beim Aufrufen GetDCdes DC für ein Fensterhandle einen NULL-Zeiger (0) als Fensterhandle übergeben.
Cody Grey
@CodyGray Ah ja das klappt, danke! Sie sind ähnlich benannt, sollten Ihren Kommentar sorgfältiger gelesen haben ...
TheLethalCoder
3

C # -Konsole, 233 220 189 188 Bytes

namespace System{using static Console;class P{static void Main(){for(var r=new Random();;){BackgroundColor=(ConsoleColor)r.Next(16);SetCursorPosition(r.Next(40),r.Next(40));Write(" ");}}}}

Bildbeschreibung hier eingeben

Verwendet "all" (Windows) 16 Konsolenfarben.

Vielen Dank, dass das Feature Klassen in C # über die usingDirektive aliasisieren kann.

Bearbeiten Sie # 1

  • Einige Leerzeichen entfernt.

  • Nullen aus Random.Next () entfernt

  • Ging zu namespace system{...}

Bearbeiten Sie # 2

  • Die Mindestgröße des Rasters beträgt 40x40

  • Ein Byte, indem Random in für den Schleifenkopf deklariert wird

  • Aus publicder Main-Methode entfernt

Bearbeiten Sie # 3

Es stellt sich heraus, dass using C=Console;es nicht das Beste ist, was es gibt. using static Consoleist der VB.Net-Methode zum "Importieren" von Klassen sehr ähnlich

Ich gebe auf: TheLethalCoder hat das möglich gemacht


Ursprünglicher Code zum Anpassen der Fenstergröße bei 207 Bytes:

namespace System{using static Console;class P{static void Main(){for(var r=new Random();;){BackgroundColor=(ConsoleColor)r.Next(16);SetCursorPosition(r.Next(WindowWidth),r.Next(WindowHeight));Write(" ");}}}}

Original Bild:

Bildbeschreibung hier eingeben

MrPaulch
quelle
namespace Systemsollte Bytes sparen, r.Nextkann die Null entfernen, ich glaube, irrelevanten Leerraum entfernen,
TheLethalCoder
Auch nur mit dem Titel C # ist in Ordnung
TheLethalCoder
Vielen Dank! Ich lasse die Konsole im Titel, da sie meiner Meinung nach für diese Herausforderung einen wertvollen Kontext bietet. Ich sehe nicht, wie namespace System{}kürzer ist als using System;. Möchtest du das erklären?
MrPaulch
1
Ich hatte dieses starke, aber unbegründete Gedächtnis, das für die Öffentlichkeit unerlässlich ist Main. Unbegründete Erinnerungen sind die besten!
MrPaulch
1
Vielen Dank. Werde nicht aufgeben! :) Werde das, was ich gelernt habe, bei der nächsten Herausforderung nutzen!
MrPaulch
3

Verarbeitung, 90 Bytes

void draw(){float n=noise(millis());int i=(int)(n*9999);set(i%99,i/99,(int)(n*(-1<<24)));}

Bildbeschreibung hier eingeben

erweitert und kommentiert:

void draw(){
  float n=noise(millis());//compute PRNG value
  int i=(int)(n*9999);    //compute 99x99 pixel index
  set(i%99,i/99,          //convert index to x,y 
  (int)(n*(-1<<24)));     //PRNG ARGB color = PRNG value * 0xFFFFFFFF 
}

Idealerweise könnte ich einen Pixelindex anstelle von x, y verwenden, aber der pixels[]Zugriff auf Processing erfordert loadPixels()Pre und updatePixels()Post, daher die Verwendung von set(). point()würde auch funktionieren, hat aber mehr Zeichen und benötigt stroke(). Der zufällige Bereich ist eigentlich 99x99, um ein paar Bytes zu sparen (anstatt 100x100), aber das sollte 40x40 mit jedem Pixel in einem solchen Bereich abdecken, der ersetzt werden soll.

Perlin- Rauschen () wird anstelle von random () verwendet , um es pseudozufällig und ein Byte kürzer zu halten. Der Wert wird einmal berechnet, aber zweimal verwendet: einmal für die Zufallsposition und dann erneut für die Farbe.

Die Farbe ist tatsächlich ARGB(00000000 bis FFFFFFFF) (nicht RGB) (Bonuspunkte?: D).

George Profenza
quelle
Genial und schön dich auf dieser Seite zu sehen!
Kevin Workman
Gleichfalls ! und danke! :)
George Profenza
+1 set()ist ein sehr ordentlicher Trick und kann sehr nützlich sein für Tipps zum Golfen in der Verarbeitung
Kritixi Lithos
ooooooh! Das wusste ich nicht. Ich werde es dort hinzufügen, danke :)
George Profenza
2

Python, 133 Bytes

Ich bin mir nicht ganz sicher, ob dies den Spezifikationen entspricht, da es sich um eine Leinwand mit einer Größe von 40 x 40 handelt.

from turtle import*
from random import*
ht()
up()
speed(0)
R=randint
while 1:goto(R(0,39),R(0,39));dot(1,eval('('+'R(0,255),'*3+')'))

Probieren Sie es online aus - Version ohneeval, was in Trinket nicht funktioniert

mbomb007
quelle
Hinweis ganz sicher , warum, vielleicht Ihre Schildkröte dist unterscheidet sich von mir, aber meine Standard - Leinwand ist 300 x 400 , während der Standard colormodeist 1.0nicht 255.
Jonathan Allan
Trinket.io ist ziemlich einzigartig.
mbomb007
Ja - ich habe gerade versucht, mich umzuziehen colormodeund es hätte nichts davon: /
Jonathan Allan
Warum funktioniert das auch dot(1,R(0,255),R(0,255),R(0,255))nicht? dotsoll akzeptieren (width,*color). Es ist nicht Python: p
Jonathan Allan
Weil Trinket.io skulpt.js verwendet, eine unvollständige Implementierung von Python.
mbomb007
2

JavaScript mit Canvas 340 316 324 Bytes

function r(t,e){return Math.floor(e*Math.random()+t)}function f(){x.fillStyle="rgba("+r(1,255)+","+r(1,255)+","+r(1,255)+", 1)",x.fillRect(r(0,40),r(0,40),1,1)}c=document.createElement("canvas"),c.width=40,c.height=40,x=c.getContext("2d"),document.getElementsByTagName("body")[0].appendChild(c),c.interval=setInterval(f,1);

Vollversion

Tim Penner
quelle
2
Willkommen auf der Seite! :)
DJMcMayhem
Wird die Regel "Ihr Programm muss weiterhin zufällige Pixel anzeigen, bis es manuell gestoppt wird (es kann nicht alleine beendet werden)" eingehalten?
Octopus
Dies scheint einfach eine Reihe von zufälligen Pixeln zu erzeugen, wenn es ausgeführt wird. Pixel werden erst nacheinander angezeigt, wenn sie angehalten wurden.
MD XF
Scheint, dass ich diese Regel verpasst habe. Ich dachte fälschlicherweise, das Ziel sei es, ein Bild zu erstellen, keine Animation. Ich werde meine Antwort aktualisieren, wenn ich zu meinem Computer zurückkehre.
Tim Penner
1
@ MDXF es ist jetzt animiert
Tim Penner
2

Verarbeitung, 112 Bytes

void setup(){size(40,40);}void draw(){stroke(random(255),random(255),random(255));point(random(40),random(40));}

Ich kann nicht garantieren, dass jedes Pixel alle 3 Minuten ersetzt wird, aber wenn ich es mir anschaue, scheint es so zu sein. Wenigstens die Wahrscheinlichkeit, dass ein Pixel von insgesamt 1600 fehlt und ein zufälliges 30-mal pro Sekunde aktualisiert wird, was insgesamt 5400 Aktualisierungen pro 3 Minuten entspricht, macht es unwahrscheinlich, dass ein Pixel übersehen wird.

Ungolfed:

Das Programm ist wirklich unkompliziert. Öffnen Sie ein Fenster mit einer Größe von 40 x 40 Pixel, und jeder Frame (Standard: 30 pro Sekunde) erhält eine zufällige Farbe. Zeichnen Sie einen Punkt an einer zufälligen Koordinate zwischen 0 und dem Parameter. 40 für Pixelkoordinaten, 255 für Farben.

void setup()
{
  size(40,40);
}

void draw()
{
  stroke(random(255),random(255),random(255));
  point(random(40),random(40));
}

Bildbeschreibung hier eingeben

Cody
quelle
Können Sie das entfernen size(40,40);und ändern pointzu point(random(99),random(99));? (oder 100 stattdessen, wenn 99 nicht funktioniert)
Kritixi Lithos
@KritixiLithos in Processing, die sizeFunktion MUSS die erste Codezeile in der Setup-Funktion sein (Gründe, warum dies kompliziert ist), daher kann ich das nicht umgehen. Ich kann alle Vorkommen von 40 auf 99 ändern, ich habe es einfach nicht getan, da es mir keinen Platz gespart hat. Ich habe hauptsächlich die Mindestgröße gewählt, um die Wahrscheinlichkeit zu erhöhen, dass jedes Pixel in einem Zeitraum von 3 Minuten aktualisiert wird
Cody,
Heh, das habe ich mir auch erst gedacht, bis mir jemand davon erzählt hat und es irgendwie geklappt hat, wie Sie hier in einem Beitrag von mir sehen können.
Kritixi Lithos
1
Das Entfernen der gesamten setup()Funktion in der neuesten Version von Processing auf meinem Computer funktioniert einwandfrei.
Kritixi Lithos
Ich denke, meine Version von Processing ist ziemlich alt und ich benutze sie nicht genug, um mich gerade um ein Upgrade zu kümmern.
Cody
2

HTML + SVG + PHP, 245 Bytes

<?$u=$_GET;$u[rand()%40][rand()%40]=sprintf("%06x",rand()%16777216);echo'<meta http-equiv="refresh" content="0.1; url=?'.http_build_query($u).'" /><svg>';foreach($u as$x=>$a)foreach($a as$y=>$c)echo"<rect x=$x y=$y width=1 height=1 fill=#$c />";

Erweitert

$u=$_GET; # Get the Url
$u[rand()%40][rand()%40]=sprintf("%06x",rand()%16777216); # Set One Value in a 2 D Array
echo'<meta http-equiv="refresh" content="0.1; url=?'.http_build_query($u).'" /><svg>'; # refresh the site after 0.1 second follow the new Get parameter
foreach($u as$x=>$a) #loop through x Coordinates as Key
  foreach($a as$y=>$c) #loop through y Coordinates as Key value is the color
    echo"<rect x=$x y=$y width=1 height=1 fill=#$c />"; #print the rects for the SVG

Beispiel für die Ausgabe ohne Meta-Tag und in einer höheren Version

<svg viewBox="0 0 40 40" width=400 height=400><rect x=11 y=39 width=1 height=1 fill=#1b372b /><rect x=11 y=7 width=1 height=1 fill=#2c55a7 /><rect x=11 y=31 width=1 height=1 fill=#97ef86 /><rect x=11 y=26 width=1 height=1 fill=#94aa0a /><rect x=11 y=4 width=1 height=1 fill=#f8bf89 /><rect x=11 y=6 width=1 height=1 fill=#266342 /><rect x=11 y=29 width=1 height=1 fill=#369d80 /><rect x=11 y=20 width=1 height=1 fill=#ccfab8 /><rect x=11 y=12 width=1 height=1 fill=#ac0273 /><rect x=13 y=25 width=1 height=1 fill=#0d95e9 /><rect x=13 y=0 width=1 height=1 fill=#d2a4cb /><rect x=13 y=37 width=1 height=1 fill=#503abe /><rect x=13 y=35 width=1 height=1 fill=#4e60ae /><rect x=13 y=30 width=1 height=1 fill=#3cdd5e /><rect x=13 y=12 width=1 height=1 fill=#60464c /><rect x=13 y=17 width=1 height=1 fill=#a3b234 /><rect x=13 y=3 width=1 height=1 fill=#48e937 /><rect x=13 y=20 width=1 height=1 fill=#58bb78 /><rect x=13 y=4 width=1 height=1 fill=#5c61e6 /><rect x=13 y=10 width=1 height=1 fill=#758613 /><rect x=13 y=21 width=1 height=1 fill=#9b3a09 /><rect x=13 y=28 width=1 height=1 fill=#6c6b3b /><rect x=13 y=32 width=1 height=1 fill=#9b3a0f /><rect x=13 y=14 width=1 height=1 fill=#0c9bcc /><rect x=38 y=34 width=1 height=1 fill=#a3a65d /><rect x=38 y=23 width=1 height=1 fill=#c4441a /><rect x=38 y=25 width=1 height=1 fill=#cec692 /><rect x=38 y=39 width=1 height=1 fill=#535401 /><rect x=38 y=30 width=1 height=1 fill=#21371a /><rect x=38 y=26 width=1 height=1 fill=#7560a4 /><rect x=38 y=33 width=1 height=1 fill=#f31f34 /><rect x=38 y=9 width=1 height=1 fill=#3fce3f /><rect x=38 y=13 width=1 height=1 fill=#78cab8 /><rect x=3 y=39 width=1 height=1 fill=#c6cf06 /><rect x=3 y=26 width=1 height=1 fill=#d7fc94 /><rect x=3 y=31 width=1 height=1 fill=#048791 /><rect x=3 y=19 width=1 height=1 fill=#140371 /><rect x=3 y=12 width=1 height=1 fill=#6e7e7a /><rect x=3 y=21 width=1 height=1 fill=#f917da /><rect x=3 y=36 width=1 height=1 fill=#00d5d7 /><rect x=3 y=24 width=1 height=1 fill=#00f119 /><rect x=34 y=15 width=1 height=1 fill=#e39bd7 /><rect x=34 y=1 width=1 height=1 fill=#c1c1b8 /><rect x=34 y=36 width=1 height=1 fill=#0d15d5 /><rect x=34 y=29 width=1 height=1 fill=#d15f57 /><rect x=34 y=11 width=1 height=1 fill=#6f73b9 /><rect x=34 y=33 width=1 height=1 fill=#93ce78 /><rect x=34 y=16 width=1 height=1 fill=#ddd7bd /><rect x=34 y=14 width=1 height=1 fill=#73caa6 /><rect x=34 y=28 width=1 height=1 fill=#972d89 /><rect x=34 y=31 width=1 height=1 fill=#27e401 /><rect x=34 y=10 width=1 height=1 fill=#559d6d /><rect x=34 y=22 width=1 height=1 fill=#170bc2 /><rect x=30 y=13 width=1 height=1 fill=#a9ac0d /><rect x=30 y=4 width=1 height=1 fill=#3d9530 /><rect x=30 y=10 width=1 height=1 fill=#67b434 /><rect x=30 y=15 width=1 height=1 fill=#54930a /><rect x=30 y=11 width=1 height=1 fill=#8ce15b /><rect x=30 y=7 width=1 height=1 fill=#ddf53d /><rect x=30 y=32 width=1 height=1 fill=#04de14 /><rect x=30 y=19 width=1 height=1 fill=#f52098 /><rect x=30 y=22 width=1 height=1 fill=#dc7d70 /><rect x=30 y=0 width=1 height=1 fill=#d458c3 /><rect x=30 y=30 width=1 height=1 fill=#1f8895 /><rect x=30 y=36 width=1 height=1 fill=#b3d891 /><rect x=30 y=29 width=1 height=1 fill=#0f9810 /><rect x=30 y=5 width=1 height=1 fill=#b4ce36 /><rect x=30 y=33 width=1 height=1 fill=#a837ba /><rect x=30 y=23 width=1 height=1 fill=#02beb3 /><rect x=30 y=24 width=1 height=1 fill=#2a75da /><rect x=37 y=2 width=1 height=1 fill=#7b3aa3 /><rect x=37 y=26 width=1 height=1 fill=#0e9fb2 /><rect x=37 y=32 width=1 height=1 fill=#afb3a1 /><rect x=37 y=24 width=1 height=1 fill=#b421d6 /><rect x=37 y=16 width=1 height=1 fill=#39e872 /><rect x=37 y=38 width=1 height=1 fill=#552970 /><rect x=37 y=11 width=1 height=1 fill=#2a0b2a /><rect x=37 y=18 width=1 height=1 fill=#1fe310 /><rect x=37 y=36 width=1 height=1 fill=#a80fe3 /><rect x=37 y=6 width=1 height=1 fill=#141100 /><rect x=26 y=13 width=1 height=1 fill=#5d521d /><rect x=26 y=11 width=1 height=1 fill=#d7227e /><rect x=26 y=1 width=1 height=1 fill=#8dae67 /><rect x=26 y=19 width=1 height=1 fill=#acfd2c /><rect x=26 y=2 width=1 height=1 fill=#307dd5 /><rect x=26 y=35 width=1 height=1 fill=#76b559 /><rect x=26 y=4 width=1 height=1 fill=#e6a551 /><rect x=12 y=34 width=1 height=1 fill=#266a0a /><rect x=12 y=16 width=1 height=1 fill=#8bcf44 /><rect x=12 y=13 width=1 height=1 fill=#00caac /><rect x=12 y=3 width=1 height=1 fill=#bb7aa5 /><rect x=12 y=37 width=1 height=1 fill=#3b0559 /><rect x=12 y=27 width=1 height=1 fill=#e82087 /><rect x=12 y=8 width=1 height=1 fill=#b65157 /><rect x=19 y=20 width=1 height=1 fill=#556336 /><rect x=19 y=33 width=1 height=1 fill=#81bca0 /><rect x=19 y=34 width=1 height=1 fill=#65478a /><rect x=19 y=35 width=1 height=1 fill=#256956 /><rect x=19 y=10 width=1 height=1 fill=#c49f9c /><rect x=19 y=12 width=1 height=1 fill=#99bd3d /><rect x=19 y=13 width=1 height=1 fill=#dae45d /><rect x=19 y=36 width=1 height=1 fill=#de28e2 /><rect x=19 y=30 width=1 height=1 fill=#f26ff1 /><rect x=4 y=23 width=1 height=1 fill=#3a31dc /><rect x=4 y=4 width=1 height=1 fill=#d480e7 /><rect x=4 y=24 width=1 height=1 fill=#a304c6 /><rect x=4 y=28 width=1 height=1 fill=#775aeb /><rect x=4 y=16 width=1 height=1 fill=#d942d1 /><rect x=4 y=8 width=1 height=1 fill=#ad6c7e /><rect x=4 y=3 width=1 height=1 fill=#8ef507 /><rect x=4 y=9 width=1 height=1 fill=#c59549 /><rect x=4 y=7 width=1 height=1 fill=#f757fb /><rect x=4 y=35 width=1 height=1 fill=#2db5de /><rect x=20 y=22 width=1 height=1 fill=#340f7b /><rect x=20 y=2 width=1 height=1 fill=#ae6b7c /><rect x=20 y=20 width=1 height=1 fill=#120232 /><rect x=20 y=1 width=1 height=1 fill=#bb534c /><rect x=20 y=11 width=1 height=1 fill=#a736a1 /><rect x=20 y=38 width=1 height=1 fill=#63646f /><rect x=20 y=8 width=1 height=1 fill=#8e2095 /><rect x=20 y=27 width=1 height=1 fill=#2ae2c6 /><rect x=32 y=20 width=1 height=1 fill=#56dc7a /><rect x=32 y=34 width=1 height=1 fill=#ec16ca /><rect x=32 y=19 width=1 height=1 fill=#e2ce80 /><rect x=32 y=21 width=1 height=1 fill=#5c7638 /><rect x=32 y=0 width=1 height=1 fill=#35647c /><rect x=32 y=33 width=1 height=1 fill=#9e174a /><rect x=32 y=5 width=1 height=1 fill=#8217b4 /><rect x=32 y=30 width=1 height=1 fill=#b3e018 /><rect x=32 y=36 width=1 height=1 fill=#90ea3d /><rect x=22 y=29 width=1 height=1 fill=#9d975f /><rect x=22 y=12 width=1 height=1 fill=#b50680 /><rect x=22 y=31 width=1 height=1 fill=#9cd270 /><rect x=22 y=16 width=1 height=1 fill=#05a7f7 /><rect x=22 y=20 width=1 height=1 fill=#f6c4d5 /><rect x=22 y=21 width=1 height=1 fill=#9b0dd8 /><rect x=22 y=22 width=1 height=1 fill=#bc1c9e /><rect x=22 y=26 width=1 height=1 fill=#22b4c3 /><rect x=22 y=36 width=1 height=1 fill=#f54b7b /><rect x=22 y=19 width=1 height=1 fill=#7d3be4 /><rect x=22 y=6 width=1 height=1 fill=#ff9c6f /><rect x=22 y=34 width=1 height=1 fill=#cce01c /><rect x=22 y=30 width=1 height=1 fill=#7c4fd0 /><rect x=22 y=33 width=1 height=1 fill=#c2ef4e /><rect x=25 y=3 width=1 height=1 fill=#35c580 /><rect x=25 y=31 width=1 height=1 fill=#172b52 /><rect x=25 y=39 width=1 height=1 fill=#5e724d /><rect x=25 y=10 width=1 height=1 fill=#f50c4a /><rect x=25 y=4 width=1 height=1 fill=#012808 /><rect x=25 y=33 width=1 height=1 fill=#3a0dc3 /><rect x=25 y=12 width=1 height=1 fill=#2f254a /><rect x=25 y=30 width=1 height=1 fill=#19ff2c /><rect x=25 y=38 width=1 height=1 fill=#4a3112 /><rect x=0 y=1 width=1 height=1 fill=#886f4f /><rect x=0 y=35 width=1 height=1 fill=#0bb010 /><rect x=0 y=0 width=1 height=1 fill=#a7f77e /><rect x=0 y=27 width=1 height=1 fill=#1b38da /><rect x=0 y=39 width=1 height=1 fill=#3788ae /><rect x=0 y=13 width=1 height=1 fill=#af5149 /><rect x=0 y=32 width=1 height=1 fill=#dcb445 /><rect x=0 y=20 width=1 height=1 fill=#36a218 /><rect x=0 y=2 width=1 height=1 fill=#aacbb8 /><rect x=0 y=14 width=1 height=1 fill=#fb17e3 /><rect x=17 y=8 width=1 height=1 fill=#cb2be8 /><rect x=17 y=11 width=1 height=1 fill=#dd80b1 /><rect x=17 y=35 width=1 height=1 fill=#a269aa /><rect x=17 y=6 width=1 height=1 fill=#9faf64 /><rect x=17 y=9 width=1 height=1 fill=#762811 /><rect x=17 y=23 width=1 height=1 fill=#94fa57 /><rect x=17 y=26 width=1 height=1 fill=#9bacc3 /><rect x=17 y=1 width=1 height=1 fill=#93c849 /><rect x=17 y=4 width=1 height=1 fill=#4a9fd4 /><rect x=17 y=22 width=1 height=1 fill=#1fc5f3 /><rect x=17 y=37 width=1 height=1 fill=#76d6a3 /><rect x=17 y=5 width=1 height=1 fill=#a13389 /><rect x=9 y=38 width=1 height=1 fill=#064ba3 /><rect x=9 y=23 width=1 height=1 fill=#cc83ad /><rect x=9 y=25 width=1 height=1 fill=#1de7e8 /><rect x=9 y=3 width=1 height=1 fill=#834afe /><rect x=9 y=9 width=1 height=1 fill=#15a0fb /><rect x=9 y=27 width=1 height=1 fill=#4d54dc /><rect x=9 y=21 width=1 height=1 fill=#2bf614 /><rect x=9 y=28 width=1 height=1 fill=#8080b7 /><rect x=9 y=39 width=1 height=1 fill=#d76a3b /><rect x=9 y=33 width=1 height=1 fill=#f8da2c /><rect x=9 y=26 width=1 height=1 fill=#5884ae /><rect x=7 y=39 width=1 height=1 fill=#a0264b /><rect x=7 y=15 width=1 height=1 fill=#bd87c7 /><rect x=7 y=18 width=1 height=1 fill=#4d4878 /><rect x=7 y=35 width=1 height=1 fill=#1dcc8c /><rect x=7 y=38 width=1 height=1 fill=#76497f /><rect x=7 y=1 width=1 height=1 fill=#87b1ae /><rect x=35 y=24 width=1 height=1 fill=#5d947e /><rect x=35 y=17 width=1 height=1 fill=#eabbdc /><rect x=35 y=19 width=1 height=1 fill=#01c75b /><rect x=35 y=36 width=1 height=1 fill=#06b0dd /><rect x=35 y=21 width=1 height=1 fill=#0fbba8 /><rect x=35 y=1 width=1 height=1 fill=#480be1 /><rect x=35 y=11 width=1 height=1 fill=#3f8ef6 /><rect x=35 y=30 width=1 height=1 fill=#7691d0 /><rect x=35 y=13 width=1 height=1 fill=#c9a286 /><rect x=27 y=12 width=1 height=1 fill=#08083e /><rect x=27 y=25 width=1 height=1 fill=#95d3b4 /><rect x=27 y=30 width=1 height=1 fill=#584c1b /><rect x=27 y=9 width=1 height=1 fill=#c01082 /><rect x=27 y=3 width=1 height=1 fill=#3bf653 /><rect x=27 y=33 width=1 height=1 fill=#c06f23 /><rect x=27 y=38 width=1 height=1 fill=#184c3e /><rect x=27 y=0 width=1 height=1 fill=#725d4c /><rect x=27 y=36 width=1 height=1 fill=#e7a71b /><rect x=27 y=16 width=1 height=1 fill=#43c039 /><rect x=23 y=30 width=1 height=1 fill=#947161 /><rect x=23 y=37 width=1 height=1 fill=#e8a8e5 /><rect x=23 y=12 width=1 height=1 fill=#bd9976 /><rect x=23 y=6 width=1 height=1 fill=#15085d /><rect x=23 y=31 width=1 height=1 fill=#102c95 /><rect x=23 y=24 width=1 height=1 fill=#173bc2 /><rect x=23 y=2 width=1 height=1 fill=#bac13c /><rect x=23 y=36 width=1 height=1 fill=#eb5a88 /><rect x=23 y=22 width=1 height=1 fill=#5ddc38 /><rect x=28 y=19 width=1 height=1 fill=#1ea833 /><rect x=28 y=38 width=1 height=1 fill=#dc6f6b /><rect x=28 y=2 width=1 height=1 fill=#d9fd8a /><rect x=28 y=15 width=1 height=1 fill=#eb213e /><rect x=28 y=22 width=1 height=1 fill=#b23956 /><rect x=28 y=16 width=1 height=1 fill=#875b0a /><rect x=28 y=14 width=1 height=1 fill=#ba6172 /><rect x=28 y=18 width=1 height=1 fill=#b9779a /><rect x=39 y=26 width=1 height=1 fill=#df5e52 /><rect x=39 y=4 width=1 height=1 fill=#aabb4f /><rect x=39 y=2 width=1 height=1 fill=#7ce85c /><rect x=39 y=16 width=1 height=1 fill=#1f70a8 /><rect x=39 y=15 width=1 height=1 fill=#55e398 /><rect x=39 y=29 width=1 height=1 fill=#955213 /><rect x=39 y=33 width=1 height=1 fill=#976c99 /><rect x=39 y=34 width=1 height=1 fill=#a23109 /><rect x=39 y=25 width=1 height=1 fill=#36aeae /><rect x=39 y=9 width=1 height=1 fill=#28a600 /><rect x=39 y=17 width=1 height=1 fill=#771e5b /><rect x=39 y=30 width=1 height=1 fill=#9980b1 /><rect x=31 y=14 width=1 height=1 fill=#8ffea6 /><rect x=31 y=13 width=1 height=1 fill=#d35c5c /><rect x=31 y=39 width=1 height=1 fill=#407beb /><rect x=31 y=10 width=1 height=1 fill=#45ba53 /><rect x=31 y=2 width=1 height=1 fill=#842997 /><rect x=31 y=20 width=1 height=1 fill=#ca47b0 /><rect x=31 y=37 width=1 height=1 fill=#ed098e /><rect x=31 y=5 width=1 height=1 fill=#041b67 /><rect x=31 y=22 width=1 height=1 fill=#4aaaa6 /><rect x=31 y=31 width=1 height=1 fill=#40ccbd /><rect x=31 y=27 width=1 height=1 fill=#6325ca /><rect x=33 y=18 width=1 height=1 fill=#cfbbbc /><rect x=33 y=34 width=1 height=1 fill=#b3f6b8 /><rect x=33 y=26 width=1 height=1 fill=#ef3b82 /><rect x=33 y=16 width=1 height=1 fill=#c7df5b /><rect x=33 y=39 width=1 height=1 fill=#5ad5ba /><rect x=33 y=12 width=1 height=1 fill=#9361fd /><rect x=33 y=35 width=1 height=1 fill=#1f4795 /><rect x=33 y=3 width=1 height=1 fill=#86a80c /><rect x=33 y=17 width=1 height=1 fill=#582008 /><rect x=33 y=9 width=1 height=1 fill=#686941 /><rect x=33 y=36 width=1 height=1 fill=#76ada4 /><rect x=33 y=21 width=1 height=1 fill=#511f50 /><rect x=33 y=14 width=1 height=1 fill=#64aaf7 /><rect x=8 y=28 width=1 height=1 fill=#3de9b7 /><rect x=8 y=24 width=1 height=1 fill=#5c8451 /><rect x=8 y=31 width=1 height=1 fill=#e75b30 /><rect x=8 y=38 width=1 height=1 fill=#4ee9d0 /><rect x=8 y=29 width=1 height=1 fill=#544381 /><rect x=8 y=16 width=1 height=1 fill=#12332f /><rect x=8 y=0 width=1 height=1 fill=#9e775f /><rect x=8 y=34 width=1 height=1 fill=#02224e /><rect x=8 y=1 width=1 height=1 fill=#b299f4 /><rect x=8 y=10 width=1 height=1 fill=#b2bd80 /><rect x=8 y=20 width=1 height=1 fill=#054876 /><rect x=8 y=27 width=1 height=1 fill=#ab273a /><rect x=2 y=30 width=1 height=1 fill=#1bd5f4 /><rect x=2 y=10 width=1 height=1 fill=#b00e99 /><rect x=2 y=9 width=1 height=1 fill=#bf18b0 /><rect x=2 y=8 width=1 height=1 fill=#9aa92b /><rect x=2 y=16 width=1 height=1 fill=#aa7e3d /><rect x=2 y=1 width=1 height=1 fill=#c383ea /><rect x=2 y=24 width=1 height=1 fill=#63ab54 /><rect x=2 y=19 width=1 height=1 fill=#086cac /><rect x=2 y=0 width=1 height=1 fill=#4510cc /><rect x=2 y=6 width=1 height=1 fill=#7b529c /><rect x=6 y=27 width=1 height=1 fill=#fcc946 /><rect x=6 y=20 width=1 height=1 fill=#0a7324 /><rect x=6 y=26 width=1 height=1 fill=#d93cc2 /><rect x=6 y=14 width=1 height=1 fill=#c8d410 /><rect x=6 y=33 width=1 height=1 fill=#0e5b22 /><rect x=6 y=1 width=1 height=1 fill=#e2accf /><rect x=6 y=2 width=1 height=1 fill=#06064a /><rect x=6 y=39 width=1 height=1 fill=#fae1de /><rect x=6 y=30 width=1 height=1 fill=#db50d3 /><rect x=6 y=15 width=1 height=1 fill=#59b1c5 /><rect x=6 y=16 width=1 height=1 fill=#a0178a /><rect x=16 y=29 width=1 height=1 fill=#1eb287 /><rect x=16 y=31 width=1 height=1 fill=#5fa9b0 /><rect x=16 y=36 width=1 height=1 fill=#918835 /><rect x=16 y=2 width=1 height=1 fill=#d46404 /><rect x=16 y=1 width=1 height=1 fill=#31808e /><rect x=16 y=15 width=1 height=1 fill=#22d652 /><rect x=10 y=25 width=1 height=1 fill=#94f771 /><rect x=10 y=14 width=1 height=1 fill=#e3a90a /><rect x=10 y=4 width=1 height=1 fill=#7fbdb3 /><rect x=10 y=32 width=1 height=1 fill=#d71f68 /><rect x=10 y=10 width=1 height=1 fill=#f3dcd7 /><rect x=10 y=27 width=1 height=1 fill=#cadd64 /><rect x=10 y=31 width=1 height=1 fill=#3c38c0 /><rect x=10 y=34 width=1 height=1 fill=#542641 /><rect x=10 y=19 width=1 height=1 fill=#e17ef2 /><rect x=10 y=24 width=1 height=1 fill=#676729 /><rect x=10 y=11 width=1 height=1 fill=#619f8e /><rect x=10 y=0 width=1 height=1 fill=#1576eb /><rect x=10 y=16 width=1 height=1 fill=#52854c /><rect x=36 y=2 width=1 height=1 fill=#fe133c /><rect x=36 y=31 width=1 height=1 fill=#b67ea7 /><rect x=36 y=7 width=1 height=1 fill=#92babc /><rect x=36 y=16 width=1 height=1 fill=#fc24a0 /><rect x=36 y=26 width=1 height=1 fill=#a80f75 /><rect x=36 y=15 width=1 height=1 fill=#5ddb90 /><rect x=18 y=13 width=1 height=1 fill=#64180c /><rect x=18 y=9 width=1 height=1 fill=#d67c04 /><rect x=18 y=18 width=1 height=1 fill=#3e0988 /><rect x=18 y=4 width=1 height=1 fill=#072b32 /><rect x=18 y=34 width=1 height=1 fill=#723cab /><rect x=18 y=14 width=1 height=1 fill=#560f7d /><rect x=18 y=29 width=1 height=1 fill=#4a7dd0 /><rect x=18 y=30 width=1 height=1 fill=#db0cfc /><rect x=18 y=16 width=1 height=1 fill=#f79bbf /><rect x=14 y=18 width=1 height=1 fill=#e45cec /><rect x=14 y=4 width=1 height=1 fill=#05b63c /><rect x=14 y=38 width=1 height=1 fill=#ee0251 /><rect x=14 y=14 width=1 height=1 fill=#12fb9f /><rect x=14 y=17 width=1 height=1 fill=#f8fbc9 /><rect x=14 y=22 width=1 height=1 fill=#58e112 /><rect x=14 y=1 width=1 height=1 fill=#a5bc5c /><rect x=14 y=10 width=1 height=1 fill=#3c6002 /><rect x=14 y=5 width=1 height=1 fill=#556f7a /><rect x=14 y=36 width=1 height=1 fill=#ccfaa9 /><rect x=14 y=15 width=1 height=1 fill=#2a8597 /><rect x=1 y=28 width=1 height=1 fill=#899272 /><rect x=1 y=29 width=1 height=1 fill=#be4da2 /><rect x=1 y=6 width=1 height=1 fill=#cbe1a5 /><rect x=1 y=1 width=1 height=1 fill=#8aebd4 /><rect x=1 y=31 width=1 height=1 fill=#547b9e /><rect x=1 y=10 width=1 height=1 fill=#ba7996 /><rect x=1 y=34 width=1 height=1 fill=#e29661 /><rect x=1 y=0 width=1 height=1 fill=#899d3f /><rect x=1 y=4 width=1 height=1 fill=#6993f0 /><rect x=1 y=13 width=1 height=1 fill=#119a7c /><rect x=1 y=15 width=1 height=1 fill=#e7c61c /><rect x=1 y=17 width=1 height=1 fill=#6e8770 /><rect x=1 y=36 width=1 height=1 fill=#cdda71 /><rect x=5 y=8 width=1 height=1 fill=#318f52 /><rect x=5 y=34 width=1 height=1 fill=#763499 /><rect x=5 y=37 width=1 height=1 fill=#5d0d72 /><rect x=5 y=0 width=1 height=1 fill=#97c9e7 /><rect x=5 y=12 width=1 height=1 fill=#babcca /><rect x=5 y=20 width=1 height=1 fill=#37d5cb /><rect x=5 y=31 width=1 height=1 fill=#642296 /><rect x=5 y=24 width=1 height=1 fill=#a6688c /><rect x=5 y=1 width=1 height=1 fill=#697956 /><rect x=29 y=32 width=1 height=1 fill=#b53b61 /><rect x=29 y=7 width=1 height=1 fill=#d131a3 /><rect x=29 y=18 width=1 height=1 fill=#0e082e /><rect x=29 y=17 width=1 height=1 fill=#8ca3dd /><rect x=29 y=11 width=1 height=1 fill=#376e46 /><rect x=29 y=20 width=1 height=1 fill=#11e2cf /><rect x=29 y=37 width=1 height=1 fill=#24b8de /><rect x=24 y=10 width=1 height=1 fill=#a906da /><rect x=24 y=36 width=1 height=1 fill=#ae0516 /><rect x=24 y=8 width=1 height=1 fill=#e0b9b1 /><rect x=24 y=27 width=1 height=1 fill=#29b27b /><rect x=24 y=33 width=1 height=1 fill=#78ea3e /><rect x=24 y=7 width=1 height=1 fill=#e5147e /><rect x=24 y=11 width=1 height=1 fill=#ce7084 /><rect x=24 y=23 width=1 height=1 fill=#78f645 /><rect x=24 y=25 width=1 height=1 fill=#a01f02 /><rect x=24 y=4 width=1 height=1 fill=#e4340c /><rect x=24 y=16 width=1 height=1 fill=#9b69d7 /><rect x=21 y=31 width=1 height=1 fill=#58ca7d /><rect x=21 y=39 width=1 height=1 fill=#037cb5 /><rect x=21 y=36 width=1 height=1 fill=#097454 /><rect x=21 y=28 width=1 height=1 fill=#71d744 /><rect x=21 y=38 width=1 height=1 fill=#10457c /><rect x=15 y=2 width=1 height=1 fill=#f4bf09 /><rect x=15 y=7 width=1 height=1 fill=#90357d /><rect x=15 y=27 width=1 height=1 fill=#6079ba /><rect x=15 y=5 width=1 height=1 fill=#cff723 /><rect x=15 y=17 width=1 height=1 fill=#54a6db />

Jörg Hülsermann
quelle
2

C ++ unter Windows, 125 Byte

#include<Windows.h>
#include<ctime>
#define r rand()%256
int main(){for(srand(time(0));;)SetPixel(GetDC(0),r,r,RGB(r,r,r));}

Zeilenumbrüche erforderlich und in der Byteanzahl enthalten.

Endlos wiederholbar, wählt zufällig eine Position zwischen 0 und 255 (einschließlich) für Zeilen- und Spaltenwerte aus, weist zufällige R-, G- und B-Werte zwischen 0 und 255 (einschließlich) zu

Tas
quelle
1
Mir ist klar, dass du das spielst, aber der Mensch, der jedes Mal einen Gerätekontext durch die Schleife verliert, bringt meine Spidey-Senses zum Kribbeln!
Cody Grey
Sparen Sie 15 Bytes, indem Sie C unter Windows anstelle von C ++ unter Windows festlegen, da Sie mit C-Compilern das #includes weglassen können. (Und ja, es gibt nicht-Visual Studio C-Compiler für Windows.)
MD XF
2

Python 3.6 + Tkinter, 281 Byte

from tkinter import*
from random import*
from threading import*
a=randrange
x=40
d={"width":x,"height":x}
w=Tk()
c=Canvas(w,**d)
c.pack()
i=PhotoImage(**d)
c.create_image((20,20),image=i)
def r():
 while 1:i.put(f"{a(0,0xffffff):0>6f}",(a(0,x),a(0,x)))
Thread(r).start()
mainloop()
Martmisten
quelle
Da tkinteres sich um eine Standardbibliothek handelt, müssen Sie sie nicht in den Header aufnehmen
caird coinheringaahing
Ich erhalte den gleichen Fehler - Windows 10, Python 3.6.0 Ich kann mir vorstellen, warum init vier übergebene Parameter sieht - der Methode wird implizit ein "self" -Parameter übergeben. Aber ich habe keine Ahnung, warum das einen Fehler erzeugt, da die Dokumentation zeigt, dass der Canvas-Konstruktor drei Parameter (master, x, y) akzeptiert, wie im Code gezeigt.
CCB60
Sollte jetzt behoben sein.
Martmists
1
auch @Ilikemydog Tkinter ist nicht immer in stdlib. Unter Windows ist die Installation optional, und ich glaube nicht, dass auf meiner Arch-Partition Tkinter installiert ist. Könnte es auch einschließen.
Martmists
Es gibt Tippfehler - "img" anstelle von "i". Und es funktioniert immer noch nicht, diesmal bekomme ichc.create_image((20,20),i) File "C:\Python36\lib\tkinter\__init__.py", line 2483, in create_image return self._create('image', args, kw) File "C:\Python36\lib\tkinter\__init__.py", line 2474, in _create *(args + self._options(cnf, kw)))) _tkinter.TclError: unknown option "pyimage1"
Mikhail V
2

JavaScript (ES7) + HTML mit SVG, 129 + 10 = 139 Byte

SVG-Version, stark inspiriert von @ Octopus <canvas>Ansatz .

JS

r=n=>n*Math.random()|0
setInterval('s.innerHTML+=`<rect x=${r(40)} y=${r(40)} fill=#${r(2**24).toString(16)} width=1 height=1>`')

HTML

<svg id=s>

Da das Stack-Snippet das Skript gerne durch Parsen des <rect>Tags unterbricht , ist hier ein CodePen .

darrylyeo
quelle
2

6502 Assembly, 92 Bytes

loo: lda $fe
sta $00
lda $fe
and #$3
clc
adc #$2
sta $01
lda $fe
ldy #$0
sta ($00),y
jmp loo

Ausgabe:

Ausgabe

Erläuterung:

loop: lda $fe       ; accumulator = random
      sta $00       ; store accumulator
      lda $fe       ; accumulator = random
      and #$3       ; accumulator &= 3
      clc           ; clear carry
      adc #$2       ; accumulator += 2
      sta $01       ; store accumulator
      lda $fe       ; accumulator = random
      ldy #$0       ; register Y = 0
      sta ($00),y   ; store register Y
      jmp loop      ; loop
MD XF
quelle
1
Was ist Ihre Zielplattform 6502 hier? BBC Micro? Apfel ][? Commodore VIC-20 etc ...?
Shaun Bebbers
Müssen Labelnamen mindestens drei Zeichen lang sein?
Jonathan Frech
2

LOGO, 71 Bytes

Die einzige Sprache, die ich kenne, die nicht esoterisch / speziell für das Codegolfing konzipiert ist und foreverFunktion hat. Irgendeine Idee von der mapSeite?

pu forever[setxy random 100 random 100 setpixel map[random 256][1 1 1]]
user202729
quelle
2

shortC , 66 56 Bytes

Dr rand()
AOZR"\e[%d;%dH\e[%d;4%dm ",r%40,r%40,r%2,r%8);

-10 Bytes danke an Dr. Rand. : P

A                                                                  main function
 O                                                                 for
  Z                                                                seed rand()
   R                                                               print
    "\e[%d;%dH                                                     coordinate placeholder string
              \e[%d;4%dm "                                         color placeholder string
                          ,rand()%40,rand()%40,rand()%2,rand()%8   fill placeholders
                                                                ); interpreter hole

Kein TIO-Link, da Sie offensichtlich nicht auf die Art von Terminal drucken können, die online erforderlich ist.

MD XF
quelle
2

Perl (on * nix), 69 Bytes

Das \x1bs sind buchstäbliche Escape-Zeichen.

Verlässt sich auf sttyBefehle und funktioniert gut unter OS X.

{printf"\x1b[%i;%iH\x1b[48;5;%im ",map{rand$_}`stty size`=~/\d+/g,256;redo}

Ähnlich wie bei anderen Ansätzen, aber ich mochte die Kombination aller Parameter in einem Aufruf, um zu glauben printf, ich würde teilen. Tötet mein Terminal.

Bildbeschreibung hier eingeben


Doppelt so viele Pixel, 83 Bytes

{printf"\x1b[%i;%iH\x1b[48;5;%i;38;5;%im▄",map{rand$_}`stty size`=~/\d+/g,256,256;redo}

Dieser Ansatz verwendet einen Unicode-Block und eine zufällige Vordergrund- und Hintergrundfarbe, die ein quadratischeres Pixel ergibt. Tötet auch mein Terminal, sieht aber cooler aus.

Bildbeschreibung hier eingeben

Dom Hastings
quelle
Vergessen Sie nicht, dass Sie statt des literalen Escape-Bytes ASCII 0x1B (27) verwenden können \e. Und auf StackExchange kann dies durch dargestellt werden .
MD XF
@MDXF Ja ... ich muss das als Skript testen, weil das nicht über funktionierte -e! Ich muss auch die Byteanzahl des mit Unicode erhöhen. Hoppla! Danke für die Erinnerung!
Dom Hastings
2

Bash, 104 Bytes

Das \es sind buchstäbliche Escape-Zeichen.

Dies sind so ziemlich alle Übersetzungen meines Perl-Beitrags, aber unter Verwendung der Bash-Fork-Bomb-Syntax! Ich fürchte, nicht so clever wie der andere Bash-Eintrag, der direkt auf das Display schreibt.

:(){ printf "\e[%i;%iH\e[48;5;%im " $((RANDOM%`tput lines`)) $((RANDOM%`tput cols`)) $((RANDOM%256));:;};:

Mehr Pixel, 130 Bytes

Wie bei meiner Perl-Antwort wird ein Unicode-Zeichen für den Vordergrund verwendet und der Hintergrund jedes Pixels wird ebenfalls eingefärbt.

:(){ printf "\e[%i;%iH\e[48;5;%i;38;5;%im▄" $((RANDOM%`tput lines`)) $((RANDOM%`tput cols`)) $((RANDOM%256)) $((RANDOM%256));:;};:
Dom Hastings
quelle
Nicht schlecht. Ich verstehe das aber immer noch nicht "\e[48;5;%im". Warum sind die 48 und 5 notwendig?
MD XF
Das greift auf die vollen 256 Farben zu und nicht nur auf die 16-Farben-Standardpalette. In Terminals, die dies unterstützen, ist es möglich, \e[48;2;RRR;GGG;BBBmnur sehr wenige Terminalemulatoren zu verwenden, die dies unterstützen ... :(
Dom Hastings
Heilige Mutter des Codes ... Ich hatte keine Ahnung, dass das möglich war. Mein Leben ist eine Lüge. Tausend Dank: P
MD XF
@MDXF ^^ und 38;5kennzeichnet auch den Vordergrund und 48;5spendet den Hintergrund. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings
1
@ MDXF Keine Sorge! Froh, dass ich Helfen kann! Schade, dass ich das verpasst habe, als es brandneu war, aber diese Minecraft-Antwort ... unwirklich!
Dom Hastings
2

x86-Maschinensprache (Real-Modus) für IBM PC, 20 bis 19 Byte

 0:       b8 12 00                mov    $0x12,%ax
 3:       31 db                   xor    %bx,%bx
 5:       cd 10                   int    $0x10
 7:       0f c7 f0                rdrand %ax
 a:       88 e1                   mov    %ah,%cl
 c:       0f c7 f2                rdrand %dx
 f:       b4 0c                   mov    $0xc,%ah
11:       eb f2                   jmp    0x5

Dies erfordert einen Prozessor mit der rdrandAnweisung und einen VGA-Adapter (real oder emuliert). Das Obige kann in einen Startblock oder eine MS-DOS * .COM-Datei kopiert werden.

Um dies auszuprobieren, kompilieren Sie Folgendes und speichern Sie die Ausgabe in einer Datei wie floppy.imgund starten Sie das Image auf einer virtuellen Maschine.

#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main(){
  char buffer[ 1440*1024 ];
  memcpy( buffer, "\xb8\x12\x00\x31\xdb\xcd\x10\x0f\xc7\xf0\x88\xe1\x0f\xc7\xf2\xb4\x0c\xeb\xf2", 20 );
  memcpy( buffer + 510, "\x55\xaa", 2 );
  write( 1, buffer, sizeof buffer );
}
Ceilingcat
quelle
2

Super Chip (48), 12 Bytes

0x00FF 'enter high resolution mode (64x128 pixels)
0xA209 'set I to 0x209 (second byte of draw instruction)
0xC03F 'set register 0 to a random number from 0 to 63
0xC13F 'set register 1 to a random number from 0 to 63
0xD101 'draw a sprite. x=register 1, y=register 0, height=1
0x1204 'jump to third instruction

Der genaue Name ist mir nicht bekannt, aber ich musste ihn wegen der 40x40 Pixel-Beschränkung anstelle von normalem Chip-8 verwenden.

12Me21
quelle
Link zu dieser (sehr interessanten) Sprache?
MD XF
Sie können den Octo-Emulator verwenden: johnearnest.github.io/Octo
12Me21 16.10.17
2

QBIC , 34 Bytes

screen 12{pset(_r640|,_r480|),_r16

Leider legt QBIC standardmäßig keinen SCREENModus fest, sodass einige Bytes verbraucht werden . PSETist ein unzulässiger Befehl im grafischen Standardkontext von QBIC.

Erläuterung

screen 12           Set the screen to a mode supporting (colored) graphics
{                   DO until the compiler is killed by ctrl-scroll lock
pset                PSET is a QBasic command to set one pixel
(_r640|,_r480|)     it takes a set of coords (x, y) which QBIC chooses at random with _r
,_r16               and a color (1,16)

Beispielausgabe

@Anonymous hat einen Fehler in der rnd()Funktion von QBIC gefunden . Fixing, dass die Ausgabe unten gibt. Vielen Dank!

Bildbeschreibung hier eingeben

steenbergh
quelle
Wie aus dem Screenshot ersichtlich sein sollte, erfüllt Ihre Lösung die Zufallsbedingungen nicht. Bei einer gegebenen Koordinate sind nicht alle Farben gleich wahrscheinlich, und bei einer gegebenen Farbe sind nicht alle Koordinaten gleich wahrscheinlich. Sie sind stark korreliert und das ist milde ausgedrückt. Das Problem ist der Zufallsgenerator, den Sie verwenden: FUNCTION getRandomNumber! (Bottom!, Top!) ↵ RANDOMIZE TIMER 'this sets the random number generator ↵ IF Bottom > Top THEN ... END IF ↵ getRandomNumber = INT((Top - Bottom + 1) * RND + Bottom) ↵ END FUNCTIONIhre Zufallszahlen sind nur Hashes der aktuellen Zeit.
Anonym
@Anonymous Es ist jetzt behoben, danke!
Steenbergh
2

6502 Assembly, 582 Bytes

Puh, das hat Spaß gemacht. Funktioniert mehr oder weniger wie meine Applesoft BASIC-Lösung.

start:
lda #15
sta $0
sta $1
loo:
lda $fe
and #3
cmp #0
beq g_l
cmp #1
beq g_r
cmp #2
beq g_d
dec $1
d_w:
lda $1
and #$1f
asl
tax
lda ypo,x
sta $2
inx
lda ypo,x
sta $3
lda $0
and #$1f
tay
lda ($2),y
tax
inx
txa
sta ($2),y
jmp loo
g_d:
inc $1
jmp d_w
g_l:
dec $0
jmp d_w
g_r:
inc $0
jmp d_w
ypo:
dcb $00,$02,$20,$02,$40,$02,$60,$02
dcb $80,$02,$a0,$02,$c0,$02,$e0,$02
dcb $00,$03,$20,$03,$40,$03,$60,$03
dcb $80,$03,$a0,$03,$c0,$03,$e0,$03
dcb $00,$04,$20,$04,$40,$04,$60,$04
dcb $80,$04,$a0,$04,$c0,$04,$e0,$04
dcb $00,$05,$20,$05,$40,$05,$60,$05
dcb $80,$05,$a0,$05,$c0,$05,$e0,$05
MD XF
quelle
Ist dies die ungolfierte Version Ihrer anderen 6502-Assembly-Antwort ? :-)
Cody Grey
@CodyGray Nein, es macht die Dinge ein bisschen anders. Es ähnelt eher meiner Applesoft BASIC-Antwort (verwendet einen Zufallsrundgang), und die andere 6502-Assembly-Antwort ähnelt eher allen anderen.
MD XF
Ich bin mit der Anzahl der Bytes nicht einverstanden: Dies ist viel kürzer als 583 Bytes Assembly?
Olivier Dulac
@OlivierDulac tio.run/##Zc/… ?
MD XF
2

Powershell, 128 126 124 Bytes

-2 Bytes danke @Veskah

for(){($c=[Console])::SetCursorPosition((random($c::WindowWidth)),(random($c::WindowHeight)))
Write-Host ' '-b(random 16)-n}

Ausgabe:

Konsole

VS-Code-Ausgabe:

VS-Code

mazzy
quelle
1
Benötigen