Visualizza pixel colorati casuali


47

Mi sono sempre piaciuti gli schermi pieni di pixel colorati in modo casuale. Sono interessanti da guardare e i programmi che li disegnano sono divertenti da guardare.

La sfida

Riempi lo schermo o una finestra grafica con pixel colorati.

Le regole

  • Il tuo programma deve avere una possibilità pari di scegliere tutti i colori (cioè nell'intervallo #000000da #FFFFFF) o tutti i colori che possono essere visualizzati sul tuo sistema.
  • Il programma deve continuare a visualizzare pixel casuali fino all'arresto manuale (non può terminare da solo).
  • I pixel possono avere qualsiasi dimensione, purché l'output abbia almeno 40x40 "pixel".
  • Il programma deve funzionare a una velocità tale da poter sostituire ogni pixel sullo schermo / finestra almeno una volta dopo averlo eseguito per tre minuti.
  • Il tuo programma deve scegliere colori e punti veramente casuali da sostituire, cioè casuali con tutti i punti / colori ugualmente probabili. Non può solo sembrare casuale. Deve utilizzare un pRNG o superiore e l'output non può essere lo stesso ogni volta.
  • Il tuo programma deve avere le stesse possibilità di scegliere tutti i colori per ogni iterazione .
  • Il tuo programma deve sostituire solo un pixel alla volta.
  • Il tuo programma non può usare Internet né il tuo filesystem ( /dev/randome /dev/urandomsalvo).

Esempio

Il tuo output potrebbe apparire così se interrotto in un momento casuale:

Il vincitore

Vince la risposta più breve in ogni lingua. Divertiti!


Con "veramente casuale", presumo che pseudorandom sia OK (come Math.random () o simile)
OldBunny2800,

@ OldBunny2800It must use a pRNG or better
TheLethalCoder

Dal momento che il programma non può usare Internet, lo lascerò in un commento: babelia.libraryofbabel.info/slideshow.html
KSmarts,

1
Quindi il "limite di 3 minuti" si applica anche al tempo di installazione? O solo una volta che inizia il "programma"? Mi chiedo perché ho una soluzione Redstone di Minecraft, che gira molto velocemente una volta che sta andando, ma richiede un po 'di tempo per installarsi inizialmente (deve "posizionare" ogni "pixel" nella griglia 40x40) prima che possa iniziare a cambiare i colori.
BradC,

5
Veramente casuale per definizione esclude lo pseudo- casuale, ma non definisce una distribuzione. Suppongo che intendi un PRNG uniforme , in cui tutti gli eventi sono equiprobabili e indipendenti l'uno dall'altro.
Dennis il

Risposte:


84

Minecraft 1.12 Redstone Command Blocks, 4.355 2.872 byte

Schermata di Minecraft con supporti per armature e mappa

(Dimensione determinata dalla dimensione del file del blocco struttura salvato.)

Ecco una panoramica completa di YouTube , ma proverò a delineare il codice qui sotto.

Routine di installazione:

2 file di blocchi di comandi per l'installazione

Questo imposta la griglia 40x40 dei supporti per armature Minecraft. I supporti per armature sono necessari perché Minecraft non ha modo di sostituire le variabili in coordinate mondiali . Quindi la soluzione alternativa è fare riferimento alla posizione di queste entità di supporto per armature.

(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

Questo supporto per armature nominato è sostanzialmente il nostro "cursore" per posizionare tutti i supporti per armature di cui avremo bisogno. Il blocco di pietra rossa nell'ultimo passaggio "alimenta" i blocchi vicini (inclusi i nostri blocchi di comando), quindi inizia il ciclo successivo:

(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

A questo punto la nostra griglia è completa:

Griglia di supporto armatura completata

Selettore colore casuale

Selettore colore e pixel

I ripetitori viola al centro di questa immagine scelgono un colore casuale tramite il seguente comando:

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

Quel "@r []" è la salsa magica, seleziona un'entità casuale nel mondo che corrisponde alle condizioni date . In questo caso, trova un supporto per armatura all'interno di un raggio di 9 blocchi e abbiamo creato 16 supporti per armatura, uno per ogni colore di lana. Sotto il colore selezionato, posiziona un blocco di pietra rossa (che alimenta i due blocchi di comando su entrambi i lati).

Selettore pixel casuale

Posizionare il blocco di pietra rossa sotto il colore di lana selezionato fa scattare altri due blocchi di comando:

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

Questa prima riga usa il nostro stesso comando magic @r per scegliere qualsiasi supporto per armatura sull'intera mappa (nessuna limitazione del raggio, quindi include la griglia 40x40) e posiziona una lana del colore selezionato sopra la sua testa. La X determina il colore e va da 0 a 15. Il secondo comando rimuove il blocco di pietrarossa in modo che sia pronto per ripartire.

Ho 5 blocchi ripetitori viola e la pietra rossa funziona in "tick" 20 volte al secondo, quindi sto posizionando 100 pixel al secondo (meno alcune sovrapposizioni di colore). L'ho cronometrato e di solito ottengo l'intera griglia coperta in circa 3 minuti.

È stato divertente, proverò a cercare altre sfide che potrebbero funzionare anche in Minecraft. Grazie mille a lorgon111 per la sua serie di tutorial su YouTube Command Block .

EDIT: apportate alcune riduzioni gravi delle dimensioni della struttura salvata, ora a 2.872 byte salvati :

blocchi di comando più vicini con blocchi vuoti visibili

  1. Ho spostato le cose in un po '(in tutte e 3 le dimensioni) in modo da poter ridurre la dimensione complessiva dell'area salvata.
  2. Modificate le diverse lane colorate in pietra, erano comunque solo decorative.
  3. Rimossa la lampada glowstone.
  4. Modificato tutti i blocchi d'aria in blocchi vuoti (i quadrati rossi).

Testato tirando la struttura salvata in un nuovo mondo, tutto funziona ancora come previsto.

EDIT 2 : collegamento Dropbox di sola lettura al file di struttura NBT

Walk through è nel mio video di YouTube , ma ecco i passaggi:

  1. In Minecraft 1.12, crea un nuovo mondo creativo superflat usando il preset "Redstone Ready". Rendi la modalità pacifica.
  2. Una volta che il mondo esiste, copia il file NBT in una nuova \structurescartella che crei sotto il salvataggio del mondo attuale.
  3. Torna nel gioco, fallo /give @p structure_blocke /tp @p -12, 56, -22salta nel punto giusto per iniziare.
  4. Scava un buco e posiziona il blocco struttura a -12, 55, -22.
  5. Fare clic con il tasto destro del mouse sul blocco struttura, fare clic sul pulsante modalità per passare a "Carica".
  6. Digita "random_pixels", attiva "include entità" su ON e fai clic su "Carica"
  7. Se trova il file di struttura, visualizzerà in anteprima il contorno. Fai di nuovo clic con il pulsante destro del mouse e fai clic su "carica" ​​per portare la struttura nel mondo.
  8. Premere il pulsante per eseguire la routine di installazione.
  9. Al termine, gira l'interruttore per eseguire la randomizzazione della lana.

6
Santa merda ... l'hai fatto davvero. Ed è la tua prima risposta, wow! Benvenuti nel sito e questo è un modo fantastico di iniziare!
MD XF,

2
@MDXF Oltre al tuo +10, sto dando +60
NoOneIsHere il

2
@NoOneIsHere Va bene: P Ma se hai una risposta, dovrà essere +100 ...
MD XF

2
Proverò a giocare a golf se dai al file del mondo (non posterò un'altra risposta ma ti darò solo il file)
Christopher,

2
Bene, shortest answer in each language winse questa è la risposta più breve in Minecraft: P hanno un extra di 15
MD XF

19

sh + ffmpeg, 52 byte

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

Ffmpeg conta come un esolang? : D

Purtroppo è richiesto pix_fmt, poiché ffmpeg è impostato per impostazione predefinita su yuv420p. Ciò non soddisfa il requisito "deve avere la stessa probabilità di ogni possibile colore dei pixel". Convenientemente, cifè una scorciatoia per una dimensione video abbastanza grande che utilizza meno spazio di "40x40".

Non sorprende che l'ottimizzazione di questa gif con gifsicle non abbia fatto assolutamente nulla. È 4MiB.


3
Questo " sostituisce solo un pixel alla volta "?
Scott Milner,

1
Tecnicamente? Tuttavia, ffmpeg attenderà che l'intero fotogramma si riempia di pixel prima di visualizzarlo. Ho letto male "devo sostituire solo 1 pixel alla volta" come "può". : /
Una

1
E ovviamente gifsicle non è riuscito a salvare alcun byte nella gif: non c'è modo di comprimere i dati arbitrari e i pixel casuali sono tutti disposti in modo caotico, il che significa che il modo più efficiente di codificarli è un pixel alla volta. Numberphile (penso?) Aveva un video su "cos'è informazione" e faceva un rumore casuale per rovinare intenzionalmente la compressione di YouTube. VSauce aveva anche un video sulla compressione video ad un certo punto, ma dimentico come si chiamava.
Draco18s

2
@ Draco18s, lo so, la nota del fatto che era incomprimibile mi stava prendendo in giro per aver provato a farci fare gificle.
Una

2
Gifsicle è lo strumento sbagliato. Precomp lo fa scendere da 4 MB a 3 MB :) Questo perché l'algoritmo GIF espande la casualità invece di comprimerlo e Precomp lo inverte.
Schnaader,

17

C su POSIX, 98 96 95 92 byte

-3 grazie a 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););}

Questo sceglie tra 16 colori (grigio scuro, rosso, verde, blu, arancione, ciano, viola, grigio chiaro, nero, rosa, azzurro, giallo, ciano chiaro, magenta, bianco) e li stampa direttamente sul terminale.

Nota che se la tua GPU è troppo lenta, potrebbe sembrare che stia aggiornando l'intero schermo contemporaneamente. In realtà sta andando pixel per pixel, ma C è veloce.

colori

Soluzione alternativa che rende i colori più distinti:

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

Prova che va pixel per pixel (screenshot dal programma alternativo):

3d !!!

Wow, sembra quasi tridimensionale ...


Manca ;di compilare correttamente ma sembra funzionare benissimo! B-)
cleblanc

@cleblanc Oh, hai ragione! Ho dimenticato di aggiungerlo dopo essere passato da whilea for.
MD XF,

2
Probabilmente potresti radere qualche byte #define r rand()e poi usarer%40, r%40, r%2, r%8
Tas

Non usando il colore a 32 bit questo non soddisfa i requisiti.
wberry,

4
@wberry "Il tuo programma deve avere anche la possibilità di scegliere tutti i colori (cioè nell'intervallo da # 000000 a #FFFFFF) o tutti i colori che possono essere visualizzati sul tuo sistema. " Questi sono tutti i colori che il terminale POSIX può visualizzare.
MD XF,

13

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

Grazie a Luke e ad altri commentatori per avermi salvato un sacco di byte.

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>


2
In realtà <canvas id=c>dovrebbe essere sufficiente poiché ritengo che la dimensione predefinita per canvas-element sia 300 x 150 pxe quindi superi la "dimensione della finestra" di 99 x 99 px. Comunque, bella soluzione.
insertusernamehere

1
@inserireusernamehere, sì, grazie
Octopus

1
Ora non funziona in Firefox. Funziona in Chrome
ETHproductions

1
OK, OK, ce l'ho. Salva 2 byte facendo b = c.getContext 2d. (Non sono sicuro di come formattare questo, ma se "2d" è un modello letterale, non ha bisogno delle parentesi.) (Eliminazione dei miei precedenti suggerimenti.)
Rick Hitchcock

1
Insieme al suggerimento di Rick, usa una withdichiarazione per sbarazzarti di tutti i casi di 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 byte

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

Provalo su MATL Online . Ho aggiunto una pausa di mezzo secondo ( .5Y.) a questa versione.

inserisci qui la descrizione dell'immagine

Spiegazione

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

1
Lo adoro! ----
MD XF,

4
per curiosità, come hai aggredito il tuo output di codice?
Polpo,

2
@Octopus Ho appena usato LICEcap . Uno di questi giorni, ho intenzione di incorporare l'output GIF animato nel compilatore online.
Suever,

Visto che questa risposta usa meno comandi / metodi per ottenere un risultato simile, non potresti convertirla in MATL per ottenere un punteggio più basso?
MD XF,

Ho visto un pixel già sostituito essere sostituito di nuovo;).
Magic Octopus Urn

7

TI-BASIC (solo 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

A causa di limitazioni hardware, questo alla fine si arresterà in modo anomalo, poiché ogni volta che un programma viene nidificato all'interno di un programma in TI-BASIC , vengono assegnati 15 KB di RAM per "mantenere un segnalibro" nel programma padre. Questo funzionerebbe bene su una calcolatrice "teorica" ​​con RAM infinita, ma se vogliamo che funzioni indefinitamente su una calcolatrice reale, possiamo semplicemente avvolgerla in un While 1ciclo per altri 2 byte:

:While 1
:...
:End

I calcolatori della famiglia TI-83 con schermi a colori (TI 84 + CE e CSE) supportano 15 colori. Hanno codici colore 10attraverso 24. Ciò scorre tutti i pixel in un 5!quadrato di 120 per 120 ( ) e assegna a ciascuno un colore casuale.

Risultato:

inserisci qui la descrizione dell'immagine


Già, un'altra risposta BASE! Solo per essere sicuri, questo funziona per sempre?
MD XF,

@MDXF Ora lo fa! ;-). Ho perso quella parte la prima volta. +5 byte.
Scott Milner,

Puoi fare in modo che i cicli for inizino da 0 se vuoi coprire 100x100 pixel.
kamoroso94,

@ kamoroso94 Ah, vero. Potrei anche fare 5!se volessi 120 pixel.
Scott Milner,

2
@MDXF TI-BASIC è basato su token . Vale a For(dire 1 byte, Pxl-On(1 byte, randInt(2 byte, ecc.
Scott Milner

5

MATLAB, 56 byte

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

L'output è simile all'immagine seguente. Un "pixel" cambia alla volta e cambia solo uno dei colori RGB.

Perché? I colori in MATLAB sono rappresentati come una matrice 3D, uno strato per R, G e B. Il codice sopra cambia solo uno dei livelli per iterazione. Tutti i pixel e tutti i livelli possono essere modificati, quindi se aspetti un po 'tutti i colori sono ugualmente possibili in tutte le posizioni.

Aggiungi pause(t)all'interno del ciclo per mettere in pausa i tsecondi tra ogni immagine.

Devi fermarlo con Ctrl+ C.

inserisci qui la descrizione dell'immagine


3
Uso intelligente della maniglia per l'oggetto grafico come condizionale inwhere
Suever

2
Una regola è stata chiarita - Your program must have an equal chance of picking all colors/points each iteration. Il tuo programma soddisfa questo?
MD XF,

5

Bash + coreutils, 59 56 byte

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

\e[48;5;COLORm è la sicurezza di fuga al colore di sfondo.

Ogni "pixel" ha la possibilità di trovarsi ogni volta nell'intervallo [0..16777215].


1
Caspita, è davvero una buona idea! +1
MD XF,

È possibile eliminare 3 byte se si utilizza jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki

Ho rubato questa idea e l'ho portata a golf a 45 byte (\ e è 1 carattere di escape, e shuf | xargs lo rende più breve (non è necessario per -n 1 e non per). Codegolf.stackexchange.com/a/158142/7017 Posso eliminarlo se vuoi (non sono davvero sicuro che dovrei semplicemente proporlo come commento invece di pubblicarlo. Il mio obiettivo è quello di ottenere un po 'di punti per ottenere un giorno le ricompense sorprendenti del fantastico "tetris in game of life "sfida e rispondi! vedi 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>

  • Ciò produrrà colori RGB distribuiti uniformemente. Non puoi usare i colori esadecimali senza un'adeguata imbottitura poiché numeri come #7non sono un colore valido o #777e #777777sono dello stesso colore (2x le probabilità)
  • L'elemento canvas è 300x150 per impostazione predefinita, ma in realtà sto disegnando un quadrato di 255x255, quindi ci sono pixel di tela, quindi l'area effettiva è 255x150.
  • Funziona solo su Google Chrome.

2
Ottimo primo post! Benvenuti nel sito!
MD XF,

Non credo che ciò abbia alcuna possibilità di visualizzare alcun colore con un canale impostato su 255, come rosso, verde, blu o bianco. Penso che devi invece moltiplicare per 256.
kamoroso94

4

Excel VBA, 131 102 85 byte

Funzione di finestra immediata VBE anonima che utilizza una funzione di supporto (vedere di seguito) per generare una matrice di celle colorate in modo casuale nell'intervallo A1:AN40dell'oggetto foglio attivo.

Nota: questa soluzione è limitata alle installazioni a 32 bit di MS Excel (e quindi di Office nel suo insieme) in quanto 8^8non verrà compilata nelle versioni a 64 bit di VBA

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

Uscita campione

Colori delle celle randomizzati

Versione precedente

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

Funzione di aiuto

Emette un int casuale nell'intervallo [0,255]

Function n
n=Int(255*Rnd)
End Function

3

C #, 369 288 287 byte

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);}}}

Risparmiato 88 byte grazie a @CodyGray.

Un programma completo che arriva a gestire lo schermo e le sue dimensioni, quindi inizia a disegnare casualmente pixel su di esso. Si noti che ciò potrebbe interrompere la scheda grafica quando si esegue. Inoltre, se lo schermo o qualsiasi altro controllo decide di ridipingere in qualsiasi momento, i pixel andranno persi e dovranno essere ridisegnati.

Nota: quando corri, tieni sotto controllo la finestra per ucciderla, devi premere Alt + F4 o premere il pulsante di chiusura e farlo quando non riesci a vedere lo schermo è un po 'difficile.

Non riuscivo a registrare questo lavoro, con ScreenToGif, poiché continuava a forzare una riverniciatura in modo che i pixel venissero rimossi. Tuttavia, ecco uno screenshot di esso in esecuzione dopo circa 10-15 secondi, più a lungo e penso che potrei aver fermato il mio PC! Il divario nell'angolo in alto a destra è il punto in cui lo schermo ha forzato una riverniciatura proprio come ho fatto lo screenshot.

Esempio di versione completa

Versione completa / formattata:

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);
        }
    }
}

Una versione per 308 227 226 byte che disegna solo sulla regione 0-40:

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);}}}

Esempio di output per questo:

Piccolo esempio di output



Graphics.FromHwnd((IntPtr)0)funzionerebbe anche e sarebbe molto più breve di P / Invoking GetDC. Ovviamente, il tuo codice è ancora come quello di Tas e perde risorse come un matto, motivo per cui fa fermare la tua macchina dopo solo un breve periodo di esecuzione.
Cody Grey,

@CodyGray Oh, lo so che perde, dovrebbe comunque funzionare entro le specifiche delle sfide. E GetDCnon ritorna IntPtr.Zeroquindi l'invio a FromHdcnon funzionerà.
TheLethalCoder il

1
Leggi il suggerimento più attentamente. :-) Non sto suggerendo di chiamare FromHdc, sto suggerendo di chiamare FromHwnd. Si noti che quando si chiama GetDCper ottenere il controller di dominio per un handle di finestra, si passa un puntatore NULL (0) come handle di finestra.
Cody Grey,

@CodyGray Ah sì, funziona, grazie! Sono chiamati in modo simile, avrebbero dovuto leggere il tuo commento più attentamente ...
TheLethalCoder

3

Console C #, 233 220 189 188 byte

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(" ");}}}}

inserisci qui la descrizione dell'immagine

Utilizza "tutti" (windows) 16 colori della console.

Grazie per la "caratteristica" di poter aliasare le classi in C # tramite la usingdirettiva.

Modifica n. 1

  • Rimossi alcuni spazi.

  • Zeri rimossi da Random.Next ()

  • È andato a namespace system{...}

Modifica n. 2

  • La dimensione minima della griglia è 40x40

  • Un byte dichiarando Casuale in per intestazione loop

  • Rimosso publicdal metodo principale

Modifica n. 3

Si scopre che nonusing C=Console; è il migliore che ci sia. è molto simile al modo VB.Net di "importare" le classiusing static Console

Mi arrendo: TheLethalCoder ha reso possibile questo


Codice originale per adattare la dimensione della finestra a 207 byte:

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(" ");}}}}

Immagine originale:

inserisci qui la descrizione dell'immagine


namespace Systemdovrebbe salvare byte, r.Nextpuò rimuovere lo zero credo, Rimuovi spazi bianchi irrilevanti,
TheLethalCoder

Anche il titolo C # va bene
TheLethalCoder

Grazie! Lascio Console nel titolo poiché ritengo che questa sfida offra un contesto prezioso. Non vedo quanto namespace System{}sia più corto di using System;. Ti interessa spiegare?
Mr Paul Paul

1
Ho avuto questa memoria forte ma infondata che il pubblico è necessario per il Main. I ricordi infondati sono i migliori!
Mr Paul Paul

1
Grazie. Non si arrende! :) Userò ciò che ho imparato sulla prossima sfida!
Mr Paul Paul

3

Elaborazione, 90 byte

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

inserisci qui la descrizione dell'immagine

ampliato e commentato:

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 
}

Idealmente potrei usare un indice di pixel invece di x, y location, ma l' pixels[]accesso di Processing richiede loadPixels()pre e updatePixels()post, quindi l'uso di set(). point()funzionerebbe anche, ma ha più caratteri e richiede stroke(). L'area casuale è in realtà 99x99 per salvare alcuni byte (anziché 100x100), ma ciò dovrebbe coprire 40x40 con ogni pixel in tale area da sostituire.

Il rumore Perlin () viene utilizzato al posto di random () per mantenerlo più pseudo-casuale e un byte più breve. Il valore viene calcolato una volta, ma usato due volte: una volta per la posizione casuale, poi di nuovo per il colore.

Il colore è in realtà ARGB(da 00000000 a FFFFFFFF) (non RGB) (punti bonus?: D).


Fantastico e bello vederti su questo sito!
Kevin Workman,

Allo stesso modo ! e grazie! :)
George Profenza,

+1 set()è un trucco molto accurato e può essere molto utile per i suggerimenti per giocare a golf in Processing
Kritixi Lithos,

Ooooooh! Non lo sapevo. Lo aggiungerò lì, grazie :)
George Profenza,

2

Python, 133 byte

Non sono sicuro se questo si adatta alle specifiche, perché è su una tela in un'area 40x40.

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+')'))

Provalo online - versione senzaeval, che non funziona in Trinket


Nota abbastanza perché, forse la tua distorsione di tartaruga è diversa dalla mia, ma la mia tela di default è 300 per 400 mentre quella di default non lo colormodeè . 1.0255
Jonathan Allan,

Trinket.io è piuttosto unico.
mbomb007,

Sì, ho appena provato a cambiare colormodee non ne avrebbe avuto nulla: /
Jonathan Allan

Perché dot(1,R(0,255),R(0,255),R(0,255))non funziona neanche? dotè destinato ad accettare (width,*color). Non è Python: p
Jonathan Allan,

Perché Trinket.io usa skulpt.js, che è un'implementazione incompleta di Python.
mbomb007,

2

JavaScript utilizza Canvas 340 316 324 byte

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);

versione completa


2
Benvenuti nel sito! :)
DJMcMayhem

Questo rispetta la regola, "Il tuo programma deve continuare a visualizzare pixel casuali fino a quando non viene arrestato manualmente (non può terminare da solo)"?
Polpo

Questo sembra generare semplicemente un mucchio di pixel casuali quando eseguito. Non continua a visualizzare i pixel uno a uno fino a quando non viene interrotto.
MD XF,

Sembra che ho perso quella regola. Ho erroneamente pensato che l'obiettivo fosse quello di creare un'immagine, non un'animazione. Aggiornerò la mia risposta quando torno sul mio computer.
Tim Penner,

1
@MDXF è animato adesso
Tim Penner il

2

Elaborazione, 112 byte

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

Non posso garantire che ogni pixel venga sostituito ogni 3 minuti, ma guardandolo sembra che lo stia facendo. Almeno le probabilità che manchi un pixel, su un totale di 1600, aggiornando uno casuale 30x al secondo, per un totale di 5400 aggiornamenti ogni 3 minuti, è improbabile che ci si perda.

Ungolfed:

Il programma è davvero semplice. Apri una finestra a 40x40 pixel e ogni fotogramma (predefinito 30 al secondo) ottiene un colore casuale e disegna un punto in una coordinata casuale tra 0 e il parametro. 40 per coordinate pixel, 255 per colori.

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

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

inserisci qui la descrizione dell'immagine


Puoi rimuovere size(40,40);e cambiare pointin point(random(99),random(99));? (o 100 invece se 99 non funziona)
Kritixi Lithos

@KritixiLithos in Processing, la sizefunzione DEVE essere la prima riga di codice nella funzione di installazione (i motivi per cui sono complicati), quindi non posso aggirare questo. Posso cambiare tutte le occorrenze da 40 a 99, non l'ho fatto dal momento che non mi ha risparmiato spazio. Sono andato principalmente con la dimensione minima per aumentare le probabilità che ogni pixel verrà aggiornato in un periodo di 3 minuti
Cody

Eh, è stato anche quello che ho pensato per la prima volta, fino a quando qualcuno non me ne ha parlato e in qualche modo ha funzionato, come puoi vedere qui in una mia presentazione.
Kritixi Lithos,

1
La rimozione dell'intera setup()funzione sull'ultima versione di Processing sulla mia macchina funziona senza errori.
Kritixi Lithos,

Immagino che la mia versione di Processing sia piuttosto vecchia e non la uso abbastanza per disturbare l'aggiornamento in questo momento.
Cody,

2

HTML + SVG + PHP, 245 byte

<?$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 />";

allargato

$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

Esempio di output senza meta tag e in una versione successiva

<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 />


2

C ++ su 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));}

Newline necessari e inclusi nel conteggio dei byte.

Cicli per sempre, seleziona casualmente una posizione tra 0 e 255 (inclusi) per i valori di riga e colonna, assegna valori casuali di R, G, B tra 0-255 (inclusi)


1
Mi rendo conto che stai giocando a golf, ma l'uomo che perde il contesto di un dispositivo ogni volta che passa attraverso il circuito fa davvero formicolare i miei sensi da brivido!
Cody Grey,

Risparmia 15 byte rendendolo C su Windows anziché C ++ su Windows, poiché i compilatori C ti lasceranno fuori da #includes. (E sì, ci sono compilatori non Visual Studio C per 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()

Poiché tkinterè una libreria standard, non è necessario includerla nell'intestazione
caird coinheringaahing

Ottengo lo stesso errore - Windows 10, Python 3.6.0 Posso immaginare perché init stia vedendo quattro parametri passati - al metodo viene implicitamente passato un parametro "self". Ma non ho idea del perché ciò stia generando un errore, poiché la documentazione mostra che il costruttore Canvas accetta tre parametri (master, x, y) come mostrato nel codice.
CCB60,

Ora dovrebbe essere risolto.
Martmists,

1
anche @Ilikemydog Tkinter non è sempre in stdlib. Su Windows è facoltativo durante l'installazione e non credo che Tkinter sia installato sulla mia partizione di arco. Potrebbe anche includerlo.
Martmists,

c'è un errore di battitura - "img" invece di "i". E ancora non funziona, questa volta ho capitoc.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 tramite SVG, 129 + 10 = 139 byte

Versione SVG, fortemente ispirata all'approccio di @ Octopus<canvas> .

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>

Poiché allo Stack Snippet piace interrompere lo script analizzando il <rect>tag, ecco una CodePen .


2

6502 Assembly, 92 byte

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

Produzione:

produzione

Spiegazione:

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

1
Qual è la tua piattaforma target 6502 qui? BBC Micro? Mela ][? Commodore VIC-20 ecc ...?
Shaun Bebbers,

I nomi delle etichette devono contenere almeno tre caratteri?
Jonathan Frech,

2

LOGO, 71 byte

L'unico linguaggio che conosco, non essendo esoterico / appositamente progettato per codegolfing, e ha una foreverfunzione. Qualche idea da mapparte?

pu forever[setxy random 100 random 100 setpixel map[random 256][1 1 1]]

2

shortC , 66 56 byte

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

-10 byte grazie al 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

Nessun collegamento TIO perché ovviamente non è possibile stampare sul tipo di terminale richiesto online.


2

Perl (su * nix), 69 byte

Gli \x1bs sono letteralmente personaggi di fuga.

Si basa sul sttycomando e funziona bene su OS X.

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

Simile ad altri approcci, ma mi è piaciuta la combinazione di tutti i parametri in una chiamata, printfcosì ho pensato di condividere. Uccide il mio terminale.

inserisci qui la descrizione dell'immagine


Il doppio di pixel, 83 byte

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

Questo approccio utilizza un blocco unicode e un colore di primo piano e di sfondo casuali che danno un pixel più quadrato. Uccide anche il mio terminale, ma sembra più bello.

inserisci qui la descrizione dell'immagine


Non dimenticare che puoi usare il byte di escape letterale, ASCII 0x1B (27) invece di \e. E su StackExchange questo può essere rappresentato da .
MD XF,

@MDXF Sì ... Devo testarlo come script, perché non funzionava -e! Ho anche bisogno di aumentare il conteggio dei byte di quello con Unicode. Oops! Grazie per il promemoria!
Dom Hastings,

2

Bash, 104 byte

Gli \es sono letteralmente personaggi di fuga.

Queste sono praticamente traduzioni della mia presentazione Perl, ma usando la sintassi bash fork bomb style! Temo che non sia intelligente come l'altra voce bash che scrive direttamente sul display.

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

Più pixel, 130 byte

Come la mia risposta Perl, utilizza un carattere unicode per il primo piano e colora anche lo sfondo di ogni pixel.

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

Non male. Tuttavia, ancora non capisco il "\e[48;5;%im". Perché sono necessari i 48 e 5?
MD XF,

Che accedono a tutti i 256 colori, anziché solo alla tavolozza standard a 16 colori. Nei terminali che lo supportano, è possibile utilizzare \e[48;2;RRR;GGG;BBBmma pochissimi emulatori di terminale lo supportano ... :(
Dom Hastings

Santa madre del codice .... Non avevo idea che fosse possibile. La mia vita è una bugia Grazie mille: P
MD XF,

@MDXF ^^ e 38;5indica anche il primo piano e 48;5lo sfondo. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings

1
@MDXF Nessun problema! Felice di aiutare! Peccato che mi mancasse questo quando era nuovo di zecca, ma quella risposta di Minecraft ... irreale!
Dom Hastings,

2

linguaggio macchina x86 (modalità reale) per PC IBM, 20 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

Ciò richiede un processore con le rdrandistruzioni e un adattatore VGA (reale o emulato). Quanto sopra può essere copiato in un blocco di avvio o file MS-DOS * .COM.

Per provarlo, compila quanto segue e salva l'output in un file simile floppy.imge avvia l'immagine su una macchina virtuale.

#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 );
}

2

Super Chip (48) ?, 12 byte

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

Non sono sicuro del nome esatto, ma ho dovuto usare questo invece del normale Chip-8 a causa della limitazione di 40x40 pixel.


Link a questa lingua (molto interessante)?
MD XF,

È possibile utilizzare l'emulatore Octo: johnearnest.github.io/Octo
12Me21

2

QBIC , 34 byte

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

Sfortunatamente, QBIC non imposta una SCREENmodalità per impostazione predefinita, quindi mangia alcuni byte. PSETè un comando illegale nel contesto grafico predefinito di QBIC.

Spiegazione

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)

Uscita campione

@Anonimo ha riscontrato un errore nella rnd()funzione di QBIC . Correzione che fornisce l'output di seguito. Grazie!

inserisci qui la descrizione dell'immagine


Come dovrebbe essere ovvio dalla schermata, la soluzione non soddisfa le condizioni di casualità. Data una coordinata, non tutti i colori sono ugualmente probabili e dato un colore, non tutte le coordinate sono ugualmente probabili; sono altamente correlati e questo è tutto sommato. Il problema è il generatore di numeri casuali che stai utilizzando: i 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 FUNCTIONtuoi numeri casuali sono solo degli hash dell'ora corrente.
Anonimo il

@Anonimo Ora è stato risolto, grazie!
steenbergh,

2

6502 Assembly, 582 byte

Accidenti, è stato divertente. Fa più o meno la stessa cosa della mia soluzione BASIC di Applesoft.

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

È questa la versione non golfata dell'altra risposta dell'assembly 6502 ? :-)
Cody Gray il

@CodyGray No, fa le cose un po 'diversamente. È più simile alla mia risposta BASIC di Applesoft (usa una passeggiata casuale) e l'altra risposta dell'assembly 6502 è più simile a tutte le altre.
MD XF,

Non sono d'accordo con il conteggio dei byte: questo è molto più breve di 583 byte di assembly?
Olivier Dulac,

@OlivierDulac tio.run/##Zc/… ?
MD XF,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.