Exibir pixels coloridos aleatórios


47

Eu sempre gostei de telas cheias de pixels coloridos aleatoriamente. Eles são interessantes de se ver e os programas que os desenham são divertidos de assistir.

O desafio

Preencha sua tela, ou uma janela gráfica, com pixels coloridos.

As regras

  • Seu programa deve ter uma chance uniforme de escolher todas as cores (ou seja, no intervalo #000000de #FFFFFF), ou todas as cores que podem ser exibidas no seu sistema.
  • Seu programa deve continuar exibindo pixels aleatórios até que seja interrompido manualmente (ele não pode terminar sozinho).
  • Os pixels podem ter qualquer tamanho, desde que sua saída tenha pelo menos 40x40 "pixels".
  • Seu programa deve ser executado a uma velocidade que possa substituir todos os pixels na tela / janela pelo menos uma vez após a execução por três minutos.
  • Seu programa deve escolher cores e pontos verdadeiramente aleatórios para substituir, ou seja, aleatórios com todos os pontos / cores igualmente prováveis. Não pode parecer aleatório. Ele deve usar um pRNG ou melhor e a saída não pode ser a mesma sempre.
  • Seu programa deve ter a mesma chance de escolher todas as cores a cada iteração .
  • Seu programa deve substituir apenas um pixel de uma vez.
  • Seu programa não pode usar a Internet nem seu sistema de arquivos ( /dev/randome /dev/urandomexceto).

Exemplo

Sua saída pode ficar assim se for interrompida aleatoriamente:

O vencedor

A resposta mais curta em cada idioma vence. Diverta-se!


Por "verdadeiramente aleatório", presumo pseudo é OK (como Math.random () ou similar)
OldBunny2800

@ OldBunny2800It must use a pRNG or better
TheLethalCoder

Desde que o programa não pode usar a internet, eu só vou deixar isso em um comentário: babelia.libraryofbabel.info/slideshow.html
KSmarts

1
O "limite de 3 minutos" também se aplica ao tempo de configuração também? Ou apenas uma vez que o "programa" começa? Perguntando porque eu tenho uma solução redstone do Minecraft, que roda muito rapidamente quando está em andamento, mas demora um pouco para ser configurada inicialmente (ela precisa "colocar" cada "pixel" na grade 40x40) antes de começar a mudar as cores.
BradC

5
Verdadeiramente aleatório por definição exclui pseudo- aleatório, ainda não define uma distribuição. Suponho que você queira dizer um PRNG uniforme , em que todos os eventos são equivalentes e independentes um do outro.
Dennis

Respostas:


85

Blocos de comando do Minecraft 1.12 Redstone, 4.355 2.872 bytes

Captura de tela do Minecraft com armaduras e mapa

(Tamanho determinado pelo tamanho do arquivo do bloco de estrutura salvo.)

Aqui está uma visão geral completa do YouTube , mas tentarei descrever o código abaixo.

Rotina de instalação:

2 linhas de blocos de comando para configuração

Isso configura a grade 40x40 dos suportes de armadura do Minecraft. Suportes de armadura são necessários porque o Minecraft não tem como substituir variáveis ​​nas coordenadas do mundo . Portanto, a solução alternativa é se referir ao local dessas entidades de suporte 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

Esse suporte de armadura nomeado é basicamente o nosso "cursor" para colocar todos os suportes de armadura que precisaremos. O bloco redstone na última etapa "aciona" os blocos próximos (incluindo nossos blocos de comando), então inicia o próximo loop:

(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

Neste ponto, nossa grade está completa:

Grade de suporte de armadura concluída

Seletor de cores aleatórias

Seletor de cores e pixels

Os repetidores roxos no centro desta imagem escolhem uma cor aleatória através do seguinte comando:

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

Como "@r []" é o molho mágico, ele seleciona uma entidade aleatória no mundo que corresponde às condições especificadas . Nesse caso, ele encontra uma armadura dentro de um raio de 9 blocos , e montamos 16 armaduras, uma para cada cor de lã. Sob a cor selecionada, ele coloca um bloco de redstone (que alimenta os dois blocos de comando de cada lado).

Random Pixel Selector

A colocação do bloco redstone sob a cor de lã selecionada aciona mais dois blocos de comando:

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

Essa primeira linha usa nosso mesmo comando magic @r para escolher qualquer suporte de armadura em todo o mapa (sem restrição de raio, de modo que inclua a grade 40x40) e coloca uma lã da cor selecionada acima de sua cabeça. O X determina a cor e varia de 0 a 15. O segundo comando remove o bloco de redstone para que esteja pronto para voltar novamente.

Eu tenho 5 blocos repetidores roxos e o redstone funciona em "ticks" 20 vezes por segundo, então estou colocando 100 pixels por segundo (menos algumas sobreposições de cores). Eu cronometrei, e normalmente costumo cobrir toda a grade em cerca de 3 minutos.

Foi divertido, vou tentar procurar outros desafios que também possam funcionar no Minecraft. Muito obrigado a lorgon111 por sua série de tutoriais sobre blocos de comando do YouTube .

EDIT: Realizou algumas reduções sérias no tamanho da estrutura salva, agora com 2.872 bytes salvos :

blocos de comando mais próximos com blocos vazios visíveis

  1. Movimentei um pouco as coisas (em todas as três dimensões) para reduzir o tamanho total da área salva.
  2. Mudaram as lãs de cores diferentes para pedra, elas eram apenas decorativas de qualquer maneira.
  3. Removida a lâmpada de brilho.
  4. Todos os blocos aéreos foram alterados para blocos nulos (os quadrados vermelhos).

Testado ao colocar a estrutura salva em um novo mundo, tudo ainda funciona como projetado.

EDIT 2 : Link Dropbox somente leitura para o arquivo de estrutura NBT

Walk through está no meu vídeo do YouTube , mas aqui estão as etapas:

  1. No Minecraft 1.12, crie um novo mundo superplano criativo usando a predefinição "Redstone Ready". Torne o modo pacífico.
  2. \structuresQuando o mundo existir, copie o arquivo NBT para uma nova pasta criada com o salvamento mundial atual.
  3. De volta ao jogo, faça /give @p structure_blocke /tp @p -12, 56, -22pule para o lugar certo para começar.
  4. Cavar um buraco e colocar o bloco de estrutura em -12, 55, -22.
  5. Clique com o botão direito do mouse no bloco de estrutura, clique no botão mode para alternar para "Load".
  6. Digite "random_pixels", ative "inclua entidades" e ative "Carregar"
  7. Se encontrar o arquivo de estrutura, ele visualizará o contorno. Clique com o botão direito do mouse novamente e clique em "carregar" para trazer a estrutura ao mundo.
  8. Pressione o botão para executar a rotina de instalação.
  9. Quando terminar, gire o botão para executar a randomização da lã.

6
Caramba ... você realmente fez isso. E é sua primeira resposta, uau! Bem-vindo ao site, e esta é uma maneira incrível de começar!
MD XF

2
@MDXF Além do seu +10, eu estou dando +60
NoOneIsHere 5/17

2
@NoOneIsHere Tudo bem: P Mas se você tem uma resposta, ele vai ter que ser 100 ...
MD XF

2
Eu estou indo para tentar golf este se você der o arquivo do mundo (eu não vou postar outra resposta, mas apenas dar-lhe o arquivo)
Christopher

2
Bem, shortest answer in each language winse esta é a resposta mais curta em Minecraft: P tem um extra de 15
MD XF

20

sh + ffmpeg, 52 bytes

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

O ffmpeg conta como um esolang? : D

Infelizmente, o pix_fmt é necessário, pois o ffmpeg assume o padrão yuv420p. Caso contrário, o requisito "deve ter a mesma probabilidade de todas as cores possíveis de pixel". Convenientemente, cifé um atalho para um tamanho de vídeo bastante grande que utiliza menos espaço que "40x40".

Sem surpresa, otimizar esse gif com gifsicle não fez absolutamente nada. É 4MiB.


3
Isso " substitui apenas um pixel de uma vez "?
21875 Scott Scottner

1
Tecnicamente? O ffmpeg aguardará o preenchimento de todo o quadro com pixels antes de exibi-lo. Eu li errado "deve substituir apenas 1 pixel de cada vez", como "pode". : /
Una

1
E, é claro, o gifsicle não pôde salvar nenhum bytes no gif: não há como compactar dados arbitrários e os pixels aleatórios são todos caoticamente organizados, o que significa que a maneira mais eficiente de codificá-los é um pixel de cada vez. Numberphile (eu acho?) Teve um vídeo sobre "o que é informação" e fez barulho aleatório para mexer intencionalmente com a compressão do YouTube. O VSauce também teve um vídeo sobre compactação de vídeo em um ponto, mas esqueço o que foi chamado.
Draco18s

2
@ Draco18s, eu sei, a nota sobre ser incompressível estava tirando sarro de mim mesma por tentar colocar gifs de qualquer maneira.
Una

2
Gifsicle é a ferramenta errada. O Precomp reduz de 4 MB para 3 MB :) Isso ocorre porque o algoritmo GIF expande a aleatoriedade em vez de compactá-la e o Precomp reverte isso.
schnaader

17

C no POSIX, 98 96 95 92 bytes

-3 graças 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););}

Isso escolhe entre 16 cores (cinza escuro, vermelho, verde, azul, laranja, ciano, roxo, cinza claro, preto, rosa, azul claro, amarelo, ciano claro, magenta, branco) e as imprime diretamente no terminal.

Observe que, se sua GPU estiver muito lenta, isso pode parecer que está atualizando a tela inteira de uma só vez. Na verdade, está indo pixel por pixel, mas C é rápido.

cores

Solução alternativa que torna as cores mais distintas:

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

Prova de que ele vai pixel por pixel (captura de tela do programa alternativo):

3d !!!

Uau, isso parece quase tridimensional ...


Está faltando um ;para compilar corretamente, mas parece funcionar bem diferente disso! B
cleblanc

@cleblanc Oh, você está certo! Esqueci-me de adicionar isso depois que mudei de whilepara for.
MD XF

2
Você provavelmente poderia raspar alguns bytes por #define r rand()e, em seguida, usandor%40, r%40, r%2, r%8
Tas

Ao não usar cores de 32 bits, isso não atende aos requisitos.
wberry

4
@wberry "O seu programa deve ter uma chance uniforme de escolher todas as cores (no intervalo de 000000 a #FFFFFF) ou todas as cores que podem ser exibidas no seu sistema. " Essas são todas as cores que o terminal POSIX pode exibir.
MD XF

13

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

Agradeço a Luke e outros comentadores por me economizarem muitos 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>


2
Na verdade, <canvas id=c>deve ser suficiente, pois acho que o tamanho padrão para o canvaselemento é 300 x 150 pxe, portanto, excede o seu "tamanho da viewport" de 99 x 99 px. Enfim, boa solução.
usar o seguinte comando

1
@insertusernameaqui, sim, obrigado
Octopus

1
Agora não funciona no Firefox. Funciona no Chrome
ETHproductions

1
OK, entendi. Salve 2 bytes executando b = c.getContext 2d. (Não tenho certeza como formatar isso, mas se "2d" é um literal modelo, ele não precisa dos parênteses.) (Excluindo minhas sugestões anteriores.)
Rick Hitchcock

1
Juntamente com a sugestão de Rick, use uma withdeclaração para se livrar de todas as instâncias 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 2/17/16

11

MATL, 28 bytes

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

Experimente no MATL Online . Adicionei uma pausa de meio segundo ( .5Y.) a esta versão.

insira a descrição da imagem aqui

Explicação

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
Eu amo isso! ----
MD XF

4
por curiosidade, como você aprimorou sua saída de código?
Octopus

2
@ Octopus Acabei de usar o LICEcap . Um dia desses, incorporarei a saída GIF animada no compilador online.
Suever

Como essa resposta usa menos comandos / métodos para obter um resultado semelhante, você não poderia convertê-lo em MATL para obter uma pontuação mais baixa?
MD XF

Vi um pixel já substituído ser substituído novamente;).
Magic Octopus Urn

7

TI-BASIC (apenas 84 + C (S) E)), 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

Devido a limitações de hardware, isso eventualmente trava, pois toda vez que um programa é aninhado dentro de um programa na TI-BASIC , 15 KB de RAM são alocados para "manter um marcador" no programa pai. Isso funcionaria bem em uma calculadora "teórica" ​​com RAM infinita, mas se quisermos que ela seja executada indefinidamente em uma calculadora real, podemos envolvê-la em um While 1loop por 2 bytes extras :

:While 1
:...
:End

As calculadoras da família TI-83 com telas coloridas (TI 84 + CE e CSE) suportam 15 cores. Eles têm códigos de cores 10completamente 24. Isso percorre todos os pixels em um 5!quadrado de 120 por 120 ( ) e atribui a cada uma uma cor aleatória.

Resultado:

insira a descrição da imagem aqui


Sim, outra resposta BÁSICA! Só para ter certeza, isso dura para sempre?
MD XF

@MDXF Agora faz! ;-). Perdeu essa parte pela primeira vez. +5 bytes.
Scott Milner

Você pode fazer com que os loops for comecem em 0 se desejar cobrir 100x100 pixels.
precisa saber é o seguinte

@ kamoroso94 Ah, é verdade. Eu também poderia fazer 5!se quisesse 120 pixels.
Scott Milner

2
O @MDXF TI-BASIC é baseado em token . Ou seja, For(é de 1 byte, Pxl-On(é de 1 byte, randInt(é de 2 bytes, etc.
Scott Milner,

5

MATLAB, 56 bytes

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

A saída se parece com a imagem abaixo. Um "pixel" muda de cada vez, e apenas uma das cores RGB muda.

Por quê? As cores no MATLAB são representadas como uma matriz 3D, uma camada para R, G e B. O código acima altera apenas uma das camadas por iteração. Todos os pixels e todas as camadas podem ser alterados; portanto, se você esperar um pouco, todas as cores serão igualmente possíveis em todas as posições.

Adicione pause(t)dentro do loop para pausar tsegundos entre cada imagem.

Você deve pará-lo com Ctrl+ C.

insira a descrição da imagem aqui


3
Inteligente uso do identificador para o objeto gráfico como a condicional nawhere
Suever

2
Uma regra foi esclarecida - Your program must have an equal chance of picking all colors/points each iteration. Seu programa cumpre isso?
MD XF

5

Bash + coreutils, 59. 56 bytes

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

\e[48;5;COLORm é a segurança de escape para a cor de fundo.

Cada "pixel" tem a chance de estar sempre no intervalo [0..16777215].


1
Uau, isso é realmente uma boa ideia! +1
MD XF

Você pode remover 3 bytes, se usar jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki 3/17

Eu roubei essa idéia e a reduzi em 45 bytes (\ e é 1 caractere de escape, e o shuf | xargs a torna mais curta (não há necessidade de -n 1 e não)). Codegolf.stackexchange.com/a/158142/7017 Posso excluí-lo se você quiser (não tenho muita certeza se devo apenas propor isso como um comentário em vez de publicá-lo. Meu objetivo é obter alguns pontos para um dia recompensar as respostas surpreendentes aos incríveis "tetris". no jogo da vida "desafio e resposta! consulte 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>

  • Isso produzirá cores RGB distribuídas uniformemente. Você não pode usar cores Hex sem preenchimento adequado como números, como #7não é uma cor válida, ou #777e #777777são da mesma cor (2x as probabilidades)
  • O elemento da tela é 300x150 por padrão, mas na verdade estou desenhando em um quadrado de 255x255, portanto, existem pixels de tela fora da tela, então a área efetiva é 255x150.
  • Funciona apenas no Google Chrome.

2
Ótimo primeiro post! Bem vindo ao site!
MD XF

Não acredito que isso tenha a chance de exibir cores com um canal definido em 255, como vermelho, verde, azul ou branco. Eu acho que você precisa multiplicar por 256.
kamoroso94

4

Excel VBA, 131 102 85 Bytes

Função de janela imediata VBE anônima que usa uma função auxiliar (veja abaixo) para enviar uma matriz de células coloridas aleatoriamente para o intervalo A1:AN40do objeto da planilha ativa.

Nota: Esta solução está restrita às instalações de 32 bits do MS Excel (e, portanto, do Office como um todo), pois 8^8não será compilado nas versões de 64 bits do VBA

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

Saída de amostra

Cores aleatórias das células

Versão anterior

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

Função auxiliar

Emite um int aleatório no intervalo [0,255]

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

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

Economizou 88 bytes graças a @CodyGray.

Um programa completo que pega a tela e seu tamanho e começa a desenhar pixels nela aleatoriamente. Observe que isso pode atrapalhar sua placa gráfica quando executada. Além disso, se a tela ou qualquer controle decidir repintar a qualquer momento, os pixels serão perdidos e terão que ser redesenhados.

Nota: Ao executar, mantenha o foco na janela para matá-la. Você deve pressionar Alt + F4 ou pressionar o botão Fechar e fazê-lo quando não conseguir ver a tela está um pouco difícil.

Não consegui gravar esse trabalho, com ScreenToGif, pois isso continuava forçando uma repintura para que os pixels fossem removidos. No entanto, aqui está uma captura de tela dele sendo executada após cerca de 10 a 15 segundos, e eu acho que posso parar meu PC! A lacuna no canto superior direito é onde a tela forçou uma nova pintura, assim como tirei a captura de tela.

Exemplo de versão completa

Versão completa / formatada:

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

Uma versão para 308 227 226 bytes que apenas desenha na região 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);}}}

Exemplo de saída para este:

Pequeno exemplo de saída



Graphics.FromHwnd((IntPtr)0)também funcionaria e seria muito menor do que P / Invocação GetDC. Obviamente, seu código ainda é como o de Tas e vaza recursos como um louco, e é por isso que paralisa sua máquina após apenas um curto período de execução.
Cody Grey

@CodyGray Oh, eu sei que vaza, ainda deve funcionar dentro das especificações dos desafios. E GetDCnão retorna, IntPtr.Zeroentão enviar isso para FromHdcnão funcionará.
precisa saber é o seguinte

1
Leia a sugestão com mais atenção. :-) Não estou sugerindo que você ligue FromHdc, estou sugerindo que você ligue FromHwnd. Observe que quando você chama GetDCpara obter o controlador de domínio para um identificador de janela, você passa um ponteiro NULL (0) como identificador de janela.
Cody Grey

@CodyGray Ah, sim, isso funciona, obrigado! Eles estão nomeados para semelhante, deve ter lido o seu comentário mais cuidado ...
TheLethalCoder

3

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

insira a descrição da imagem aqui

Usa "todas" (janelas) 16 cores do console.

Obrigado pelo "recurso" para poder aliasar classes em C # através da usingdiretiva.

Editar # 1

  • Removidos alguns espaços.

  • Removidos zeros de Random.Next ()

  • Frequentou namespace system{...}

Editar # 2

  • O tamanho mínimo da grade é 40x40

  • Um byte declarando Random no cabeçalho do loop

  • Removido publicdo método Main

Editar # 3

Acontece que nãousing C=Console; é o melhor que existe. é muito parecido com o modo VB.Net de "Importar" classesusing static Console

Eu desisto: TheLethalCoder fez isso acontecer


Código original para adaptar o tamanho da janela em 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(" ");}}}}

Imagem original:

insira a descrição da imagem aqui


namespace Systemdeve salvar bytes, r.Nextpode remover a zero, creio eu, Remover espaço em branco irrelevante,
TheLethalCoder

Também só titulação C # é bom
TheLethalCoder

Obrigado! Deixo o Console no título, pois sinto que esse desafio fornece um contexto valioso. Não vejo como namespace System{}é mais curto que using System;. Gostaria de explicar?
MrPaulch 2/17

1
Eu tinha essa memória forte, porém infundada, de que o público é necessário para o Main. Memórias infundadas são as melhores!
precisa saber é o seguinte

1
Obrigado. Não vou desistir! :) Usarei o que aprendi no próximo desafio!
precisa saber é o seguinte

3

Processando, 90 bytes

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

insira a descrição da imagem aqui

expandido e 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, eu poderia usar um índice de pixels em vez da localização x, y, mas o pixels[]acesso do Processing exige loadPixels()pré e updatePixels()pós, daí o uso de set().point()funcionaria também, mas tem mais caracteres e requer stroke(). A área aleatória é na verdade 99x99 para salvar alguns bytes (em vez de 100x100), mas isso deve cobrir 40x40 com cada pixel em uma área a ser substituída.

O ruído Perlin () é usado em vez de random () para mantê-lo mais pseudo-aleatório e com um byte menor. O valor é calculado uma vez, mas usado duas vezes: uma vez para a posição aleatória e depois novamente para a cor.

A cor é realmente ARGB(00000000 a FFFFFFFF) (não RGB) (pontos de bônus?: D).


Incrível e bom vê-lo neste site!
Kevin Workman

Da mesma forma ! e obrigado! :)
George Profenza

O +1 set()é um truque muito interessante e pode ser muito útil para Dicas de golfe no processamento
Kritixi Lithos

ooooooh! Eu não sabia disso. Vou adicioná-lo lá, graças :)
George Profenza

2

Python, 133 bytes

Não tenho certeza se isso se encaixa nas especificações, porque está em uma tela em uma á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+')'))

Experimente on-line - versão semeval, que não funciona no Trinket


Observe bem o porquê, talvez sua dist tartaruga seja diferente da minha, mas minha tela padrão é de 300 por 400 enquanto a padrão não colormodeé . 1.0255
Jonathan Allan

Trinket.io é bastante único.
mbomb007

Sim - eu apenas tentei mudar colormodee ele não teria nada disso: /
Jonathan Allan

Por que também dot(1,R(0,255),R(0,255),R(0,255))não funciona? doté para aceitar (width,*color). Não é Python: p
Jonathan Allan

Porque o Trinket.io usa skulpt.js, que é uma implementação incompleta do Python.
mbomb007

2

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

versão completa


2
Bem vindo ao site! :)
DJMcMayhem

Isso respeita a regra: "Seu programa deve continuar exibindo pixels aleatórios até que seja interrompido manualmente (ele não pode terminar sozinho)."?
Octopus

Isso parece simplesmente gerar um monte de pixels aleatórios quando executado. Ele não continua exibindo pixels um por um até parar.
MD XF

Parece que eu perdi essa regra. Por engano, pensei que o objetivo era criar uma imagem, não uma animação. Atualizarei minha resposta quando voltar ao meu computador.
Tim Penner #

1
@MDXF ele está animado agora
Tim Penner

2

Processando, 112 bytes

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

Não posso garantir que cada pixel seja substituído a cada 3 minutos, mas olhando para ele parece estar fazendo isso. Pelo menos as chances de ele perder um pixel, de um total de 1600, atualizando um aleatório 30x por segundo, totalizando 5400 atualizações por 3 minutos, torna improvável que um deles seja perdido.

Ungolfed:

O programa é realmente simples. Abra uma janela em 40x40 pixels, e cada quadro (padrão 30 por segundo) terá uma cor aleatória e desenhe um ponto em uma coordenada aleatória entre 0 e o parâmetro. 40 para coordenadas de pixel, 255 para cores.

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

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

insira a descrição da imagem aqui


Você pode remover size(40,40);e alterar pointpara point(random(99),random(99));? (ou 100 em vez se 99 não está funcionando)
Kritixi Lithos

@ KritixiLithos em Processing, a sizefunção DEVE ser a primeira linha de código na função de configuração (razões pelas quais são complicadas), então não consigo contornar isso. Posso alterar todas as ocorrências de 40 a 99, mas não o fiz, pois não me salvou espaço. Eu fui principalmente com o tamanho mínimo para aumentar as chances de que cada pixel será atualizada em um período de 3 minutos
Cody

Heh, foi o que pensei primeiro, até que alguém me contou e de alguma forma deu certo, como você pode ver aqui em uma apresentação minha.
Kritixi Lithos

1
A remoção de toda a setup()função da versão mais recente do Processing na minha máquina funciona bem, sem erros.
Kritixi Lithos

Acho que minha versão do Processing é bastante antiga e não a uso o suficiente para me preocupar em atualizar agora.
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

Exemplo de saída sem meta tag e em uma versão maior

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

Novas linhas necessárias e incluídas na contagem de bytes.

Laços para sempre, escolhe aleatoriamente uma posição entre 0 e 255 (inclusive) para valores de linha e coluna, atribui valores aleatórios de R, G, B entre 0 e 255 (inclusive)


1
Eu percebo que você está jogando golfe, mas o homem que vaza o contexto de um dispositivo toda vez que passa pelo circuito realmente faz meus sentimentos de aranha formigarem!
Cody Grey

Economize 15 bytes, tornando-o C no Windows em vez de C ++ no Windows, pois os compiladores C permitirão que você deixe de fora os #includes. (E sim, há não-visuais compiladores 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()

Como tkinteré uma biblioteca padrão, você não precisa incluí-la no cabeçalho
caird coinheringaahing

Eu recebo o mesmo erro - Windows 10, Python 3.6.0 Eu posso adivinhar por que o init está vendo quatro parâmetros passados ​​- o método está sendo passado implicitamente em um parâmetro "self". Mas não tenho idéia do por que isso está gerando um erro, pois a documentação mostra que o construtor Canvas aceita três parâmetros (mestre, x, y), como mostrado no código.
CCB60

Deve ser corrigido agora.
Martmists

1
também @Ilikemydog Tkinter nem sempre está no stdlib. No Windows, é opcional durante a instalação e também não acho que minha partição em arco tenha o Tkinter instalado. Pode muito bem incluí-lo.
Martmists

existe erro de digitação - "img" em vez de "i". E ainda assim não funcionar, desta vez eu receboc.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

Versão SVG, fortemente inspirada na <canvas>abordagem da @ 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>

Como o snippet de pilha gosta de quebrar o script analisando a <rect>tag, aqui está um CodePen .


2

6502 Assembly, 92 bytes

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

Resultado:

resultado

Explicação:

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
O que é sua plataforma 6502 target aqui? BBC Micro? Maçã ][? Comodoro VIC-20 etc ...?
Shaun Bebbers 15/03/19

Os nomes dos rótulos precisam ter pelo menos três caracteres?
Jonathan Frech

2

LOGO, 71 bytes

A única linguagem que eu conheço, não sendo esotérica / especialmente projetada para codegolfing, e tem foreverfunção. Alguma idéia da mapparte?

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

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 graças ao 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

Não há link TIO, porque você obviamente não pode imprimir no tipo de terminal que isso requer online.


2

Perl (em * nix), 69 bytes

Os \x1bs são caracteres de escape literais.

Confia no sttycomando e funciona bem no OS X.

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

Semelhante a outras abordagens, mas gostei da combinação de todos os parâmetros em uma única chamada, printfentão pensei em compartilhar. Mata meu terminal.

insira a descrição da imagem aqui


O dobro de pixels, 83 bytes

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

Essa abordagem usa um bloco unicode e uma cor aleatória de primeiro plano e plano de fundo que fornece um pixel mais quadrado. Mata meu terminal também, mas parece mais frio.

insira a descrição da imagem aqui


Não esqueça que você pode usar o byte de escape literal ASCII 0x1B (27) em vez de \e. E no StackExchange, isso pode ser representado por .
MD XF

@MDXF Sim ... eu preciso testar isso como um script, porque isso não estava funcionando via -e! Também preciso aumentar a contagem de bytes daquele com unicode. Opa! Obrigado pela lembrança!
Dom Hastings

2

Bash, 104 bytes

Os \es são caracteres de escape literais.

Estas são praticamente traduções do meu envio Perl, mas usando a sintaxe do estilo bash fork bomb! Receio que não seja tão inteligente quanto a outra entrada do bash que escreve diretamente na tela.

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

Mais pixels, 130 bytes

Igual à minha resposta Perl, isso usa um caractere unicode para o primeiro plano e também colore o fundo de cada pixel.

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

Não é ruim. No entanto, eu ainda não entendo o "\e[48;5;%im". Por que os 48 e 5 são necessários?
MD XF

Que acessam as 256 cores completas, em vez de apenas a paleta de 16 cores padrão. Nos terminais que o suportam, é possível usar, \e[48;2;RRR;GGG;BBBmmas poucos emuladores de terminal o suportam ... :(
Dom Hastings

Santa mãe do código .... Eu não tinha idéia do que era possível. Minha vida é uma mentira. Graças um milhão: P
MD XF

@MDXF ^^ e também 38;5 indica primeiro plano e 48;5deona o plano de fundo. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings

1
@MDXF Não se preocupe! Feliz em ajudar! Pena que eu perdi isso quando era novo, mas a resposta do Minecraft ... irreal!
Dom Hastings

2

linguagem de máquina x86 (modo real) para IBM PC, 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

Isso requer um processador com o rdrand instruções e um adaptador VGA (real ou emulado). O acima pode ser copiado em um bloco de inicialização ou em um arquivo MS-DOS * .COM.

Para tentar isso, compile o seguinte e salve a saída em um arquivo como floppy.imge inicialize a imagem em uma 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 );
}

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

Não tenho certeza do nome exato, mas tive que usá-lo em vez do Chip-8 normal por causa da limitação de 40x40 pixels.


Link para este idioma (muito interessante)?
MD XF

Você pode usar o emulador Octo: johnearnest.github.io/Octo
12Me21

2

QBIC , 34 bytes

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

Infelizmente, o QBIC não define um SCREENmodo por padrão, o que consome alguns bytes.PSETé um comando ilegal no contexto gráfico padrão do QBIC.

Explicação

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)

Saída de amostra

O @Anonymous encontrou um erro na rnd()função do QBIC . Correção que fornece a saída abaixo. Obrigado!

insira a descrição da imagem aqui


Como deve ser óbvio na captura de tela, sua solução não atende às condições de aleatoriedade. Dada uma coordenada, nem todas as cores são igualmente prováveis ​​e dada uma cor, nem todas as coordenadas são igualmente prováveis; eles são altamente correlacionados e isso é o mínimo. O problema é o gerador de números aleatórios que você está 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 FUNCTIONSeus números aleatórios são apenas hashes do tempo atual.
Anónimo

@ Anonymous Está consertado agora, obrigado!
steenbergh

2

6502 Assembly, 582 bytes

Uau, isso foi divertido. Faz mais ou menos a mesma coisa que minha solução Applesoft BASIC.

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

Esta é a versão não destruída de sua outra resposta de montagem 6502 ? :-)
Cody Gray

@CodyGray Não, faz as coisas de maneira um pouco diferente. É mais parecido com a minha resposta do Applesoft BASIC (usa uma caminhada aleatória), e a outra resposta de montagem do 6502 é mais parecida com todas as outras.
MD XF

Não concordo com a contagem de bytes: isso é muito menor que 583 bytes de assembly?
Olivier Dulac

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.