Tampilkan piksel berwarna acak

47

Saya selalu menyukai layar yang penuh dengan piksel berwarna acak. Mereka menarik untuk dilihat dan program-program yang menggambarnya menyenangkan untuk ditonton.

Tantangan

Isi layar Anda, atau jendela grafis, dengan piksel berwarna.

Aturan

  • Program Anda harus memiliki kesempatan yang sama untuk memilih semua warna (yaitu dalam kisaran #000000hingga #FFFFFF), atau semua warna yang dapat ditampilkan pada sistem Anda.
  • Program Anda harus terus menampilkan piksel acak hingga berhenti secara manual (tidak dapat dihentikan dengan sendirinya).
  • Piksel dapat berukuran berapa saja, selama output Anda memiliki setidaknya 40x40 "piksel".
  • Program Anda harus berjalan dengan kecepatan sedemikian rupa sehingga dapat mengganti setiap piksel di layar / jendela setidaknya sekali setelah berjalan selama tiga menit.
  • Program Anda harus memilih warna dan titik yang benar-benar acak untuk diganti, yaitu acak dengan semua titik / warna yang memiliki kemungkinan yang sama. Itu tidak bisa hanya terlihat acak. Itu harus menggunakan pRNG atau lebih baik, dan hasilnya tidak bisa sama setiap waktu.
  • Program Anda harus memiliki kesempatan yang sama untuk memilih semua warna setiap iterasi .
  • Program Anda harus mengganti hanya satu piksel sekaligus.
  • Program Anda tidak dapat menggunakan internet atau sistem file Anda ( /dev/randomdan /dev/urandomdikecualikan).

Contoh

Output Anda dapat terlihat seperti ini jika dihentikan secara acak:

Pemenang

Jawaban terpendek di setiap bahasa menang. Selamat bersenang-senang!

MD XF
sumber
Dengan "benar-benar acak", saya menganggap pseudorandom adalah OK (seperti Math.random () atau serupa)
OldBunny2800
@ OldBunny2800It must use a pRNG or better
TheLethalCoder
Karena program tidak dapat menggunakan internet, saya hanya akan meninggalkan ini dalam komentar: babelia.libraryofbabel.info/slideshow.html
KSmarts
1
Jadi, apakah "batas 3 menit" juga berlaku untuk waktu pemasangan? Atau hanya sekali "program" dimulai? Bertanya karena saya memiliki solusi redstone Minecraft, yang berjalan sangat cepat setelah diluncurkan, tetapi perlu beberapa saat untuk mengatur awalnya (harus "menempatkan" setiap "piksel" dalam kisi 40x40) sebelum dapat mulai mengubah warna.
BradC
5
Benar-benar acak dengan definisi mengecualikan pseudo -random, namun tidak mendefinisikan distribusi. Saya berasumsi bahwa yang Anda maksud adalah PRNG yang seragam , di mana semua acara bisa dilengkapi dan tidak tergantung satu sama lain.
Dennis

Jawaban:

85

Minecraft 1.12 Redstone Command Blocks, 4.355 2.872 byte

Tangkapan layar Minecraft dengan dudukan dan peta baju besi

(Ukuran ditentukan oleh ukuran file blok struktur yang disimpan.)

Berikut ini adalah ikhtisar YouTube lengkap , tetapi saya akan mencoba menguraikan kode di bawah ini.

Pengaturan rutin:

2 baris blok perintah untuk pengaturan

Ini mengatur grid 40x40 dudukan baju besi Minecraft. Armor stand diperlukan karena Minecraft tidak memiliki cara untuk mengganti variabel menjadi koordinat dunia . Jadi solusinya adalah merujuk ke lokasi entitas stand armor ini.

(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

Dudukan pelindung bernama ini pada dasarnya adalah "kursor" kita untuk menempatkan semua dudukan pelindung yang kita butuhkan. Blok redstone pada langkah terakhir "memberi kekuatan" pada blok terdekat (termasuk blok perintah kami), jadi mulailah dari loop berikutnya:

(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

Pada titik ini kisi kami selesai:

Grid dudukan armor yang lengkap

Pemilih Warna Acak

Pemilih Warna dan Piksel

Pengulang ungu di bagian tengah gambar ini memilih warna acak melalui perintah berikut:

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

"@R []" itu adalah saus ajaib, ia memilih entitas acak di dunia yang cocok dengan kondisi yang diberikan . Dalam hal ini, ia menemukan dudukan pelindung di dalam radius 9 blok , dan kami telah menyiapkan 16 dudukan pelindung, satu untuk setiap warna wol. Di bawah warna yang dipilih, ini menempatkan blok redstone (yang mendukung dua blok perintah di kedua sisi).

Pemilih Piksel Acak

Menempatkan blok redstone di bawah warna wol yang dipilih memicu dua blok perintah lagi:

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

Baris pertama ini menggunakan perintah @r magic yang sama untuk memilih dudukan pelindung di seluruh peta (tanpa batasan radius, sehingga mencakup kisi 40x40), dan menempatkan wol warna yang dipilih di atas kepalanya. X menentukan warna, dan berkisar dari 0 hingga 15. Perintah kedua menghapus blok redstone sehingga siap untuk pergi lagi.

Saya memiliki 5 blok repeater ungu, dan redstone bekerja di "ticks" 20 kali per detik, jadi saya menempatkan 100 piksel per detik (dikurangi beberapa warna yang tumpang tindih). Saya sudah menghitung waktunya, dan saya biasanya menutup seluruh kotak dalam waktu sekitar 3 menit.

Ini menyenangkan, saya akan mencoba mencari tantangan lain yang mungkin juga berfungsi di Minecraft. Terima kasih banyak untuk lorgon111 untuk seri tutorial Blok Perintah YouTube- nya .

EDIT: Melakukan beberapa pengurangan serius dalam ukuran struktur yang disimpan, sekarang di 2.872 byte yang disimpan :

blok perintah yang lebih dekat dengan blok void yang terlihat

  1. Memutar hal-hal sedikit (dalam semua 3 dimensi) sehingga saya bisa mengurangi ukuran keseluruhan area yang disimpan.
  2. Mengubah wol warna yang berbeda menjadi batu, mereka hanya dekoratif.
  3. Menghapus lampu batu permata.
  4. Mengubah semua blok udara menjadi membatalkan blok (kotak merah).

Diuji dengan menarik struktur yang diselamatkan ke dunia baru, semuanya masih berfungsi seperti yang dirancang.

EDIT 2 : Tautan Dropbox hanya-baca ke file struktur NBT

Walk through ada di video YouTube saya , tetapi berikut adalah langkah-langkahnya:

  1. Di Minecraft 1.12, buat dunia superflat kreatif baru menggunakan preset "Redstone Ready". Jadikan mode damai.
  2. Setelah dunia ada, salin file NBT ke \structuresfolder baru yang Anda buat di bawah save dunia saat ini.
  3. Kembali dalam permainan, lakukan /give @p structure_block, dan /tp @p -12, 56, -22untuk melompat ke tempat yang tepat untuk memulai.
  4. Gali lubang dan letakkan blok struktur di -12, 55, -22.
  5. Klik kanan blok struktur, klik tombol mode untuk beralih ke "Load".
  6. Ketik "random_piksel", putar "sertakan entitas" ON, dan klik "Muat"
  7. Jika menemukan file struktur, itu akan melihat pratinjau garis besar. Klik kanan lagi dan klik "muat" untuk membawa struktur ke dunia.
  8. Tekan tombol untuk menjalankan rutin pengaturan.
  9. Saat selesai, balik saklar untuk menjalankan pengacakan wol.
BradC
sumber
6
Omong kosong ... Anda benar-benar melakukannya. Dan ini jawaban pertama Anda, wow! Selamat datang di situs ini, dan ini adalah cara yang luar biasa untuk memulai!
MD XF
2
@MDXF Selain +10 Anda, saya memberikan +60
NoOneIsHere
2
@NoOneIsHere Baiklah: P Tetapi jika Anda memiliki jawaban, itu harus +100 ...
MD XF
2
Saya akan mencoba dan golf ini jika Anda memberikan file dunia (saya tidak akan mengirim jawaban lain tetapi hanya memberikan file)
Christopher
2
Baiklah, shortest answer in each language winsdan ini adalah jawaban terpendek di Minecraft: P dapatkan tambahan +15
MD XF
20

sh + ffmpeg, 52 byte

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

Apakah ffmpeg dianggap sebagai esolang? : D

Sayangnya pix_fmt diperlukan, karena ffmpeg default ke yuv420p. Itu gagal "harus memiliki kemungkinan yang sama dari setiap warna piksel yang mungkin" persyaratan. Nyaman, cifadalah jalan pintas untuk ukuran video yang cukup besar yang menggunakan lebih sedikit ruang dari "40x40".

Tidak mengherankan, mengoptimalkan gif ini dengan gifsicle sama sekali tidak melakukan apa pun. Ini 4MiB.

Una
sumber
3
Apakah ini " ganti hanya satu piksel sekaligus "?
Scott Milner
1
Secara teknis? ffmpeg akan menunggu seluruh frame terisi piksel sebelum menampilkannya. Saya salah membaca "hanya harus mengganti 1 piksel setiap kali" sebagai "mungkin". : /
Una
1
Dan tentu saja gifsicle tidak dapat menyimpan byte di gif: tidak ada cara untuk mengompresi data yang sewenang-wenang dan piksel acak semuanya diatur secara kacau, artinya cara paling efisien penyandiannya adalah satu piksel pada satu waktu. Numberphile (saya pikir?) Memiliki video tentang "apa itu informasi" dan melakukan noise acak untuk sengaja mengacaukan kompresi YouTube. VSauce punya video kompresi video pada satu titik juga, tapi saya lupa namanya.
Draco18s
2
@ Draco18s, saya tahu, catatan tentang hal itu menjadi tidak tertekan adalah mengolok-olok diri saya karena mencoba menjalankan gifsicle di atasnya.
Una
2
Gifsicle adalah alat yang salah. Precomp menurunkannya dari 4 MB menjadi 3 MB :) Itu karena algoritma GIF memperluas keacakan alih-alih mengompresnya dan Precomp membalikkan ini.
schnaader
17

C pada POSIX, 98 96 95 92 byte

-3 Terima kasih kepada 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););}

Ini memilih antara 16 warna (abu-abu gelap, merah, hijau, biru, oranye, cyan, ungu, abu-abu muda, hitam, merah muda, biru muda, kuning, cyan muda, magenta, putih) dan mencetaknya langsung ke terminal.

Perhatikan bahwa jika GPU Anda terlalu lambat, ini mungkin terlihat seperti memperbarui seluruh layar sekaligus. Ini sebenarnya akan pixel demi pixel, tetapi C cepat.

warna

Solusi alternatif yang membuat warna lebih berbeda:

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

Bukti bahwa ia berjalan piksel demi piksel (tangkapan layar dari program alternatif):

3d !!!

Wow, itu terlihat hampir 3 dimensi ...

MD XF
sumber
Tidak ada yang ;bisa dikompilasi dengan benar tetapi tampaknya bekerja lebih dari itu! B-)
cleblanc
@cleblanc Oh, Anda benar! Saya lupa menambahkan itu setelah saya beralih dari whileke for.
MD XF
2
Anda mungkin bisa mencukur beberapa bytes #define r rand()dan kemudian menggunakanr%40, r%40, r%2, r%8
Tas
Dengan tidak menggunakan warna 32-bit ini tidak memenuhi persyaratan.
wberry
4
@wberry "Program Anda harus memiliki peluang genap untuk memilih semua warna (yaitu dalam kisaran # 000000 hingga #FFFFFF), atau semua warna yang dapat ditampilkan pada sistem Anda. " Ini adalah semua warna yang dapat ditampilkan oleh terminal POSIX.
MD XF
13

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

Terima kasih kepada Luke dan komentator lainnya karena telah menyelamatkan saya banyak byte.

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

Gurita
sumber
2
Sebenarnya <canvas id=c>harus cukup karena saya pikir ukuran default untuk- canvaselemen adalah 300 x 150 pxdan melebihi "ukuran viewport" Anda 99 x 99 px. Bagaimanapun, solusi yang bagus.
masukkan nama pengguna di sini
1
@insertusernamedi sini, ya, terima kasih
Octopus
1
Tidak berfungsi di Firefox sekarang. Ini berfungsi di Chrome
ETHproduk
1
OK, OK, saya mengerti. Simpan 2 byte dengan melakukan b = c.getContext 2d. (Tidak yakin bagaimana memformat ini, tetapi jika "2d" adalah templat literal, tidak perlu tanda kurung.) (Menghapus saran saya sebelumnya.)
Rick Hitchcock
1
Bersamaan dengan saran Rick, gunakan withpernyataan untuk menyingkirkan semua contoh b.:r=n=>n*Math.random()|0 setInterval("with(c.getContext`2d`)fillStyle='#'+r(2**24).toString(16),fillRect(r(99),r(99),1,1)")
darrylyeo
11

MATL, 28 byte

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

Cobalah di MATL Online . Saya telah menambahkan jeda setengah detik ( .5Y.) ke versi ini.

masukkan deskripsi gambar di sini

Penjelasan

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
sumber
1
Aku menyukainya! ----
MD XF
4
karena penasaran, bagaimana cara Anda memperpendek output kode?
Octopus
2
@Octopus Saya baru saja menggunakan LICEcap . Suatu hari, saya akan memasukkan output animasi GIF ke dalam kompiler online.
Suever
Melihat bagaimana jawaban ini menggunakan lebih sedikit perintah / metode untuk mencapai hasil yang serupa, tidak bisakah Anda mengonversikannya ke MATL untuk mencapai skor yang lebih rendah?
MD XF
Saya melihat piksel yang sudah diganti diganti lagi;).
Magic Gurita Guci
7

TI-BASIC (84 + C (S) E saja), 37 35 byte

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

Karena keterbatasan perangkat keras, ini pada akhirnya akan macet, karena setiap kali sebuah program bersarang dalam sebuah program di TI-BASIC , 15 KB RAM dialokasikan untuk "menyimpan bookmark" di program induk. Ini akan bekerja dengan baik pada kalkulator "teoretis" dengan RAM tak terbatas, tetapi jika kita ingin itu berjalan tanpa batas pada kalkulator nyata, kita bisa membungkusnya dalam satu While 1lingkaran untuk tambahan 2 byte:

:While 1
:...
:End

Kalkulator keluarga TI-83 dengan layar warna (TI 84 + CE dan CSE) mendukung 15 warna. Mereka memiliki kode warna 10melalui 24. Ini menggilir semua piksel dalam kotak 120 x 120 ( 5!) dan memberikan masing-masing warna acak.

Hasil:

masukkan deskripsi gambar di sini

Scott Milner
sumber
Yay, jawaban BASIC lainnya! Hanya untuk memastikan, apakah ini berjalan selamanya?
MD XF
@ MDXF Sekarang ya! ;-). Merindukan bagian itu untuk pertama kalinya. +5 byte.
Scott Milner
Anda dapat membuat loop for mulai dari 0 jika Anda ingin menutupi 100x100 piksel.
kamoroso94
@ kamoroso94 Ah, benar. Saya juga bisa melakukannya 5!jika saya ingin 120 piksel.
Scott Milner
2
@MDXF TI-BASIC adalah berbasis-token . Yaitu For(1 byte, Pxl-On(adalah 1 byte, randInt(adalah 2 byte, dll.
Scott Milner
5

MATLAB, 56 byte

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

Outputnya terlihat seperti gambar di bawah ini. Satu "piksel" berubah pada satu waktu, dan hanya satu dari warna RGB yang berubah.

Mengapa? Warna dalam MATLAB direpresentasikan sebagai 3D-matrix, satu layer untuk R, G dan B. Kode di atas hanya mengubah satu layer per iterasi. Semua piksel dan semua lapisan dapat diubah, jadi jika Anda menunggu sedikit semua warna sama-sama mungkin di semua posisi.

Tambahkan pause(t)di dalam loop untuk menjeda tdetik di antara setiap gambar.

Anda harus menghentikannya dengan Ctrl+ C.

masukkan deskripsi gambar di sini

Stewie Griffin
sumber
3
Penggunaan cerdik pada objek grafis sebagai syarat dalamwhere
Suever
2
Sebuah aturan telah diklarifikasi - Your program must have an equal chance of picking all colors/points each iteration. Apakah program Anda memenuhi ini?
MD XF
5

Bash + coreutils, 59 56 byte

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

\e[48;5;COLORm adalah jalan keluar dari warna latar belakang.

Setiap "pixel" memiliki peluang untuk berada dalam kisaran [0..16777215] setiap waktu.

marcosm
sumber
1
Wow, itu ide yang sangat bagus! +1
MD XF
Anda dapat mendorong 3 byte, jika Anda menggunakan jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki
Saya mencuri ide ini dan memasukkannya ke 45 byte (\ e adalah 1 escape char, dan shuf | xargs membuatnya lebih pendek (tidak perlu untuk -n 1, dan tidak untuk). Codegolf.stackexchange.com/a/158142/7017 Saya dapat menghapusnya jika Anda mau (saya tidak benar-benar yakin apakah saya harus mengusulkan ini sebagai komentar alih-alih mempostingnya. Tujuan saya adalah untuk mendapatkan sedikit poin pada suatu hari dengan hadiah jawaban yang luar biasa untuk tetris yang menakjubkan " dalam permainan kehidupan "tantangan & jawaban! lihat codegolf.stackexchange.com/q/11880/7017
Olivier Dulac
5

Javascript + HTML 118 + 13 (131 byte)

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

  • Ini akan menghasilkan warna RGB yang terdistribusi secara merata. Anda tidak dapat menggunakan warna Hex tanpa padding yang tepat karena angka seperti #7bukan warna yang valid, atau #777dan #777777warna yang sama (2x peluang)
  • Elemen kanvas adalah 300x150 secara default, tapi saya benar-benar menggambar pada kotak 255x255, jadi ada piksel kanvas, jadi area efektifnya adalah 255x150.
  • Hanya bekerja di Google Chrome.
Vitim.us
sumber
2
Pos pertama yang bagus! Selamat datang di situs ini!
MD XF
Saya tidak percaya ini memiliki peluang untuk menampilkan warna dengan saluran yang ditetapkan pada 255, seperti merah, hijau, biru, atau putih. Saya pikir Anda harus mengalikan dengan 256 saja.
kamoroso94
4

Excel VBA, 131 102 85 Bytes

Fungsi jendela langsung VBE anonim yang menggunakan fungsi pembantu (lihat di bawah) untuk menampilkan array sel berwarna acak ke rentang A1:AN40objek lembar aktif.

Catatan: Solusi ini terbatas untuk penginstalan MS Excel 32-Bit (dan karenanya Office secara keseluruhan) karena 8^8tidak dapat dikompilasi pada VBA versi 64-Bit

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

Output Sampel

Warna Sel Secara Acak

Versi sebelumnya

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

Fungsi Penolong

Menghasilkan int acak dalam kisaran [0,255]

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

C #, 369 288 287 byte

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

Disimpan 88 byte berkat @CodyGray.

Program lengkap yang dapat menangani layar dan ukurannya lalu mulai menggambar piksel secara acak. Perhatikan bahwa ini dapat membuat kartu grafis Anda berhenti ketika dijalankan. Juga jika layar atau kontrol memutuskan untuk mengecat kapan saja piksel akan hilang dan harus digambar ulang.

Catatan: Saat menjalankan tetap fokus pada jendela untuk membunuhnya Anda harus Alt + F4 atau tekan tombol tutup dan melakukannya ketika Anda tidak dapat melihat layar agak sulit.

Saya tidak bisa merekam ini berfungsi, dengan ScreenToGif, karena itu terus memaksa pengecatan ulang sehingga piksel akan dihapus. Namun, berikut adalah tangkapan layar yang berjalan setelah sekitar 10-15 detik, lebih lama dan saya pikir saya mungkin menghentikan PC saya! Kesenjangan di sudut kanan atas adalah di mana layar memaksa pengecatan ulang saat saya mengambil tangkapan layar.

Contoh versi lengkap

Versi Lengkap / Terformat:

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

Versi untuk 308 227 226 byte yang hanya mengacu pada wilayah 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);}}}

Contoh output untuk yang ini:

Output contoh kecil


TheLethalCoder
sumber
Graphics.FromHwnd((IntPtr)0)juga akan bekerja, dan jauh lebih pendek dari P / Memohon GetDC. Tentu saja, kode Anda masih seperti Tas , dan membocorkan sumber daya seperti orang gila, itulah sebabnya ia membuat mesin Anda berhenti hanya setelah waktu berjalan yang singkat.
Cody Grey
@CodyGray Oh saya tahu itu bocor, masih harus bekerja dalam spesifikasi tantangan sekalipun. Dan GetDCtidak kembali IntPtr.Zerojadi mengirim itu FromHdctidak akan berfungsi.
TheLethalCoder
1
Baca saran lebih hati-hati. :-) Saya tidak menyarankan Anda menelepon FromHdc, saya menyarankan Anda menelepon FromHwnd. Perhatikan bahwa ketika Anda menelepon GetDCuntuk mendapatkan DC untuk pegangan jendela, Anda meneruskan sebuah pointer NULL (0) sebagai pegangan jendela.
Cody Grey
@CodyGray Ah ya itu berhasil, terima kasih! Mereka dinamai serupa, seharusnya membaca komentar Anda lebih hati-hati ...
TheLethalCoder
3

C # Console, 233 220 189 188 byte

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

masukkan deskripsi gambar di sini

Menggunakan "semua" (windows) 16 warna konsol.

Terima kasih atas "fitur" untuk dapat alias kelas di C # melalui usingarahan.

Edit # 1

  • Menghapus beberapa spasi.

  • Nol yang dihapus dari Random.Next ()

  • Pergi ke namespace system{...}

Edit # 2

  • Ukuran minimum kisi adalah 40x40

  • Satu byte dengan mendeklarasikan Random in for header loop

  • Dihapus publicdari metode Utama

Edit # 3

Ternyata using C=Console;adalah tidak yang terbaik yang ada. using static Consolemirip dengan cara VB.Net untuk kelas "Impor"

Saya menyerah: TheLethalCoder membuat ini terjadi


Kode asli untuk mengadaptasi ukuran jendela pada 207 byte:

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

Gambar asli:

masukkan deskripsi gambar di sini

MrPaulch
sumber
namespace Systemharus menyimpan byte, r.Nextdapat menghapus nol saya percaya, Hapus spasi putih yang tidak relevan,
TheLethalCoder
Juga hanya titling C # baik
TheLethalCoder
Terima kasih! Saya meninggalkan konsol dalam judul karena saya merasa untuk tantangan ini memberikan konteks yang berharga. Saya tidak melihat bagaimana namespace System{}lebih pendek dari using System;. Mau jelaskan?
MrPaulch
1
Saya memiliki ingatan yang kuat tetapi tidak berdasar bahwa publik diperlukan untuk Main. Kenangan tak berdasar adalah yang terbaik!
MrPaulch
1
Terima kasih. Tidak akan menyerah! :) Akan menggunakan apa yang saya pelajari pada tantangan berikutnya!
MrPaulch
3

Memproses, 90 byte

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

masukkan deskripsi gambar di sini

diperluas dan berkomentar:

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 
}

Idealnya saya bisa menggunakan indeks piksel, bukan x, lokasi y, tetapi pixels[]akses Pengolahan membutuhkan loadPixels()pra dan updatePixels()posting, karenanya penggunaan set(). point()akan bekerja juga, tetapi memiliki lebih banyak karakter dan membutuhkan stroke(). Area acak sebenarnya 99x99 untuk menyimpan beberapa byte (bukan 100x100), tetapi itu harus mencakup 40x40 dengan setiap piksel di area tersebut untuk diganti.

Perlin noise () digunakan sebagai ganti random () untuk menjaganya agar lebih pseudo-random dan byte lebih pendek. Nilai tersebut dihitung sekali, tetapi digunakan dua kali: sekali untuk posisi acak, kemudian lagi untuk warna.

Warnanya sebenarnya ARGB(00000000 untuk FFFFFFFF) (bukan RGB) (poin bonus?: D).

George Profenza
sumber
Luar biasa, dan senang melihat Anda di situs ini!
Kevin Workman
Seperti bijaksana! dan terimakasih! :)
George Profenza
+1 set()adalah trik yang sangat rapi dan bisa sangat berguna untuk Tips bermain golf dalam Proses
Kritixi Lithos
ooooooh! Saya tidak tahu tentang itu. Saya akan menambahkannya di sana, terima kasih :)
George Profenza
2

Python, 133 byte

Saya tidak yakin apakah ini cocok dengan spesifikasi, karena itu ada di atas kanvas di area 40x40.

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

Coba online - versi tanpaeval, yang tidak berfungsi di Trinket

mbomb007
sumber
Catatan yakin mengapa, mungkin dist kura-kura anda berbeda dengan saya, tapi kanvas default saya adalah 300 dengan 400 sementara default colormodeadalah 1.0tidak 255.
Jonathan Allan
Trinket.io cukup unik.
mbomb007
Ya - Saya baru saja mencoba mengubah colormodedan tidak akan memilikinya: /
Jonathan Allan
Mengapa dot(1,R(0,255),R(0,255),R(0,255))tidak berhasil juga? dotdimaksudkan untuk menerima (width,*color). Ini bukan Python: p
Jonathan Allan
Karena Trinket.io menggunakan skulpt.js, yang merupakan implementasi Python yang tidak lengkap.
mbomb007
2

JavaScript menggunakan Canvas 340 316 324 bytes

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

versi lengkap

Tim Penner
sumber
2
Selamat datang di situs ini! :)
DJMcMayhem
Apakah ini menghormati aturan, "Program Anda harus terus menampilkan piksel acak hingga berhenti secara manual (tidak dapat dihentikan dengan sendirinya)."?
Octopus
Ini tampaknya hanya menghasilkan banyak piksel acak ketika dijalankan. Itu tidak terus menampilkan piksel satu per satu sampai berhenti.
MD XF
Sepertinya saya melewatkan aturan itu. Saya salah mengira tujuannya adalah untuk membuat gambar, bukan animasi. Saya akan memperbarui jawaban saya ketika saya kembali ke komputer saya.
Tim Penner
1
@MDXF sudah dianimasikan sekarang
Tim Penner
2

Memproses, 112 byte

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

Saya tidak dapat menjamin bahwa setiap piksel diganti setiap 3 menit, tetapi ketika melihatnya tampaknya akan melakukannya. Setidaknya kemungkinan hilang satu piksel, dari total 1600, memperbarui satu acak 30x per detik, total 5400 pembaruan per 3 menit, membuatnya tidak mungkin bahwa seseorang akan terjawab.

Tidak Disatukan:

Program ini sangat mudah. Buka jendela pada 40x40 piksel, dan setiap frame (default 30 per detik) mendapatkan warna acak, dan menggambar titik pada koordinat acak antara 0 dan parameter. 40 untuk koordinat piksel, 255 untuk warna.

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

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

masukkan deskripsi gambar di sini

Cody
sumber
Dapatkah Anda menghapus size(40,40);dan perubahan pointke point(random(99),random(99));? (Atau 100 jika 99 tidak bekerja)
Kritixi Lithos
@ KritixiLithos dalam Memproses, sizefungsi HARUS menjadi baris kode pertama dalam fungsi pengaturan (alasan mengapa rumit), jadi saya tidak bisa menyiasatinya. Saya dapat mengubah semua kejadian dari 40 menjadi 99, saya tidak melakukannya karena tidak menghemat ruang. Saya terutama menggunakan ukuran minimum untuk meningkatkan peluang bahwa setiap piksel akan di-refresh dalam periode 3 menit
Cody
Heh, itulah yang pertama kali kupikirkan juga, sampai seseorang memberitahuku tentang hal itu dan entah bagaimana berhasil, seperti yang bisa kau lihat di sini dalam pengajuan milikku.
Kritixi Lithos
1
Menghapus seluruh setup()fungsi pada versi terbaru dari Memproses pada mesin saya berfungsi dengan baik tanpa kesalahan.
Kritixi Lithos
Saya kira versi Pemrosesan saya sudah cukup lama, dan saya tidak menggunakannya cukup untuk mengganggu upgrade sekarang.
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 />";

Diperluas

$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

Contoh untuk Output tanpa meta tag dan dalam versi yang lebih besar

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

C ++ pada Windows, 125 byte

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

Baris baru diperlukan dan termasuk dalam hitungan byte.

Loops selamanya, secara acak memilih posisi antara 0 dan 255 (inklusif) untuk nilai baris dan kolom, menetapkan nilai R, G, B acak antara 0-255 (inklusif)

Tas
sumber
1
Saya menyadari Anda bermain golf ini, tetapi orang yang membocorkan konteks perangkat setiap kali melalui loop benar-benar membuat indra spidey saya kesemutan!
Cody Grey
Simpan 15 byte dengan membuatnya C di Windows daripada C ++ di Windows, karena kompiler C akan membiarkan Anda mengabaikan #includes. (Dan ya, ada kompiler non-Visual Studio C untuk Windows.)
MD XF
2

Python 3.6 + Tkinter, 281 byte

from tkinter import*
from random import*
from threading import*
a=randrange
x=40
d={"width":x,"height":x}
w=Tk()
c=Canvas(w,**d)
c.pack()
i=PhotoImage(**d)
c.create_image((20,20),image=i)
def r():
 while 1:i.put(f"{a(0,0xffffff):0>6f}",(a(0,x),a(0,x)))
Thread(r).start()
mainloop()
Martmists
sumber
Seperti tkinterperpustakaan standar, Anda tidak perlu memasukkannya di header
caird coinheringaahing
Saya mendapatkan kesalahan yang sama - Windows 10, Python 3.6.0 Saya dapat menebak mengapa init melihat empat parameter yang dilewati - metode ini dilewatkan sebagai parameter "mandiri" secara implisit. Tapi saya tidak tahu mengapa itu menghasilkan kesalahan, karena dokumentasi menunjukkan konstruktor Canvas menerima tiga parameter (master, x, y) seperti yang ditunjukkan dalam kode.
CCB60
Harus diperbaiki sekarang.
Martmists
1
juga @Ilikemydog Tkinter tidak selalu di stdlib. Di windows itu opsional ketika menginstal, dan saya tidak berpikir partisi lengkung saya memiliki Tkinter diinstal juga. Mungkin juga termasuk itu.
Martmists
ada salah ketik - "img" bukan "i". Dan tetap saja itu tidak berhasil, kali ini saya dapatkanc.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 menggunakan SVG, 129 + 10 = 139 byte

Versi SVG, sangat terinspirasi oleh pendekatan @ 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>

Karena Stack Snippet suka memecahkan skrip dengan mengurai <rect>tag, inilah CodePen .

Darrylyeo
sumber
2

6502 Majelis, 92 byte

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

Keluaran:

keluaran

Penjelasan:

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
sumber
1
Apa platform yoiur target 6502 Anda di sini? BBC Micro? Apel ][? Commodore VIC-20 dll ...?
Shaun Bebbers
Apakah panjang label minimal harus tiga karakter?
Jonathan Frech
2

LOGO, 71 byte

Satu-satunya bahasa yang saya tahu, tidak esoterik / dirancang khusus untuk codegolfing, dan memiliki foreverfungsi. Ada ide di mappihaknya?

pu forever[setxy random 100 random 100 setpixel map[random 256][1 1 1]]
pengguna202729
sumber
2

shortC , 66 56 byte

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

-10 byte terima kasih kepada 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

Tidak ada tautan TIO karena Anda jelas tidak dapat mencetak ke jenis terminal yang diperlukan secara online ini.

MD XF
sumber
2

Perl (on * nix), 69 byte

The \x1bs adalah karakter escape literal.

Bergantung pada sttyperintah dan bekerja dengan baik pada OS X.

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

Mirip dengan pendekatan lain, tapi saya suka kombinasi semua params menjadi satu panggilan untuk printfjadi saya pikir akan berbagi. Membunuh terminal saya.

masukkan deskripsi gambar di sini


Dua kali lebih banyak piksel, 83 byte

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

Pendekatan ini menggunakan blok unicode dan warna foreground dan latar belakang acak yang memberikan piksel lebih persegi. Membunuh terminal saya juga, tetapi terlihat lebih keren.

masukkan deskripsi gambar di sini

Dom Hastings
sumber
Jangan lupa Anda bisa menggunakan byte escape literal, ASCII 0x1B (27) \e. Dan di StackExchange ini dapat diwakili oleh .
MD XF
@ MDXF Ya ... Saya perlu mengujinya sebagai skrip, karena itu tidak berfungsi -e! Saya juga perlu menaikkan jumlah byte yang satu dengan unicode. Ups! Terima kasih atas pengingatnya!
Dom Hastings
2

Bash, 104 byte

The \es adalah karakter escape literal.

Ini adalah cukup banyak terjemahan dari pengajuan Perl saya, tetapi menggunakan sintaks gaya bom bash fork! Tidak sepintar entri bash lain yang menulis langsung ke layar aku takut.

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

Lebih banyak piksel, 130 byte

Sama seperti jawaban Perl saya, ini menggunakan karakter unicode untuk latar depan dan warna latar belakang setiap piksel juga.

:(){ printf "\e[%i;%iH\e[48;5;%i;38;5;%im▄" $((RANDOM%`tput lines`)) $((RANDOM%`tput cols`)) $((RANDOM%256)) $((RANDOM%256));:;};:
Dom Hastings
sumber
Tidak buruk. Namun, saya masih tidak mengerti "\e[48;5;%im". Mengapa 48 dan 5 diperlukan?
MD XF
Itu mengakses 256 warna penuh, bukan hanya palet 16 warna standar. Di terminal yang mendukungnya, dimungkinkan untuk menggunakan \e[48;2;RRR;GGG;BBBmtetapi sangat sedikit emulator terminal mendukungnya ... :(
Dom Hastings
Ibu kode yang suci .... Saya tidak tahu itu mungkin. Hidupku bohong. Terima kasih banyak: P
MD XF
@MDXF ^^ dan juga 38;5menunjukkan latar depan dan 48;5latar belakang. misc.flogisoft.com/bash/tip_colors_and_formatting
Dom Hastings
1
@ MDXF Jangan khawatir! Senang untuk membantu! Sayang aku merindukan ini ketika masih baru, tapi jawaban Minecraft itu ... tidak nyata!
Dom Hastings
2

bahasa mesin x86 (mode real) untuk IBM PC, 20 19 byte

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

Ini membutuhkan prosesor dengan rdrandinstruksi dan adaptor VGA (nyata atau ditiru). Di atas dapat disalin ke blok boot atau file MS-DOS * .COM.

Untuk mencoba ini, kompilasi yang berikut dan simpan output ke file seperti floppy.imgdan boot gambar pada mesin 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 );
}
plafon
sumber
2

Super Chip (48) ?, 12 byte

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

Saya tidak yakin dengan nama pastinya, tetapi saya harus menggunakan ini sebagai ganti Chip-8 yang normal karena keterbatasan piksel 40x40.

12Me21
sumber
Tautan ke bahasa ini (sangat menarik)?
MD XF
Anda dapat menggunakan emulator Octo: johnearnest.github.io/Octo
12Me21
2

QBIC , 34 byte

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

Sayangnya, QBIC tidak menetapkan SCREENmode secara default, sehingga memakan beberapa byte. PSETadalah perintah ilegal dalam konteks grafis default QBIC.

Penjelasan

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)

Output sampel

@Anonim menemukan kesalahan dalam rnd()fungsi QBIC . Memperbaiki yang memberikan output di bawah ini. Terima kasih!

masukkan deskripsi gambar di sini

steenbergh
sumber
Sebagaimana harus jelas dari tangkapan layar, solusi Anda tidak memenuhi kondisi keacakan. Diberikan koordinat, tidak semua warna memiliki kemungkinan yang sama dan diberi warna, tidak semua koordinat memiliki kemungkinan yang sama; mereka sangat berkorelasi dan itu membuatnya agak. Masalahnya adalah generator nomor acak yang Anda gunakan: 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 FUNCTIONNomor acak Anda hanya berupa hash dari waktu saat ini.
Anonim
@ Anonim Sudah diperbaiki sekarang, terima kasih!
steenbergh
2

6502 Majelis, 582 byte

Wah, ini menyenangkan. Apakah kurang lebih sama dengan solusi BASIC Applesoft saya.

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
sumber
Apakah ini versi tanpa jawaban dari jawaban 6502 majelis Anda yang lain ? :-)
Cody Grey
@CodyGray Tidak, itu melakukan hal yang sedikit berbeda. Ini lebih seperti jawaban BASIC Applesoft saya (menggunakan jalan acak), dan jawaban perakitan 6502 lainnya lebih seperti semua yang lain.
MD XF
Saya tidak setuju dengan jumlah byte: ini jauh lebih pendek dari 583 byte perakitan?
Olivier Dulac
@OlivierDulac tio.run/##Zc/… ?
MD XF