Mostrar píxeles de colores aleatorios

47

Siempre me han gustado las pantallas llenas de píxeles coloreados al azar. Son interesantes de ver y los programas que los dibujan son divertidos de ver.

El reto

Llena tu pantalla, o una ventana gráfica, con píxeles de colores.

Las normas

  • Su programa debe tener una posibilidad uniforme de elegir todos los colores (es decir, en el rango #000000de #FFFFFF) o todos los colores que se pueden mostrar en su sistema.
  • Su programa debe continuar mostrando píxeles aleatorios hasta que se detenga manualmente (no puede terminar por sí solo).
  • Los píxeles pueden ser de cualquier tamaño, siempre que su salida tenga al menos 40x40 "píxeles".
  • Su programa debe ejecutarse a una velocidad tal que pueda reemplazar cada píxel en la pantalla / ventana al menos una vez después de ejecutarse durante tres minutos.
  • Su programa debe elegir colores y puntos verdaderamente aleatorios para reemplazar, es decir, aleatorios con todos los puntos / colores igualmente probables. No puede parecer solo al azar. Debe usar un pRNG o mejor, y la salida no puede ser la misma cada vez.
  • Su programa debe tener la misma posibilidad de elegir todos los colores en cada iteración .
  • Su programa debe reemplazar solo un píxel a la vez.
  • Su programa no puede usar Internet ni su sistema de archivos ( /dev/randomy /dev/urandomsalvo).

Ejemplo

Su salida podría verse así si se detiene en un momento aleatorio:

El ganador

La respuesta más corta en cada idioma gana. ¡Que te diviertas!

MD XF
fuente
Por "verdaderamente aleatorio", supongo que pseudoaleatorio está bien (como Math.random () o similar)
OldBunny2800
@ OldBunny2800It must use a pRNG or better
TheLethalCoder
Como el programa no puede usar Internet, lo dejaré en un comentario: babelia.libraryofbabel.info/slideshow.html
KSmarts
1
Entonces, ¿el "límite de 3 minutos" también se aplica al tiempo de configuración? ¿O solo una vez que comienza el "programa"? Pregunto porque tengo una solución de redstone de Minecraft, que se ejecuta muy rápidamente una vez que está funcionando, pero tarda un tiempo en configurarse inicialmente (tiene que "colocar" cada "píxel" en la cuadrícula de 40x40) antes de que pueda comenzar a cambiar los colores.
BradC
55
Verdaderamente aleatoria por definición excluye seudo -RANDOM, sin embargo, no define una distribución. Supongo que te refieres a un PRNG uniforme , donde todos los eventos son equiprobables e independientes entre sí.
Dennis

Respuestas:

84

Minecraft 1.12 Redstone Command Blocks, 4,355 2,872 bytes

Captura de pantalla de Minecraft con soportes de armadura y mapa

(Tamaño determinado por el tamaño del archivo de bloque de estructura guardado).

Aquí hay una descripción general completa de YouTube , pero intentaré describir el código a continuación.

Configuración de rutina:

2 filas de bloques de comandos para la configuración

Esto configura la cuadrícula 40x40 de soportes de armadura de Minecraft. Los soportes de armadura son necesarios porque Minecraft no tiene forma de sustituir variables en coordenadas mundiales . Por lo tanto, la solución consiste en referirse a la ubicación de estas entidades de soporte de armadura.

(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

Este soporte de armadura llamado es básicamente nuestro "cursor" para colocar todos los soportes de armadura que necesitaremos. El bloque redstone en el último paso "alimenta" los bloques cercanos (incluidos nuestros bloques de comando), por lo que inicia el siguiente ciclo:

(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

En este punto nuestra grilla está completa:

Rejilla de soporte de armadura completada

Selector de color aleatorio

Selector de color y píxel

Los repetidores morados en el centro de esta imagen eligen un color aleatorio mediante el siguiente comando:

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

Ese "@r []" es la salsa mágica, selecciona una entidad aleatoria en el mundo que coincide con las condiciones dadas . En este caso, encuentra un soporte de armadura dentro de un radio de 9 bloques , y hemos configurado 16 soportes de armadura, uno para cada color de lana. Debajo del color seleccionado, coloca un bloque de redstone (que alimenta los dos bloques de comando a cada lado).

Selector aleatorio de píxeles

Colocar el bloque de piedra roja debajo del color de lana seleccionado activa dos bloques de comando más:

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

Esta primera línea usa nuestro mismo comando magic @r para elegir cualquier soporte de armadura en todo el mapa (sin restricción de radio, por lo que incluye la cuadrícula 40x40), y coloca una lana del color seleccionado sobre su cabeza. La X determina el color y varía de 0 a 15. El segundo comando elimina el bloque de redstone para que esté listo para volver a funcionar.

Tengo 5 bloques repetidores morados, y redstone funciona en "ticks" 20 veces por segundo, por lo que estoy colocando 100 píxeles por segundo (menos algunas superposiciones de color). Lo he cronometrado y generalmente cubro toda la cuadrícula en aproximadamente 3 minutos.

Esto fue divertido, intentaré buscar otros desafíos que también funcionen en Minecraft. Muchas gracias a lorgon111 por su serie de tutoriales de YouTube Command Block .

EDITAR: Hizo algunas reducciones serias en el tamaño de la estructura guardada, ahora en 2,872 bytes guardados :

bloques de comando más cercanos con bloques vacíos visibles

  1. Scooting cosas en un poco (en las 3 dimensiones) para que pueda reducir el tamaño total del área guardada.
  2. Cambié las lanas de diferentes colores a piedra, de todos modos eran simplemente decorativas.
  3. Se quitó la lámpara de piedra luminosa.
  4. Cambió todos los bloques de aire a bloques vacíos (los cuadrados rojos).

Probado al llevar la estructura guardada a un mundo nuevo, todo sigue funcionando según lo diseñado.

EDIT 2 : enlace de Dropbox de solo lectura al archivo de estructura NBT

El recorrido está en mi video de YouTube , pero estos son los pasos:

  1. En Minecraft 1.12, crea un nuevo mundo creativo superplano usando el preset "Redstone Ready". Hazlo en modo pacífico.
  2. Una vez que el mundo existe, copie el archivo NBT en una nueva \structurescarpeta que cree bajo el guardado del mundo actual.
  3. De vuelta en el juego, hazlo /give @p structure_blocky /tp @p -12, 56, -22salta al lugar correcto para comenzar.
  4. Cava un hoyo y coloca el bloque de estructura en -12, 55, -22.
  5. Haga clic derecho en el bloque de estructura, haga clic en el botón de modo para cambiarlo a "Cargar".
  6. Escriba "random_pixels", active "incluir entidades" en ON y haga clic en "Cargar"
  7. Si encuentra el archivo de estructura, obtendrá una vista previa del esquema. Haga clic derecho nuevamente y haga clic en "cargar" para traer la estructura al mundo.
  8. Presione el botón para ejecutar la rutina de configuración.
  9. Cuando se complete, active el interruptor para ejecutar la aleatorización de lana.
BradC
fuente
66
Santa mierda ... en realidad lo hiciste. Y es tu primera respuesta, ¡guau! ¡Bienvenido al sitio, y esta es una forma increíble de comenzar!
MD XF
2
@MDXF Además de su +10, le doy +60
NoOneIsHere
2
@NoOneIsHere Muy bien: P Pero si tiene una respuesta, tendrá que ser +100 ...
MD XF
2
Voy a tratar de este campo si se le da el archivo del mundo (no voy a publicar otra respuesta, pero sólo le dará el archivo)
Christopher
2
Bueno, shortest answer in each language winsy esta es la respuesta más corta en Minecraft: P tiene un +15 extra
MD XF
19

sh + ffmpeg, 52 bytes

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

¿Ffmpeg cuenta como esolang? :RE

Lamentablemente, se requiere pix_fmt, ya que el valor predeterminado de ffmpeg es yuv420p. Eso falla el requisito de "debe tener la misma probabilidad de cada color de píxel posible". Convenientemente, cifes un atajo para un tamaño de video bastante grande que usa menos espacio que "40x40".

Como era de esperar, la optimización de este gif con gifsicle no hizo absolutamente nada. Son 4MiB.

Una
fuente
3
¿Esto " reemplaza solo un píxel a la vez "?
Scott Milner
1
¿Técnicamente? Sin embargo, ffmpeg esperará a que todo el marco se llene de píxeles antes de mostrarlo. Leí mal "solo debe reemplazar 1 píxel a la vez" como "puede". : /
Una
1
Y, por supuesto, gifsicle no pudo guardar ningún byte en el gif: no hay forma de comprimir datos arbitrarios y los píxeles aleatorios están todos dispuestos de forma caótica, lo que significa que la forma más eficiente de codificarlos es un píxel a la vez. Numberphile (¿creo?) Tenía un video sobre "qué es la información" e hizo ruido aleatorio para meterse intencionalmente con la compresión de YouTube. VSauce también tenía un video sobre compresión de video en un punto, pero olvido cómo se llamaba.
Draco18s
2
@ Draco18s, lo sé, la nota sobre que era incompresible se burlaba de mí mismo por tratar de ejecutar un gifsicle de todos modos.
Una
2
Gifsicle es la herramienta equivocada. Precomp lo reduce de 4 MB a 3 MB :) Esto se debe a que el algoritmo GIF expande la aleatoriedad en lugar de comprimirlo y Precomp lo revierte.
schnaader
17

C en POSIX, 98 96 95 92 bytes

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

Elige entre 16 colores (gris oscuro, rojo, verde, azul, naranja, cian, morado, gris claro, negro, rosa, azul claro, amarillo, cian claro, magenta, blanco) y los imprime directamente en el terminal.

Tenga en cuenta que si su GPU es demasiado lenta, puede parecer que está actualizando toda la pantalla a la vez. En realidad va píxel por píxel, pero C es rápido.

colores

Solución alternativa que hace que los colores sean más distintos:

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

Prueba de que va píxel por píxel (captura de pantalla del programa alternativo):

3d !!!

Wow, eso parece casi tridimensional ...

MD XF
fuente
Falta una ;compilación correcta, ¡pero parece funcionar muy bien aparte de eso! B-)
cleblanc
@cleblanc ¡Oh, tienes razón! Olvidé agregar eso después de cambiar de whilea for.
MD XF
2
Probablemente podría afeitarse unos pocos bytes #define r rand()y luego usarr%40, r%40, r%2, r%8
Tas
Al no usar color de 32 bits, esto no cumple con los requisitos.
wberry
44
@wberry "Su programa debe tener una posibilidad uniforme de elegir todos los colores (es decir, en el rango # 000000 a #FFFFFF), o todos los colores que se pueden mostrar en su sistema " . Estos son todos los colores que puede mostrar el terminal POSIX.
MD XF
13

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

Gracias a Luke y otros comentaristas por ahorrarme muchos bytes.

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>

Pulpo
fuente
2
En realidad, <canvas id=c>debería ser suficiente, ya que creo que el tamaño predeterminado para el canvaselemento es 300 x 150 pxy excede su "tamaño de ventana gráfica " de 99 x 99 px. De todos modos, buena solución.
insertusernamehere
1
@insertusernamehere, sí, gracias
Octopus
1
Sin embargo, ahora no funciona en Firefox. Funciona en Chrome
ETHproductions 01 de
1
Vale, vale, lo tengo. Ahorre 2 bytes haciendo b = c.getContext 2d. (No estoy seguro de cómo formatear esto, pero si "2d" es una plantilla literal, no necesita los paréntesis.) (Eliminando mis sugerencias anteriores.)
Rick Hitchcock
1
Junto con la sugerencia de Rick, use una withdeclaración para deshacerse de todas las instancias de 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

Pruébalo en MATL Online . He agregado una pausa de medio segundo ( .5Y.) a esta versión.

ingrese la descripción de la imagen aquí

Explicación

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
fuente
1
¡Me encanta! ----
MD XF
44
por curiosidad, ¿cómo gifificó su salida de código?
Octopus
2
@ Octopus Acabo de usar LICEcap . Uno de estos días, voy a incorporar salida GIF animada en el compilador en línea.
Suever
Al ver cómo esta respuesta usa menos comandos / métodos para lograr un resultado similar, ¿no podría convertirlo a MATL para posiblemente obtener una puntuación más baja?
MD XF
Vi un píxel ya reemplazado ser reemplazado nuevamente;).
Urna mágica de pulpo
7

TI-BASIC (84 + C (S) E solamente), 37 35 bytes

: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

Debido a limitaciones de hardware, esto eventualmente se bloqueará, ya que cada vez que un programa se anida dentro de un programa en TI-BASIC , se asignan 15 KB de RAM para "mantener un marcador" en el programa principal. Esto funcionaría bien en una calculadora "teórica" ​​con RAM infinita, pero si queremos que se ejecute indefinidamente en una calculadora real, podemos envolverla en un While 1bucle por 2 bytes adicionales :

:While 1
:...
:End

Las calculadoras de la familia TI-83 con pantallas a color (TI 84 + CE y CSE) admiten 15 colores. Tienen códigos de color a 10través 24. Esto recorre todos los píxeles en un 5!cuadrado de 120 por 120 ( ) y asigna a cada uno un color aleatorio.

Resultado:

ingrese la descripción de la imagen aquí

Scott Milner
fuente
¡Yay, otra respuesta BÁSICA! Solo para estar seguro, ¿esto funciona para siempre?
MD XF
@MDXF ¡Ahora sí! ;-). Perdí esa parte la primera vez. +5 bytes.
Scott Milner
Puede hacer que los bucles for comiencen en 0 si desea cubrir 100x100 píxeles.
kamoroso94
@ kamoroso94 Ah, cierto. También podría hacerlo 5!si quisiera 120 píxeles.
Scott Milner
2
@MDXF TI-BASIC está basado en token . Es decir, For(1 byte, Pxl-On(1 byte, randInt(2 bytes, etc.
Scott Milner
5

MATLAB, 56 bytes

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

La salida se parece a la imagen de abajo. Un "píxel" cambia a la vez, y solo uno de los colores RGB cambia.

¿Por qué? Los colores en MATLAB se representan como una matriz 3D, una capa para R, G y B. El código anterior cambia solo una de las capas por iteración. Todos los píxeles y todas las capas se pueden cambiar, por lo que si espera un poco, todos los colores son igualmente posibles en todas las posiciones.

Agregue pause(t)dentro del bucle para pausar tsegundos entre cada imagen.

Debes detenerlo con Ctrl+ C.

ingrese la descripción de la imagen aquí

Stewie Griffin
fuente
3
Uso inteligente del identificador para el objeto gráfico como condicional en elwhere
Suever
2
Una regla ha sido aclarada - Your program must have an equal chance of picking all colors/points each iteration. ¿Su programa cumple con esto?
MD XF
5

Bash + coreutils, 59 56 bytes

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

\e[48;5;COLORm es la secuencia de escape al color de fondo.

Cada "píxel" tiene la posibilidad de estar en el rango [0..16777215] cada vez.

marcom
fuente
1
Wow, esa es una muy buena idea! +1
MD XF
Puede utilizar 3 bytes si usa jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki
Robé esta idea y la reduje a 45 bytes (\ e es 1 escape char, y shuf | xargs lo hace más corto (no es necesario para -n 1, y no para). Codegolf.stackexchange.com/a/158142/7017 Puedo eliminarlo si lo desea (no estoy seguro de si debería proponerlo solo como un comentario en lugar de publicarlo. Mi objetivo es obtener un poco de puntos para recompensar un día las increíbles respuestas a los increíbles "tetris"). in game of life "desafío y respuesta! ver codegolf.stackexchange.com/q/11880/7017
Olivier Dulac
5

Javascript + HTML 118 + 13 (131 bytes)

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>

  • Esto producirá colores RGB distribuidos uniformemente. No se puede utilizar colores Hex sin relleno adecuado como números, como #7no es un color válido, o #777y #777777son del mismo color (2x las probabilidades)
  • El elemento del lienzo es por defecto 300x150, pero en realidad estoy dibujando en un cuadrado de 255x255, por lo que hay píxeles fuera del lienzo, por lo que el área efectiva es 255x150.
  • Funciona solo en Google Chrome.
Vitim.us
fuente
2
Gran primer post! Bienvenido al sitio!
MD XF
No creo que esto tenga ninguna posibilidad de mostrar ningún color con un canal establecido en 255, como rojo, verde, azul o blanco. Creo que tienes que multiplicar por 256 en su lugar.
kamoroso94
4

Excel VBA, 131 102 85 Bytes

Función de ventana inmediata VBE anónima que utiliza una función auxiliar (ver más abajo) para generar una matriz de celdas coloreadas al azar en el rango A1:AN40del objeto de hoja activa.

Nota: Esta solución está restringida a instalaciones de 32 bits de MS Excel (y, por lo tanto, de Office en su conjunto), ya 8^8que no se compilará en versiones de VBA de 64 bits

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

Salida de muestra

Colores de celda aleatorizados

Versión previa

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

Función auxiliar

Emite un int aleatorio en el rango [0,255]

Function n
n=Int(255*Rnd)
End Function
Taylor Scott
fuente
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);}}}

Ahorró 88 bytes gracias a @CodyGray.

Un programa completo que obtiene el control de la pantalla y su tamaño y luego comienza a dibujar píxeles aleatoriamente en él. Tenga en cuenta que esto podría detener su tarjeta gráfica cuando se ejecute. Además, si la pantalla o cualquier control decide volver a pintar en cualquier momento, los píxeles se perderán y deberán volver a dibujarse.

Nota: cuando se ejecuta, manténgase enfocado en la ventana, ya que para matarlo debe presionar Alt + F4 o presionar el botón de cerrar y hacerlo cuando no pueda ver la pantalla es un poco difícil.

No pude grabar esto funcionando, con ScreenToGif, ya que eso obligaba a volver a pintar para que los píxeles se eliminaran. Sin embargo, aquí hay una captura de pantalla que se ejecuta después de unos 10-15 segundos, ¡y creo que puede haber detenido mi PC! El espacio en la esquina superior derecha es donde la pantalla forzó un repintado justo cuando tomé la captura de pantalla.

Ejemplo de versión completa

Versión completa / formateada:

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 versión para 308 227 226 bytes que solo se basa en la región 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);}}}

Ejemplo de salida para este:

Pequeño ejemplo de salida


TheLethalCoder
fuente
Graphics.FromHwnd((IntPtr)0)también funcionaría y sería mucho más corto que P / Invocación GetDC. Por supuesto, su código sigue siendo como el de Tas y pierde recursos como locos, por lo que detiene su máquina después de un corto tiempo de ejecución.
Cody Gray
@CodyGray Oh, sé que tiene fugas, aunque aún debería funcionar dentro de las especificaciones de desafíos. Y GetDCno regresa, IntPtr.Zeroasí que enviar eso a FromHdcno funcionará.
TheLethalCoder
1
Lea la sugerencia más cuidadosamente. :-) No estoy sugiriendo que llames FromHdc, estoy sugiriendo que llames FromHwnd. Observe que cuando llama GetDCpara obtener el DC para un identificador de ventana, pasa un puntero NULO (0) como identificador de ventana.
Cody Gray
@CodyGray Ah sí, eso funciona, ¡gracias! Su nombre es similar, debería haber leído tu comentario con más cuidado ...
TheLethalCoder
3

Consola C #, 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(" ");}}}}

ingrese la descripción de la imagen aquí

Utiliza "todos" (Windows) 16 colores de consola.

Gracias por la "característica" para poder alias de clases en C # a través de la usingdirectiva.

Editar # 1

  • Eliminado algunos espacios.

  • Se eliminaron los ceros de Random.Next ()

  • Fui a namespace system{...}

Editar # 2

  • El tamaño mínimo de la cuadrícula es 40x40.

  • Un byte declarando Random in para el encabezado del bucle

  • Eliminado publicdel método principal

Editar # 3

Resulta que nousing C=Console; es lo mejor que hay. using static Consolees muy parecido a la forma VB.Net de "Importar" clases

Me rindo: TheLethalCoder hizo que esto sucediera


Código original para adaptar el tamaño de la ventana a 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(" ");}}}}

Imagen original:

ingrese la descripción de la imagen aquí

MrPaulch
fuente
namespace Systemdebería guardar bytes, r.Nextpuede eliminar el cero, creo, Eliminar espacios en blanco irrelevantes,
TheLethalCoder
También solo titular C # está bien
TheLethalCoder
¡Gracias! Dejo la consola en el título porque siento que este desafío proporciona un contexto valioso. No veo cómo namespace System{}es más corto que using System;. ¿Le importaria explicar?
MrPaulch
1
Tenía esta memoria fuerte pero infundada que public es necesaria para el Main. ¡Los recuerdos infundados son los mejores!
MrPaulch
1
Gracias. ¡No se dará por vencido! :) ¡Usaré lo que aprendí en el próximo desafío!
MrPaulch
3

Procesamiento, 90 bytes

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

ingrese la descripción de la imagen aquí

expandido y comentado:

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, podría usar un índice de píxeles en lugar de una ubicación x, y, pero el pixels[]acceso a Processing requiere loadPixels()pre y updatePixels()post, de ahí el uso de set(). point()funcionaría también, pero tiene más caracteres y requisitos stroke(). El área aleatoria es en realidad 99x99 para guardar algunos bytes (en lugar de 100x100), pero eso debería cubrir 40x40 con cada píxel en dicha área para ser reemplazado.

Se usa el ruido Perlin () en lugar de random () para mantenerlo más pseudoaleatorio y un byte más corto. El valor se calcula una vez, pero se usa dos veces: una vez para la posición aleatoria, luego otra vez para el color.

El color es en realidad ARGB(00000000 a FFFFFFFF) (no RGB) (puntos de bonificación?: D).

George Profenza
fuente
¡Impresionante y me alegro de verte en este sitio!
Kevin Workman
Como sabio! ¡y gracias! :)
George Profenza
+1 set()es un truco muy bueno y puede ser muy útil para Consejos para jugar al golf en Procesamiento
Kritixi Lithos
ooooooh! No sabía sobre eso. Lo
agregaré
2

Python, 133 bytes

No estoy muy seguro de si esto se ajusta a las especificaciones, porque está en un lienzo en un área de 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+')'))

Pruébelo en línea : versión sineval, que no funciona en Trinket

mbomb007
fuente
Tenga en cuenta por qué, tal vez su tortuga es diferente a la mía, pero mi lienzo predeterminado es 300 por 400, mientras que el valor predeterminado no lo colormodees . 1.0255
Jonathan Allan
Trinket.io es bastante único.
mbomb007 01 de
Sí, acabo de intentar cambiar colormodey no tendría nada de eso: /
Jonathan Allan
¿Por qué tampoco dot(1,R(0,255),R(0,255),R(0,255))funciona? dotestá destinado a aceptar (width,*color). No es Python: p
Jonathan Allan
Porque Trinket.io usa skulpt.js, que es una implementación incompleta de Python.
mbomb007 01 de
2

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

versión completa

Tim Penner
fuente
2
Bienvenido al sitio! :)
DJMcMayhem
¿Cumple esto la regla, "Su programa debe continuar mostrando píxeles aleatorios hasta que se detenga manualmente (no puede terminar por sí solo)"?
Octopus
Esto parece generar simplemente un montón de píxeles aleatorios cuando se ejecuta. No continúa mostrando píxeles uno por uno hasta que se detiene.
MD XF
Parece que me perdí esa regla. Pensé erróneamente que el objetivo era crear una imagen, no una animación. Actualizaré mi respuesta cuando regrese a mi computadora.
Tim Penner
1
@MDXF está animado ahora
Tim Penner
2

Procesando, 112 bytes

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

No puedo garantizar que cada píxel se reemplace cada 3 minutos, pero al mirarlo parece estar haciéndolo. Al menos las probabilidades de que pierda un píxel, de un total de 1600, actualizando uno aleatorio 30 veces por segundo, con un total de 5400 actualizaciones por 3 minutos, es poco probable que se pierda uno.

Sin golf:

El programa es realmente sencillo. Abra una ventana a 40x40 píxeles y cada cuadro (predeterminado 30 por segundo) obtiene un color aleatorio y dibuja un punto en una coordenada aleatoria entre 0 y el parámetro. 40 para coordenadas de píxeles, 255 para colores.

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

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

ingrese la descripción de la imagen aquí

Cody
fuente
¿Se puede eliminar size(40,40);y cambiar pointa point(random(99),random(99));? (o 100 en su lugar si 99 no funciona)
Kritixi Lithos
@KritixiLithos en Processing, la sizefunción DEBE ser la primera línea de código en la función de configuración (las razones son complicadas), por lo que no puedo evitar eso. Puedo cambiar todas las apariciones de 40 a 99, simplemente no lo hice ya que no me ahorró espacio. Principalmente elegí el tamaño mínimo para aumentar las probabilidades de que cada píxel se actualice en un período de 3 minutos
Cody
Je, eso fue lo primero que pensé también, hasta que alguien me lo contó y de alguna manera funcionó, como puedes ver aquí en una presentación mía.
Kritixi Lithos
1
Eliminar toda la setup()función en la última versión de Processing en mi máquina funciona bien sin errores.
Kritixi Lithos
Supongo que mi versión de Processing es bastante antigua, y no la uso lo suficiente como para molestarme en actualizar en este momento.
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 />";

Expandido

$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

Ejemplo de salida sin metaetiqueta y en una versión mayor

<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
fuente
2

C ++ en Windows, 125 bytes

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

Nuevas líneas necesarias e incluidas en el recuento de bytes.

Bucles para siempre, elige aleatoriamente una posición entre 0 y 255 (inclusive) para valores de fila y columna, asigna valores aleatorios R, G, B entre 0-255 (inclusive)

Tas
fuente
1
Me doy cuenta de que estás jugando al golf, ¡pero esa fuga de contexto de dispositivo cada vez que pasa por el bucle realmente hace que me tiemblen los sentidos!
Cody Gray
Ahorre 15 bytes convirtiéndolo en C en Windows en lugar de C ++ en Windows, ya que los compiladores de C le permitirán dejar el #includes. (Y sí, hay compiladores que no son de Visual Studio C para Windows).
MD XF
2

Python 3.6 + Tkinter, 281 bytes

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()
Martistas
fuente
Como tkinteres una biblioteca estándar, no necesita incluirla en el encabezado
caird coinheringaahing
Me sale el mismo error: Windows 10, Python 3.6.0. Puedo adivinar por qué init está viendo cuatro parámetros pasados: el método se está pasando implícitamente como un parámetro "propio". Pero no tengo idea de por qué eso genera un error, ya que la documentación muestra que el constructor de Canvas acepta tres parámetros (maestro, x, y) como se muestra en el código.
CCB60
Debería arreglarse ahora.
Martistas
1
También @Ilikemydog Tkinter no siempre está en stdlib. En Windows es opcional al instalar, y no creo que mi partición de arco tenga instalado Tkinter tampoco. También podría incluirlo.
Martmists
hay error tipográfico - "img" en lugar de "i". Y aún así no funciona, esta vez me salec.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 usando SVG, 129 + 10 = 139 bytes

Versión SVG, fuertemente inspirada en el <canvas>enfoque de @ Octopus .

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>

Dado que al Fragmento de pila le gusta romper el script al analizar la <rect>etiqueta, aquí hay un CodePen .

Darrylyeo
fuente
2

6502 Asamblea, 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

Salida:

salida

Explicación:

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
fuente
1
¿Cuál es tu plataforma target 6502 aquí? BBC Micro? Manzana ][? ¿Comodoro VIC-20, etc ...?
Shaun Bebbers
¿Los nombres de las etiquetas deben tener al menos tres caracteres?
Jonathan Frech
2

LOGOTIPO, 71 bytes

El único lenguaje que conozco, no es esotérico / especialmente diseñado para codegolfing, y tiene foreverfunción. ¿Alguna idea por mapparte?

pu forever[setxy random 100 random 100 setpixel map[random 256][1 1 1]]
usuario202729
fuente
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 gracias al Dr. Rand. :PAGS

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

Sin enlace TIO porque obviamente no puede imprimir en el tipo de terminal que esto requiere en línea.

MD XF
fuente
2

Perl (en * nix), 69 bytes

Los \x1bs son caracteres de escape literales.

Se basa en el sttycomando y funciona bien en OS X.

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

Similar a otros enfoques, pero me gustó la combinación de todos los parámetros en una sola llamada, printfasí que pensé en compartir. Mata mi terminal.

ingrese la descripción de la imagen aquí


El doble de píxeles, 83 bytes

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

Este enfoque utiliza un bloque unicode y un color aleatorio de primer plano y fondo que proporciona un píxel más cuadrado. También mata mi terminal, pero se ve más genial.

ingrese la descripción de la imagen aquí

Dom Hastings
fuente
No olvide que puede usar el byte de escape literal, ASCII 0x1B (27) en lugar de \e. Y en StackExchange esto puede ser representado por .
MD XF
@MDXF Sí ... ¡Necesito probar eso como un script, porque eso no funcionaba -e! También necesito aumentar el número de bytes del que tiene unicode. ¡Uy! ¡Gracias por el recordatorio!
Dom Hastings
2

Bash, 104 bytes

Los \es son caracteres de escape literales.

Estas son más o menos traducciones de mi presentación de Perl, ¡pero usando la sintaxis de bash fork bomb style! Me temo que no es tan inteligente como la otra entrada de bash que escribe directamente en la pantalla.

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

Más píxeles, 130 bytes

Igual que mi respuesta de Perl, usa un carácter unicode para el primer plano y también colorea el fondo de cada píxel.

:(){ printf "\e[%i;%iH\e[48;5;%i;38;5;%im▄" $((RANDOM%`tput lines`)) $((RANDOM%`tput cols`)) $((RANDOM%256)) $((RANDOM%256));:;};:
Dom Hastings
fuente
No está mal. Sin embargo, todavía no entiendo el "\e[48;5;%im". ¿Por qué son necesarios los 48 y 5?
MD XF
Accede a los 256 colores completos, en lugar de solo a la paleta de 16 colores estándar. En los terminales que lo admiten, es posible usarlo, \e[48;2;RRR;GGG;BBBmpero muy pocos emuladores de terminal lo admiten ... :(
Dom Hastings
Santa madre del código ... No tenía idea de que eso fuera posible. Mi vida es una mentira. Un millón de gracias: P
MD XF
@MDXF ^^ y también 38;5denota el primer plano y 48;5deona el fondo. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings
1
@MDXF ¡No te preocupes! ¡Encantado de ayudar! Lástima que me perdí esto cuando era nuevo, pero esa respuesta de Minecraft ... ¡irreal!
Dom Hastings
2

lenguaje de máquina x86 (modo real) para PC IBM, 20 19 bytes

 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

Esto requiere un procesador con las rdrandinstrucciones y un adaptador VGA (real o emulado). Lo anterior se puede copiar en un bloque de arranque o archivo MS-DOS * .COM.

Para probar esto, compile lo siguiente y guarde la salida en un archivo como floppy.imge inicie la imagen en una máquina virtual.

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

No estoy seguro del nombre exacto, pero tuve que usar esto en lugar del Chip-8 normal debido a la limitación de 40x40 píxeles.

12Me21
fuente
Enlace a este lenguaje (muy interesante)?
MD XF
Puede usar el emulador Octo: johnearnest.github.io/Octo
12Me21
2

QBIC , 34 bytes

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

Desafortunadamente, QBIC no establece un SCREENmodo por defecto, por lo que come algunos bytes. PSETes un comando ilegal en el contexto gráfico predeterminado de QBIC.

Explicación

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)

Salida de muestra

@Anonymous encontró un error en la rnd()función de QBIC . Fijación que da la salida a continuación. ¡Gracias!

ingrese la descripción de la imagen aquí

Steenbergh
fuente
Como debería ser obvio por la captura de pantalla, su solución no satisface las condiciones de aleatoriedad. Dada una coordenada, no todos los colores son igualmente probables y dado un color, no todas las coordenadas son igualmente probables; están altamente correlacionados y eso lo está poniendo suavemente. El problema es el generador de números aleatorios que estás usando: 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 FUNCTIONtus números aleatorios son solo hash de la hora actual.
Anónimo el
@ Anónimo Ya está arreglado, ¡gracias!
steenbergh
2

Conjunto 6502, 582 bytes

Menos mal, esto fue divertido. Hace más o menos lo mismo que mi solución básica de 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
MD XF
fuente
¿Es esta la versión sin gofres de tu otra respuesta de ensamblaje 6502 ? :-)
Cody Gray
@CodyGray No, hace las cosas un poco diferente. Es más como mi respuesta BÁSICA de Applesoft (usa una caminata aleatoria), y la otra respuesta de ensamblaje 6502 es más como todas las demás.
MD XF
No estoy de acuerdo con el recuento de bytes: ¿esto es mucho más corto que 583 bytes de ensamblado?
Olivier Dulac
@OlivierDulac tio.run/##Zc/… ?
MD XF