Wyświetlaj losowo kolorowe piksele

47

Zawsze lubiłem ekrany pełne losowo kolorowych pikseli. Są interesujące, a programy, które je rysują, są fajne do oglądania.

Wyzwanie

Wypełnij ekran lub okno graficzne kolorowymi pikselami.

Zasady

  • Twój program musi mieć równą szansę na wybranie wszystkich kolorów (tj. W zakresie #000000do #FFFFFF) lub wszystkich kolorów, które mogą być wyświetlane w twoim systemie.
  • Twój program musi nadal wyświetlać losowe piksele, dopóki nie zostanie ręcznie zatrzymany (nie może sam się zakończyć).
  • Pikseli może być dowolnej wielkości, tak długo, jak wyjście ma co najmniej 40x40 „pikseli”.
  • Twój program musi działać z taką prędkością, aby mógł zastąpić każdy piksel na ekranie / oknie przynajmniej raz po uruchomieniu przez trzy minuty.
  • Twój program musi wybrać naprawdę losowe kolory i punkty do zastąpienia, tj. Losowe, przy czym wszystkie punkty / kolory są jednakowo prawdopodobne. Nie może po prostu wyglądać losowo. Musi używać pRNG lub lepszego, a wynik nie może być taki sam za każdym razem.
  • Twój program musi mieć równe szanse na wybranie wszystkich kolorów podczas każdej iteracji .
  • Twój program musi zastąpić tylko jeden piksel na raz.
  • Twój program nie może korzystać z Internetu ani systemu plików ( /dev/randomi /dev/urandomwyjątek).

Przykład

Twój wynik może wyglądać tak, jeśli zostanie zatrzymany w przypadkowym czasie:

Zwycięzca

Zwycięża najkrótsza odpowiedź w każdym języku. Baw się dobrze!

MD XF
źródło
Przez „naprawdę losowy” zakładam, że pseudolos jest w porządku (jak Math.random () lub podobny)
OldBunny2800
@ OldBunny2800It must use a pRNG or better
TheLethalCoder
Ponieważ program nie może korzystać z Internetu, zostawię to w komentarzu: babelia.libraryofbabel.info/slideshow.html
KSmarts
1
Czy zatem „limit 3 minut” dotyczy również czasu konfiguracji? A może po uruchomieniu „programu”? Pytam, bo mam rozwiązanie Redstone Minecraft, które uruchamia się bardzo szybko po uruchomieniu, ale początkowo zajmuje trochę czasu (musi „umieścić” każdy „piksel” na siatce 40x40), zanim zacznie zmieniać kolory.
BradC
5
Prawdziwie losowy z definicji wyklucza pseudolosowy , ale nie definiuje rozkładu. Zakładam, że masz na myśli jednolity PRNG, w którym wszystkie zdarzenia są równoważne i niezależne od siebie.
Dennis

Odpowiedzi:

85

Minecraft 1.12 Redstone Command Blocks, 4355 2 872 bajtów

Zrzut ekranu Minecraft ze stojakami na zbroję i mapą

(Rozmiar zależy od wielkości zapisanego pliku bloku struktury).

Oto pełny przegląd YouTube , ale postaram się nakreślić poniższy kod.

Procedura konfiguracji:

2 rzędy bloków poleceń do instalacji

To ustawia siatkę 40x40 stojaków na zbroję Minecraft. Stojaki na zbroję są konieczne, ponieważ Minecraft nie ma możliwości zastąpienia zmiennych współrzędnymi świata . Obejście polega więc na lokalizacji tych stojaków na zbroję.

(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

Ten nazwany stojak na zbroję jest w zasadzie naszym „kursorem” do umieszczenia wszystkich stojaków na zbroję, których będziemy potrzebować. Blok z czerwonego kamienia w ostatnim kroku „zasila” bloki w pobliżu (w tym nasze bloki poleceń), więc rozpoczyna następną pętlę:

(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

W tym momencie nasza siatka jest kompletna:

Ukończona kratka stojaka na zbroję

Wybór koloru losowego

Selektor kolorów i pikseli

Fioletowe repeatery na środku tego obrazu wybierają losowy kolor za pomocą następującego polecenia:

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

To, że „@r []” to magiczny sos, wybiera losową istotę na świecie, która spełnia podane warunki . W tym przypadku znajdzie stojak na zbroję w promieniu 9 bloków , a my ustawiliśmy 16 stojaków na zbroję, po jednym dla każdego koloru wełny. Pod wybranym kolorem umieszcza blok czerwonego kamienia (który zasila dwa bloki poleceń po obu stronach).

Selektor losowych pikseli

Umieszczenie bloku czerwonego kamienia pod wybranym kolorem wełny powoduje uruchomienie dwóch kolejnych bloków poleceń:

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

Ta pierwsza linia używa tego samego polecenia magic @r, aby wybrać dowolny stojak na zbroję na całej mapie (bez ograniczenia promienia, więc obejmuje siatkę 40x40), i umieszcza wełnę wybranego koloru nad głową. X określa kolor i zawiera się w przedziale od 0 do 15. Drugie polecenie usuwa blok redstone, dzięki czemu jest gotowy do ponownego użycia.

Mam 5 fioletowych bloków repeatera, a czerwony kamień działa w „tyknięciach” 20 razy na sekundę, więc umieszczam 100 pikseli na sekundę (pomijając niektóre nakładki kolorów). Zmierzyłem czas i zwykle pokrywam całą siatkę w około 3 minuty.

To była dobra zabawa, postaram się poszukać innych wyzwań, które mogą również zadziałać w Minecraft. Ogromne podziękowania dla lorgon111 za jego serię samouczków na temat bloku poleceń YouTube .

EDYCJA: Poważnie zmniejszyłem rozmiar zapisanej struktury, teraz o 2872 zapisanych bajtów :

bliższe bloki poleceń z widocznymi pustymi blokami

  1. Trochę przesadziłem rzeczy (we wszystkich 3 wymiarach), abym mógł zmniejszyć ogólny rozmiar zapisanego obszaru.
  2. Zmieniły wełny w różnych kolorach na kamień, i tak były po prostu ozdobne.
  3. Usunięto lampę kamienną.
  4. Zmieniono wszystkie bloki powietrzne na puste bloki (czerwone kwadraty).

Testowane przez wciągnięcie zapisanej struktury do nowego świata, wszystko nadal działa zgodnie z planem.

EDYCJA 2 : Łącze Dropbox tylko do odczytu do pliku struktury NBT

Opis przejścia znajduje się w moim filmie na YouTube , ale oto kroki:

  1. W Minecraft 1.12 stwórz nowy kreatywny superpłaski świat, korzystając ze wstępnego ustawienia „Redstone Ready”. Ustaw tryb pokojowy.
  2. Gdy świat już istnieje, skopiuj plik NBT do nowego \structuresfolderu utworzonego w ramach bieżącego zapisu świata.
  3. Wróć do gry, zrób /give @p structure_blocki /tp @p -12, 56, -22przeskocz we właściwe miejsce, aby zacząć.
  4. Wykop dziurę i umieść blok konstrukcyjny na -12, 55, -22.
  5. Kliknij blok struktury prawym przyciskiem myszy, kliknij przycisk trybu, aby przełączyć go na „Załaduj”.
  6. Wpisz „random_pixels”, włącz „włącz encje”, a następnie kliknij „Załaduj”
  7. Jeśli znajdzie plik struktury, wyświetli podgląd konturu. Kliknij ponownie prawym przyciskiem myszy i kliknij „Załaduj”, aby przenieść strukturę na świat.
  8. Naciśnij przycisk, aby uruchomić procedurę konfiguracji.
  9. Po zakończeniu przesuń przełącznik, aby uruchomić randomizację wełny.
BradC
źródło
6
Cholera jasna ... naprawdę to zrobiłeś. I to twoja pierwsza odpowiedź, wow! Witamy na stronie, a to niesamowity sposób na rozpoczęcie!
MD XF
2
@MDXF Oprócz twojej +10, daję +60
NoOneIsHere
2
@NoOneIsHere W porządku: P Ale jeśli masz odpowiedź, będzie ona musiała wynosić +100 ...
MD XF
2
Spróbuję zagrać w golfa, jeśli podasz plik światowy (nie opublikuję innej odpowiedzi, ale po prostu dam plik)
Christopher
2
Cóż, shortest answer in each language winsi to jest najkrótsza odpowiedź w Minecraft: P ma dodatkowe +15
MD XF
20

sh + ffmpeg, 52 bajty

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

Czy ffmpeg liczy się jako esolang? :RE

Niestety pix_fmt jest wymagany, ponieważ ffmpeg ma domyślną wartość yuv420p. To nie spełnia wymogu „musi mieć jednakowe prawdopodobieństwo każdego możliwego koloru piksela”. Dogodnie cifjest skrótem do dość dużego rozmiaru wideo, który zajmuje mniej miejsca niż „40x40”.

Nic dziwnego, że optymalizacja tego gifu za pomocą gifsicle nie zrobiła absolutnie nic. To 4MiB.

Una
źródło
3
Czy to „ zastępuje tylko jeden piksel na raz ”?
Scott Milner,
1
Technicznie? ffmpeg będzie jednak czekał na wypełnienie całej ramki pikselami przed jej wyświetleniem. Źle przeczytałem „należy zamieniać tylko 1 piksel na raz” jako „może”. : /
Una
1
I oczywiście gifsicle nie mógł zapisać żadnych bajtów w gifie: nie ma sposobu na kompresowanie dowolnych danych, a wszystkie przypadkowe piksele są chaotycznie rozmieszczone, co oznacza, że ​​najskuteczniejszym sposobem ich kodowania jest jeden piksel na raz. Numberphile (tak myślę?) Miał wideo na temat „czym jest informacja” i przypadkowo hałasował, aby celowo zepsuć kompresję YouTube. VSauce miał też wideo na temat kompresji wideo, ale zapomniałem, jak to się nazywało.
Draco18s,
2
@ Draco18s, wiem, notatka o tym, że jest nieściśliwa, wyśmiewała się z tego, że i tak próbowałem uruchomić na niej gifsicle.
Una
2
Gifsicle to złe narzędzie. Precomp obniża go z 4 MB do 3 MB :) To dlatego, że algorytm GIF zwiększa losowość zamiast kompresować i Precomp odwraca to.
schnaader
17

C w POSIX, 98 96 95 92 bajtów

-3 dzięki Tasowi

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

Wybiera 16 kolorów (ciemnoszary, czerwony, zielony, niebieski, pomarańczowy, cyjan, fioletowy, jasnoszary, czarny, różowy, jasnoniebieski, żółty, jasnoniebieski, magenta, biały) i drukuje je bezpośrednio na terminalu.

Pamiętaj, że jeśli twój procesor graficzny jest zbyt wolny, może się wydawać, że aktualizuje cały ekran na raz. Rzeczywiście idzie piksel po pikselu, ale C jest szybki.

zabarwienie

Alternatywne rozwiązanie, które sprawia, że ​​kolory są bardziej wyraźne:

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

Dowód, że idzie piksel po pikselu (zrzut ekranu z alternatywnego programu):

3d !!!

Wow, to wygląda prawie trójwymiarowo ...

MD XF
źródło
Brakuje ;kompilacji poprawnie, ale wydaje się, że działa świetnie poza tym! B-)
cleblanc
@cleblanc Oh, masz rację! Zapomniałem dodać, że po włączeniu od whilecelu for.
MD XF
2
Prawdopodobnie możesz ogolić kilka bajtów, #define r rand()a następnie użyćr%40, r%40, r%2, r%8
Tas
Nieużywanie koloru 32-bitowego nie spełnia wymagań.
wberry
4
@wberry „Twój program musi mieć równą szansę na wybranie wszystkich kolorów (tj. z zakresu od 000000 do #FFFFFF) lub wszystkich kolorów, które mogą być wyświetlane w twoim systemie. ” Są to wszystkie kolory, które terminal POSIX może wyświetlić.
MD XF
13

JS + HTML 162 + 32 (194) 124 + 13 (137) bajtów

Podziękowania dla Luke'a i innych komentujących za uratowanie mi dużej ilości bajtów.

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>

Ośmiornica
źródło
2
Właściwie <canvas id=c>powinno wystarczyć, ponieważ uważam, że domyślny rozmiar elementu canvasjest, 300 x 150 pxa więc przekracza twój „rozmiar rzutni” wynoszący 99 x 99 px. W każdym razie fajne rozwiązanie.
inserttusernamehere
1
@insertusernamehere, tak, dzięki
Octopus
1
Teraz jednak nie działa w przeglądarce Firefox. Działa w Chrome
ETHproductions
1
OK, OK, rozumiem. Zaoszczędź 2 bajty, wykonując b = c.getContext 2d. (Nie wiem, jak to sformatować, ale jeśli „2d” jest dosłownie szablonem, nie potrzebuje nawiasów.) (Usuwanie moich wcześniejszych sugestii).
Rick Hitchcock
1
Wraz z sugestią Ricka użyj withoświadczenia, aby pozbyć się wszystkich przypadków 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 bajtów

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

Wypróbuj w MATL Online . .5Y.Do tej wersji dodałem półsekundową pauzę ( ).

wprowadź opis zdjęcia tutaj

Wyjaśnienie

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
źródło
1
Kocham to! ----
MD XF
4
z ciekawości, jak zhifikowałeś kod wyjściowy?
Octopus
2
@Octopus Właśnie użyłem LICEcap . Któregoś dnia dołączę animowane wyjście GIF do kompilatora online.
Suever
Widząc, w jaki sposób ta odpowiedź wykorzystuje mniej poleceń / metod, aby osiągnąć podobny wynik, czy nie możesz przekonwertować jej na MATL, aby uzyskać niższy wynik?
MD XF,
Widziałem, że już zastąpiony piksel został ponownie zastąpiony;).
Magic Octopus Urn
7

TI-BASIC (tylko 84 + C (S) E), 37 35 bajtów

: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

Z powodu ograniczeń sprzętowych nastąpi awaria, ponieważ za każdym razem, gdy program jest zagnieżdżony w programie w TI-BASIC , przydzielane jest 15 KB pamięci RAM, aby „zachować zakładkę” w programie nadrzędnym. Działa to dobrze na „teoretycznym” kalkulatorze z nieskończoną pamięcią RAM, ale jeśli chcemy, aby działał bez końca na prawdziwym kalkulatorze, możemy po prostu owinąć go w While 1pętlę o dodatkowe 2 bajty:

:While 1
:...
:End

Rodzina kalkulatorów TI-83 z kolorowymi ekranami (TI 84 + CE i CSE) obsługuje 15 kolorów. Mają kody kolorów 10przez 24. Cykl przechodzi przez wszystkie piksele w 5!kwadracie 120 na 120 ( ) i przypisuje każdemu losowy kolor.

Wynik:

wprowadź opis zdjęcia tutaj

Scott Milner
źródło
Tak, kolejna PODSTAWOWA odpowiedź! Dla pewności, czy to działa wiecznie?
MD XF,
@MDXF Teraz to robi! ;-). Po raz pierwszy tęskniłem za tą częścią. +5 bajtów.
Scott Milner,
Możesz ustawić, aby pętle for zaczynały się od 0, jeśli chcesz pokryć 100 x 100 pikseli.
kamoroso94
@ kamoroso94 Ah, prawda. Mógłbym także zrobić, 5!gdybym chciał 120 pikseli.
Scott Milner,
2
@MDXF TI-BASIC jest oparty na tokenach . Tj. For(To 1 bajt, Pxl-On(1 bajt, randInt(2 bajty itp.
Scott Milner
5

MATLAB, 56 bajtów

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

Dane wyjściowe wyglądają jak na poniższym obrazku. Jeden „piksel” zmienia się na raz i zmienia się tylko jeden z kolorów RGB.

Dlaczego? Kolory w MATLAB są reprezentowane jako macierz 3D, jedna warstwa dla R, G i B. Powyższy kod zmienia tylko jedną z warstw na iterację. Wszystkie piksele i wszystkie warstwy można zmienić, więc jeśli trochę poczekasz, wszystkie kolory są jednakowo możliwe we wszystkich pozycjach.

Dodaj pause(t)wewnątrz pętli, aby wstrzymać tsekundy między każdym obrazem.

Musisz zatrzymać to za pomocą Ctrl+ C.

wprowadź opis zdjęcia tutaj

Stewie Griffin
źródło
3
Sprytne użycie uchwytu do obiektu graficznego jako warunkuwhere
Suever
2
Reguła została wyjaśniona Your program must have an equal chance of picking all colors/points each iteration. Czy twój program to spełnia?
MD XF
5

Bash + coreutils, 59 56 bajtów

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

\e[48;5;COLORm jest zabezpieczeniem ucieczki od koloru tła.

Każdy „piksel” ma szansę za każdym razem znajdować się w zakresie [0..16777215].

marcosm
źródło
1
Wow, to naprawdę dobry pomysł! +1
MD XF
Możesz zrzucić 3 bajty, jeśli użyjesz jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki
Ukradłem ten pomysł i grałem w golfa do 45 bajtów (\ e to 1 znak ucieczki, a shuf | xargs czyni go krótszym (bez potrzeby -n 1 i bez). Codegolf.stackexchange.com/a/158142/7017 Mogę go usunąć, jeśli chcesz (nie jestem do końca pewien, czy powinienem zaproponować to jako komentarz, zamiast go publikować. Moim celem jest zdobycie odrobiny punktów za jednodniową nagrodę za niesamowite odpowiedzi na niesamowite "tetris" in game of life "wyzwanie i odpowiedź! patrz codegolf.stackexchange.com/q/11880/7017
Olivier Dulac
5

JavaScript + HTML 118 + 13 (131 bajtów)

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>

  • Pozwoli to uzyskać równomiernie rozłożone kolory RGB. Nie można używać Hex kolory bez odpowiedniego obicia jak numery jak #7nie jest ważny kolor, albo #777i #777777są tego samego koloru (2x szanse)
  • Element canvas ma domyślnie 300 x 150, ale w rzeczywistości rysuję na kwadracie 255 x 255, więc piksele są wyłączone, więc efektywny obszar to 255 x 150.
  • Działa tylko w Google Chrome.
Vitim.us
źródło
2
Świetny pierwszy post! Witamy na stronie!
MD XF,
Nie sądzę, aby miało to szansę na wyświetlenie jakichkolwiek kolorów z kanałem ustawionym na 255, takich jak czerwony, zielony, niebieski lub biały. Myślę, że zamiast tego musisz pomnożyć przez 256.
kamoroso94
4

Excel VBA, 131 102 85 bajtów

Anonimowa funkcja bezpośredniego okna VBE, która korzysta z funkcji pomocniczej (patrz poniżej), aby wyprowadzić tablicę losowo zabarwionych komórek do zakresu A1:AN40obiektu arkusza aktywnego.

Uwaga: to rozwiązanie jest ograniczone do 32-bitowych instalacji MS Excel (a zatem i pakietu Office jako całości), ponieważ 8^8nie będzie się kompilować w 64-bitowych wersjach VBA

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

Przykładowe dane wyjściowe

Losowe kolory komórek

Poprzednia wersja

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

Funkcja pomocnika

Generuje losową liczbę int w zakresie [0,255]

Function n
n=Int(255*Rnd)
End Function
Taylor Scott
źródło
3

C #, 369 288 287 bajtów

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

Zaoszczędź 88 bajtów dzięki @CodyGray.

Pełny program, który przenosi uchwyt do ekranu i jego rozmiar, a następnie zaczyna losowo na nim rysować piksele. Pamiętaj, że może to spowodować zatrzymanie twojej karty graficznej po uruchomieniu. Również jeśli ekran lub jakakolwiek kontrolka zdecyduje się na odświeżenie w dowolnym momencie, piksele zostaną utracone i będą musiały zostać przerysowane.

Uwaga: Podczas uruchamiania skup się na oknie, aby go zabić, musisz albo Alt + F4, albo nacisnąć przycisk zamykania i robienie tego, gdy nie widzisz ekranu, jest trochę trudne.

Nie mogłem nagrać tego działania za pomocą ScreenToGif, ponieważ zmuszało to do odmalowania, aby piksele zostały usunięte. Jednak tutaj jest zrzut ekranu z jego działaniem po około 10-15 sekundach i myślę, że mogłem zatrzymać swój komputer! Luka w prawym górnym rogu to miejsce, w którym ekran wymusił odmalowanie w momencie, gdy zrobiłem zrzut ekranu.

Przykład pełnej wersji

Wersja pełna / sformatowana:

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

Wersja dla 308 227 226 bajtów, która korzysta tylko z regionu 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);}}}

Przykładowe dane wyjściowe dla tego:

Mały przykładowy wynik


TheLethalCoder
źródło
Graphics.FromHwnd((IntPtr)0)będzie również działać i będzie znacznie krótszy niż P / Invoking GetDC. Oczywiście, twój kod wciąż jest podobny do kodu Tasa i przecieka zasoby jak szalone, dlatego zatrzymuje maszynę po krótkim czasie działania.
Cody Gray
@CodyGray Och, wiem, że to przecieka, powinno jednak działać w ramach specyfikacji wyzwań. I GetDCnie wraca, IntPtr.Zerowięc wysłanie tego do FromHdcnie zadziała.
TheLethalCoder
1
Przeczytaj uważnie sugestię. :-) Nie sugeruję, abyś zadzwonił FromHdc, sugeruję, abyś zadzwonił FromHwnd. Zauważ, że kiedy wywołujesz w GetDCcelu uzyskania kontrolera domeny dla uchwytu okna, przekazujesz wskaźnik NULL (0) jako uchwyt okna.
Cody Gray
@CodyGray Ah tak, to działa, dzięki! Są one nazwane podobnie, powinien był uważniej przeczytać Twój komentarz ...
TheLethalCoder
3

Konsola C #, 233 220 189 188 bajtów

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

wprowadź opis zdjęcia tutaj

Używa 16 wszystkich kolorów konsoli (Windows).

Dzięki za „funkcję”, która umożliwia aliasowanie klas w języku C # za pomocą usingdyrektywy.

Edytuj nr 1

  • Usunięto niektóre spacje.

  • Usunięto zera z Random.Next ()

  • Poszedłem do namespace system{...}

Edytuj # 2

  • Minimalny rozmiar siatki to 40x40

  • Jeden bajt, deklarując Losowy w nagłówku pętli

  • Usunięto publicz metody głównej

Edytuj # 3

Okazuje się using C=Console;to nie najlepszy jest. using static Consoleprzypomina sposób VB.Net do „importowania” klas

Poddaję się: TheLethalCoder sprawił, że tak się stało


Oryginalny kod do dostosowania rozmiaru okna na 207 bajtów:

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

Oryginalny obraz:

wprowadź opis zdjęcia tutaj

MrPaulch
źródło
namespace Systempowinien oszczędzać bajty, r.Nextmoże usunąć zero, wierzę, Usuń niepotrzebne białe
znaki
Również po prostu tytuł C # jest w porządku
TheLethalCoder
Dzięki! W tytule zostawiam Console, ponieważ uważam, że to wyzwanie stanowi cenny kontekst. Nie rozumiem, jak namespace System{}jest krótszy niż using System;. Chcesz to wyjaśnić?
MrPaulch
1
Miałem tę silną, ale nieuzasadnioną pamięć, która jest niezbędna dla społeczeństwa Main. Nieuzasadnione wspomnienia są najlepsze!
MrPaulch
1
Dzięki. Nie poddam się! :) Wykorzystam to, czego nauczyłem się podczas następnego wyzwania!
MrPaulch
3

Przetwarzanie, 90 bajtów

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

wprowadź opis zdjęcia tutaj

rozwinął i skomentował:

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 
}

Idealnie byłoby użyć indeksu pikselowego zamiast lokalizacji x, y, ale pixels[]dostęp do Przetwarzania wymaga loadPixels()wstępnego i updatePixels()końcowego, stąd użycie set(). point()też by działał, ale ma więcej znaków i wymaga stroke(). Losowy obszar to tak naprawdę 99 x 99, aby zaoszczędzić kilka bajtów (zamiast 100 x 100), ale powinno to obejmować 40 x 40 każdego piksela w takim obszarze, który ma zostać zastąpiony.

Zamiast losowego () stosuje się szum Perlin (), aby był bardziej pseudolosowy i krótszy o bajt. Wartość jest obliczana jeden raz, ale używana dwa razy: raz dla losowej pozycji, potem ponownie dla koloru.

Kolor to w rzeczywistości ARGB(00000000 do FFFFFFFF) (nie RGB) (punkty bonusowe?: D).

George Profenza
źródło
Wspaniale i do zobaczenia na tej stronie!
Kevin Workman
W podobny sposób! i dzięki! :)
George Profenza
+1 set()to bardzo fajna sztuczka i może być bardzo przydatna w przypadku wskazówek dotyczących gry w golfa w przetwarzaniu
Kritixi Lithos
ooooooh! Nie wiedziałem o tym. Dodam to, dzięki :)
George Profenza
2

Python, 133 bajty

Nie jestem do końca pewien, czy to pasuje do specyfikacji, ponieważ jest na płótnie w obszarze 40 x 40.

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

Wypróbuj online - wersja bezeval, która nie działa w Trinket

mbomb007
źródło
Uwaga całkiem pewny dlaczego, może twój żółw dist różni się od kopalni, ale moja domyślna płótno jest 300 przez 400, podczas gdy domyślnym colormodejest 1.0nie 255.
Jonathan Allan
Trinket.io jest dość wyjątkowy.
mbomb007
Tak - właśnie próbowałem się zmienić colormodei nie miałbym nic z tego: /
Jonathan Allan
Dlaczego też dot(1,R(0,255),R(0,255),R(0,255))nie działa? dotma na celu zaakceptowanie (width,*color). To nie jest Python: p
Jonathan Allan
Ponieważ Trinket.io używa skulpt.js, która jest niekompletną implementacją Pythona.
mbomb007
2

JavaScript za pomocą Canvas 340 316 324 bajtów

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

pełna wersja

Tim Penner
źródło
2
Witamy na stronie! :)
DJMcMayhem
Czy przestrzega to zasady: „Twój program musi wyświetlać losowe piksele, dopóki nie zostanie ręcznie zatrzymany (nie może sam się zakończyć)”.
Octopus
Wydaje się, że po prostu generuje kilka losowych pikseli podczas uruchamiania. Nie zatrzyma wyświetlania pikseli jeden po drugim, dopóki się nie zatrzyma.
MD XF
Wygląda na to, że przegapiłem tę zasadę. Pomyślałem, że celem było stworzenie obrazu, a nie animacji. Zaktualizuję swoją odpowiedź po powrocie do komputera.
Tim Penner
1
@MDXF jest teraz animowany
Tim Penner
2

Przetwarzanie, 112 bajtów

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

Nie mogę zagwarantować, że każdy piksel jest wymieniany co 3 minuty, ale patrząc na to, wydaje się, że tak się dzieje. Przynajmniej szansa na brak piksela, z 1600, aktualizowanie losowego 30x na sekundę, w sumie 5400 aktualizacji na 3 minuty, sprawia, że ​​jest mało prawdopodobne, że zostanie pominięty.

Nie golfowany:

Program jest naprawdę prosty. Otwórz okno o wymiarach 40 x 40 pikseli, a każda klatka (domyślnie 30 na sekundę) otrzyma losowy kolor i narysuje punkt o losowej współrzędnej między 0 a parametrem. 40 dla współrzędnych pikseli, 255 dla kolorów.

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

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

wprowadź opis zdjęcia tutaj

Cody
źródło
Czy możesz usunąć size(40,40);i zmienić pointna point(random(99),random(99));? (lub 100 zamiast tego, jeśli 99 nie działa)
Kritixi Lithos
@KritixiLithos w przetwarzaniu, sizefunkcja MUSI być pierwszą linią kodu w funkcji konfiguracji (powody, dla których są skomplikowane), więc nie mogę tego obejść. Mogę zmienić wszystkie wystąpienia z 40 na 99, po prostu tego nie zrobiłem, ponieważ nie zaoszczędziło mi to miejsca. Głównie wybrałem minimalny rozmiar, aby zwiększyć szanse, że każdy piksel zostanie odświeżony w ciągu 3 minut
Cody
Heh, tak też najpierw pomyślałem, dopóki ktoś mi o tym nie powiedział i jakoś się udało, jak widzicie tutaj w moim przedłożeniu.
Kritixi Lithos
1
Usunięcie całej setup()funkcji w najnowszej wersji Przetwarzania na moim komputerze działa dobrze bez błędów.
Kritixi Lithos
Wydaje mi się, że moja wersja Przetwarzania jest dość stara i nie używam jej wystarczająco dużo, aby zawracać sobie głowę aktualizacją.
Cody
2

HTML + SVG + PHP, 245 bajtów

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

Rozszerzony

$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

Przykład danych wyjściowych bez metatagu oraz w wyższej wersji

<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
źródło
2

C ++ w systemie Windows, 125 bajtów

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

Konieczne są nowe linie i są one uwzględnione w liczbie bajtów.

Pętle na zawsze, losowo wybiera pozycję między 0 a 255 (włącznie) dla wartości wierszy i kolumn, przypisuje losowe wartości R, G, B między 0-255 (włącznie)

Tas
źródło
1
Zdaję sobie sprawę, że grasz w golfa, ale człowieku, ten przeciek kontekstu urządzenia za każdym razem przez pętlę naprawdę sprawia, że ​​moje mroczne zmysły mrowią!
Cody Gray
Zaoszczędź 15 bajtów, ustawiając C na Windows zamiast C ++ na Windows, ponieważ kompilatory C pozwolą ci zrezygnować z #includes. (I tak, istnieją kompilatory inne niż Visual Studio C dla systemu Windows.)
MD XF
2

Python 3.6 + Tkinter, 281 bajtów

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()
Martmists
źródło
Ponieważ tkinterjest to standardowa biblioteka, nie musisz umieszczać jej w nagłówku
Cairney Coherheringaahing
Otrzymuję ten sam błąd - Windows 10, Python 3.6.0 Mogę zgadnąć, dlaczego init widzi cztery przekazane parametry - metoda jest domyślnie przekazywana jako parametr „self”. Ale nie mam pojęcia, dlaczego powoduje to błąd, ponieważ dokumentacja pokazuje, że konstruktor Canvas akceptuje trzy parametry (master, x, y) pokazane w kodzie.
CCB60
Powinien zostać teraz naprawiony.
Martmists
1
także @Ilikemydog Tkinter nie zawsze jest w stdlib. W systemie Windows jest opcjonalny podczas instalacji i nie sądzę, że moja partycja arch ma zainstalowaną Tkinter. Może to również obejmować.
Martmists
Jest literówka - „img” zamiast „i”. I nadal nie działa, tym razem dostajęc.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"
Michaił V
2

JavaScript (ES7) + HTML przy użyciu SVG, 129 + 10 = 139 bajtów

Wersja SVG, silnie inspirowana podejściem @ Octopus<canvas> .

JS

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

HTML

<svg id=s>

Ponieważ Fragment kodu lubi łamać skrypt podczas analizowania <rect>tagu, oto CodePen .

darrylyeo
źródło
2

6502 Zestaw, 92 bajty

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

Wynik:

wynik

Wyjaśnienie:

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
źródło
1
Czym jest tutaj docelowa platforma 6502? BBC Micro? Jabłko ][? Commodore VIC-20 itp ...?
Shaun Bebbers
Czy nazwy etykiet muszą mieć co najmniej trzy znaki?
Jonathan Frech,
2

LOGO, 71 bajtów

Jedyny język, który znam, ponieważ nie jest ezoteryczny / specjalnie zaprojektowany do kodowania i ma foreverfunkcję. Masz jakiś pomysł ze mapstrony?

pu forever[setxy random 100 random 100 setpixel map[random 256][1 1 1]]
użytkownik202729
źródło
2

shortC , 66 56 bajtów

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

-10 bajtów dzięki 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

Brak linku TIO, ponieważ oczywiście nie można drukować na terminalu wymaganym online.

MD XF
źródło
2

Perl (on * nix), 69 bajtów

Do \x1bs to literalne znaki ewakuacyjne.

Opiera się na sttypoleceniach i działa dobrze w systemie OS X.

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

Podobne do innych podejść, ale podobało mi się połączenie wszystkich parametrów w jednym wywołaniu, printfwięc pomyślałem, że podzielę się. Zabija mój terminal.

wprowadź opis zdjęcia tutaj


Dwa razy więcej pikseli, 83 bajty

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

Podejście to wykorzystuje blok Unicode oraz losowy kolor pierwszego planu i tła, co daje bardziej kwadratowy piksel. Zabija też mój terminal, ale wygląda fajniej.

wprowadź opis zdjęcia tutaj

Dom Hastings
źródło
Nie zapomnij, że zamiast liter można użyć dosłownego bajtu zmiany znaczenia, ASCII 0x1B (27) \e. Na StackExchange może to być reprezentowane przez .
MD XF
@MDXF Tak ... Muszę przetestować to jako skrypt, ponieważ to nie działało -e! Muszę również zwiększyć liczbę bajtów tego z Unicode. Ups! Dzięki za przypomnienie!
Dom Hastings
2

Bash, 104 bajty

Do \es to literalne znaki ewakuacyjne.

To są właściwie tłumaczenia mojego przedłożenia Perla, ale przy użyciu składni typu bash fork bomba! Obawiam się, że nie jest tak sprytny jak inny wpis bash, który zapisuje bezpośrednio na wyświetlaczu.

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

Więcej pikseli, 130 bajtów

Podobnie jak moja odpowiedź na Perla, używa on znaku Unicode na pierwszym planie i koloruje również tło każdego piksela.

:(){ printf "\e[%i;%iH\e[48;5;%i;38;5;%im▄" $((RANDOM%`tput lines`)) $((RANDOM%`tput cols`)) $((RANDOM%256)) $((RANDOM%256));:;};:
Dom Hastings
źródło
Nie jest zły. Jednak nadal nie rozumiem "\e[48;5;%im". Dlaczego numery 48 i 5 są konieczne?
MD XF,
Dostęp do pełnych 256 kolorów, a nie tylko standardowej palety 16 kolorów. W terminalach, które go obsługują, można go używać, \e[48;2;RRR;GGG;BBBmale obsługuje go bardzo niewiele emulatorów terminali ... :(
Dom Hastings
Święta matko kodeksu ... Nie miałem pojęcia, że ​​to możliwe. Moje życie to kłamstwo. Dzięki milion: P
MD XF
@MDXF ^^, a także 38;5oznacza pierwszy plan i 48;5deonuje tło. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings
1
@MDXF Bez obaw! Miło, że mogłem pomóc! Szkoda, że ​​tęskniłem za tym, gdy był zupełnie nowy, ale ta odpowiedź Minecraft ... nierealna!
Dom Hastings,
2

x86 maszyna język (w trybie rzeczywistym) dla IBM PC, 20 19 bajtów

 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

Wymaga to procesora z rdrandinstrukcją i adaptera VGA (rzeczywistego lub emulowanego). Powyższe można skopiować do bloku rozruchowego lub pliku MS-DOS * .COM.

Aby to wypróbować, skompiluj poniższe i zapisz dane wyjściowe do pliku takiego jak floppy.imgi uruchom obraz na maszynie wirtualnej.

#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 );
}
sufitowy
źródło
2

Super Chip (48) ?, 12 bajtów

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

Nie jestem pewien dokładnej nazwy, ale musiałem użyć tego zamiast normalnego Chip-8 z powodu ograniczenia 40x40 pikseli.

12Me21
źródło
Link do tego (bardzo interesującego) języka?
MD XF,
Możesz użyć emulatora Octo: johnearnest.github.io/Octo
12Me21
2

QBIC , 34 bajty

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

Niestety QBIC nie ustawia SCREENdomyślnie trybu, więc zjada niektóre bajty. PSETto niedozwolone polecenie w domyślnym kontekście graficznym QBIC.

Wyjaśnienie

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)

Próbka wyjściowa

@ Anonimowy znalazł błąd w rnd()funkcji QBIC . Naprawianie, które daje wynik poniżej. Dzięki!

wprowadź opis zdjęcia tutaj

Steenbergh
źródło
Jak powinno być oczywiste na podstawie zrzutu ekranu, twoje rozwiązanie nie spełnia warunków losowości. Biorąc pod uwagę współrzędne, nie wszystkie kolory są jednakowo prawdopodobne, a biorąc pod uwagę kolor, nie wszystkie współrzędne są jednakowo prawdopodobne; są wysoce skorelowane i to delikatnie mówiąc. Problem polega na tym, że używasz generatora 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 FUNCTIONliczb losowych : Twoje liczby losowe są tylko skrótem bieżącego czasu.
Anonimowy
@Anonimowy Naprawiono teraz, dzięki!
steenbergh
2

Zestaw 6502, 582 bajty

Uff, było fajnie. Robi mniej więcej to samo, co moje podstawowe rozwiązanie 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
MD XF
źródło
Czy to nie golfowa wersja twojej drugiej odpowiedzi na zestaw 6502 ? :-)
Cody Gray
@CodyGray Nie, robi to trochę inaczej. To bardziej przypomina moją odpowiedź APLIKSÓW PODSTAWOWĄ (używa losowego przejścia), a druga odpowiedź zestawu 6502 jest bardziej podobna do wszystkich pozostałych.
MD XF
Nie zgadzam się z liczbą bajtów: czy jest to znacznie mniej niż 583 bajtów zestawu?
Olivier Dulac
@OlivierDulac tio.run/##Zc/… ?
MD XF,