Hiển thị pixel màu ngẫu nhiên


47

Tôi luôn thích màn hình đầy các pixel màu ngẫu nhiên. Chúng rất thú vị để xem và các chương trình thu hút chúng rất thú vị để xem.

Các thách thức

Làm đầy màn hình của bạn, hoặc một cửa sổ đồ họa, với các pixel màu.

Những quy định

  • Chương trình của bạn phải có cơ hội thậm chí chọn tất cả các màu (nghĩa là trong phạm vi #000000đến #FFFFFF) hoặc tất cả các màu có thể được hiển thị trên hệ thống của bạn.
  • Chương trình của bạn phải tiếp tục hiển thị các pixel ngẫu nhiên cho đến khi dừng thủ công (nó không thể tự kết thúc).
  • Pixel có thể là bất kỳ kích thước nào, miễn là đầu ra của bạn có ít nhất 40x40 "pixel".
  • Chương trình của bạn phải chạy với tốc độ sao cho có thể thay thế mọi pixel trên màn hình / cửa sổ ít nhất một lần sau khi chạy trong ba phút.
  • Chương trình của bạn phải chọn màu sắc và điểm thực sự ngẫu nhiên để thay thế, tức là ngẫu nhiên với tất cả các điểm / màu có khả năng như nhau. Nó không thể chỉ nhìn ngẫu nhiên. Nó phải sử dụng pRNG hoặc tốt hơn và đầu ra không thể giống nhau mỗi lần.
  • Chương trình của bạn phải có cơ hội như nhau để chọn tất cả các màu mỗi lần lặp .
  • Chương trình của bạn phải thay thế một pixel cùng một lúc.
  • Chương trình của bạn không thể sử dụng internet cũng như hệ thống tập tin của bạn ( /dev/random/dev/urandomngoại trừ).

Thí dụ

Đầu ra của bạn có thể trông như thế này nếu dừng tại một thời điểm ngẫu nhiên:

Người chiến thắng

Câu trả lời ngắn nhất trong mỗi ngôn ngữ chiến thắng. Chúc vui vẻ!


Bằng cách "thực sự ngẫu nhiên", tôi cho rằng giả danh là OK (như Math.random () hoặc tương tự)
OldBunny2800

@ OldBunny2800It must use a pRNG or better
TheLethalCoder

Vì chương trình không thể sử dụng internet, tôi sẽ chỉ để lại nhận xét này: babelia.l Libraryofbabel.info/slIDIA.html
KSmarts

1
Vì vậy, "giới hạn 3 phút" cũng áp dụng cho thời gian thiết lập? Hay chỉ một khi "chương trình" bắt đầu? Hỏi vì tôi có một giải pháp đá đỏ Minecraft, nó chạy rất nhanh một khi nó đang diễn ra, nhưng phải mất một lúc để thiết lập ban đầu (nó phải "đặt" từng "pixel" vào lưới 40x40) trước khi nó có thể bắt đầu thay đổi màu sắc.
BradC

5
Thực sự ngẫu nhiên theo định nghĩa loại trừ giả -random, nhưng không xác định phân phối. Tôi giả sử bạn có nghĩa là một PRNG thống nhất , trong đó tất cả các sự kiện đều có thể trang bị và độc lập với nhau.
Dennis

Câu trả lời:


85

Các khối lệnh Minecraft 1.12 Redstone, 4.355 2.872 byte

Ảnh chụp màn hình Minecraft với giá treo áo giáp và bản đồ

(Kích thước được xác định bởi kích thước tệp khối cấu trúc đã lưu.)

Dưới đây là tổng quan đầy đủ về YouTube , nhưng tôi sẽ cố gắng phác thảo mã bên dưới.

Thường trình cài đặt:

2 hàng khối lệnh để thiết lập

Điều này thiết lập lưới 40x40 của giá treo áo giáp Minecraft. Giáp giáp là cần thiết vì Minecraft không có cách nào để thay thế các biến thành tọa độ thế giới . Vì vậy, cách giải quyết là đề cập đến vị trí của các thực thể đứng áo giáp này.

(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

Giá treo áo giáp này về cơ bản là "con trỏ" của chúng tôi để đặt tất cả các giá treo áo giáp mà chúng tôi sẽ cần. Khối đá đỏ ở bước cuối cùng "tăng sức mạnh" cho các khối gần đó (bao gồm các khối lệnh của chúng tôi), do đó, khởi động vòng lặp tiếp theo:

(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

Tại thời điểm này, lưới của chúng tôi đã hoàn tất:

Hoàn thành lưới đứng giáp

Chọn màu ngẫu nhiên

Bộ chọn màu và pixel

Các bộ lặp màu tím ở trung tâm của hình ảnh này chọn một màu ngẫu nhiên thông qua lệnh sau:

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

Rằng "@r []" là nước sốt ma thuật, nó chọn một thực thể ngẫu nhiên trong thế giới phù hợp với các điều kiện nhất định . Trong trường hợp này, nó tìm thấy một bộ giáp đứng trong bán kính 9 khối và chúng tôi đã thiết lập 16 giá treo áo giáp, mỗi bộ cho một màu len. Dưới màu đã chọn, nó đặt một khối đá đỏ (cung cấp năng lượng cho hai khối lệnh ở hai bên).

Bộ chọn pixel ngẫu nhiên

Đặt khối đá đỏ dưới màu len đã chọn sẽ kích hoạt thêm hai khối lệnh:

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

Dòng đầu tiên này sử dụng lệnh ma thuật @r tương tự của chúng tôi để chọn bất kỳ giá treo áo giáp nào trên toàn bản đồ (không giới hạn bán kính, bao gồm lưới 40x40) và đặt một sợi len có màu được chọn lên trên đầu của nó. X xác định màu và nằm trong khoảng từ 0 đến 15. Lệnh thứ hai loại bỏ khối đá đỏ để nó sẵn sàng hoạt động trở lại.

Tôi có 5 khối lặp lại màu tím và đá đỏ hoạt động trong "tích tắc" 20 lần một giây, vì vậy tôi đang đặt 100 pixel mỗi giây (trừ một số lớp phủ màu). Tôi đã hẹn giờ và tôi thường lấy toàn bộ lưới trong khoảng 3 phút.

Điều này thật thú vị, tôi sẽ cố gắng tìm kiếm những thử thách khác cũng có thể hoạt động trong Minecraft. Rất cảm ơn lorgon111 cho loạt bài hướng dẫn YouTube Command Block của mình .

EDIT: Đã thực hiện một số giảm nghiêm trọng về kích thước của cấu trúc đã lưu, hiện ở mức 2.872 byte đã lưu :

khối lệnh gần hơn với khối void có thể nhìn thấy

  1. Những thứ đã được điều khiển trong một chút (ở cả 3 chiều) để tôi có thể giảm kích thước tổng thể của khu vực đã lưu.
  2. Thay đổi các len màu khác nhau thành đá, dù sao chúng chỉ là trang trí.
  3. Tháo đèn phát sáng.
  4. Thay đổi tất cả các khối không khí thành các khối trống (hình vuông màu đỏ).

Được thử nghiệm bằng cách kéo cấu trúc đã lưu vào một thế giới mới, mọi thứ vẫn hoạt động như thiết kế.

EDIT 2 : Liên kết Dropbox chỉ đọc đến tệp cấu trúc NBT

Đi qua là trong video YouTube của tôi , nhưng đây là các bước:

  1. Trong Minecraft 1.12, tạo một thế giới siêu sáng tạo mới bằng cách sử dụng cài đặt sẵn "Redstone Ready". Làm cho nó chế độ hòa bình.
  2. Khi thế giới tồn tại, sao chép tệp NBT vào một \structuresthư mục mới mà bạn tạo theo lưu thế giới hiện tại.
  3. Quay lại trò chơi, làm /give @p structure_block/tp @p -12, 56, -22nhảy đến đúng chỗ để bắt đầu.
  4. Đào một cái lỗ và đặt khối cấu trúc ở -12, 55, -22.
  5. Nhấp chuột phải vào khối cấu trúc, nhấp vào nút chế độ để chuyển nó thành "Tải".
  6. Nhập "Random_pixels", bật "bao gồm các thực thể" BẬT và nhấp vào "Tải"
  7. Nếu nó tìm thấy tệp cấu trúc, nó sẽ xem trước phác thảo. Nhấp chuột phải lần nữa và nhấp vào "tải" để đưa cấu trúc vào thế giới.
  8. Nhấn nút để chạy thói quen thiết lập.
  9. Khi nó hoàn thành, lật công tắc để chạy ngẫu nhiên len.

6
Holy crap ... bạn thực sự đã làm nó. Và đó là câu trả lời đầu tiên của bạn, wow! Chào mừng đến với trang web, và đây là một cách tuyệt vời để bắt đầu!
MD XF

2
@MDXF Ngoài +10 của bạn, tôi đang tặng +60
NoOneIsHere

2
@NoOneIsĐược rồi: P Nhưng nếu bạn có câu trả lời, nó sẽ phải là +100 ...
MD XF

2
Tôi sẽ thử chơi golf này nếu bạn cung cấp tệp thế giới (Tôi sẽ không đăng câu trả lời khác mà chỉ cung cấp cho bạn tệp)
Christopher

2
Chà, shortest answer in each language winsvà đây là câu trả lời ngắn nhất trong Minecraft: P có thêm +15
MD XF

20

sh + ffmpeg, 52 byte

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

Có ffmpeg được tính là một esolang? :CƯỜI MỞ MIỆNG

Đáng buồn là pix_fmt là bắt buộc, vì ffmpeg mặc định là yuv420p. Điều đó không thành công yêu cầu "phải có khả năng bằng nhau của mọi màu pixel có thể". Thuận tiện, ciflà một phím tắt cho kích thước video khá lớn sử dụng ít không gian hơn "40x40".

Không có gì đáng ngạc nhiên, tối ưu hóa gif này với gifsicle hoàn toàn không làm gì cả. Đó là 4MiB.


3
Điều này có " chỉ thay thế một pixel cùng một lúc " không?
Scott Milner

1
Về mặt kỹ thuật? ffmpeg sẽ đợi cho toàn bộ khung hình được lấp đầy bằng pixel trước khi hiển thị nó. Tôi đọc sai "chỉ phải thay thế 1 pixel tại một thời điểm" là "có thể". : /
Una

1
Và tất nhiên gifsicle không thể lưu bất kỳ byte nào trong gif: không có cách nào để nén dữ liệu tùy ý và các pixel ngẫu nhiên được sắp xếp một cách hỗn loạn, có nghĩa là cách mã hóa hiệu quả nhất mỗi lần một pixel. Numberphile (tôi nghĩ vậy?) Đã có một video về "thông tin là gì" và đã gây ra tiếng ồn ngẫu nhiên để cố tình gây rối với quá trình nén của YouTube. VSauce cũng có một video về nén video tại một thời điểm, nhưng tôi quên mất nó được gọi là gì.
Draco18

2
@ Draco18s, tôi biết, lưu ý về việc nó không thể bị ép buộc là tạo niềm vui cho bản thân vì đã cố gắng chạy gificle trên nó bằng mọi cách.
Una

2
Gifsicle là công cụ sai. Precomp giảm xuống từ 4 MB xuống còn 3 MB :) Đó là vì thuật toán GIF mở rộng tính ngẫu nhiên thay vì nén nó và Precomp đảo ngược điều này.
schnaader

17

C trên POSIX, 98 96 95 92 byte

-3 cảm ơn

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

Điều này chọn giữa 16 màu (xám đậm, đỏ, xanh lá cây, xanh dương, cam, lục lam, tím, xám nhạt, đen, hồng, xanh nhạt, vàng, lục lam nhạt, đỏ tươi, trắng) và in chúng trực tiếp đến thiết bị đầu cuối.

Lưu ý rằng nếu GPU của bạn quá chậm, điều này có vẻ như nó đang cập nhật toàn bộ màn hình cùng một lúc. Nó thực sự đi từng pixel theo pixel, nhưng C thì nhanh.

màu sắc

Giải pháp thay thế làm cho màu sắc khác biệt hơn:

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

Bằng chứng là nó đi từng pixel (ảnh chụp màn hình từ chương trình thay thế):

3d !!!

Wow, trông gần như 3 chiều ...


Nó thiếu một ;để biên dịch chính xác nhưng dường như hoạt động tốt hơn thế! B-)
cleblanc

@cleblanc ơi, bạn nói đúng! Tôi quên nói thêm rằng sau khi tôi chuyển từ whiletới for.
MD XF

2
Bạn có thể có thể cạo một vài byte bằng cách #define r rand()sau đó sử dụngr%40, r%40, r%2, r%8
TAS

Bằng cách không sử dụng màu 32 bit, điều này không đáp ứng yêu cầu.
dâu

4
@wberry "Chương trình của bạn phải có cơ hội thậm chí chọn tất cả các màu (ví dụ: trong phạm vi # 000000 đến #FFFFFF) hoặc tất cả các màu có thể được hiển thị trên hệ thống của bạn. " Đây là tất cả các màu mà thiết bị đầu cuối POSIX có thể hiển thị.
MD XF

13

Mã byte + HTML 162 + 32 (194) 124 + 13 (137)

Cảm ơn Luke và những người bình luận khác đã tiết kiệm cho tôi rất nhiều byte.

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


2
Thực tế <canvas id=c>là đủ vì tôi nghĩ kích thước mặc định cho tầng canvashầm là 300 x 150 pxnhư vậy và vượt quá "kích thước khung nhìn" của bạn 99 x 99 px. Dù sao, giải pháp tốt đẹp.
insertusernamehere

1
@insertusernamehere, vâng, cảm ơn
Bạch tuộc

1
Hiện tại không hoạt động trong Firefox. Nó hoạt động trong Chrome
ETHproductions

1
OK, OK, tôi đã hiểu rồi. Lưu 2 byte bằng cách thực hiện b = c.getContext 2d. (Không chắc thế nào để định dạng này, nhưng nếu "2d" là một mẫu theo nghĩa đen, nó không cần các dấu ngoặc đơn.) (Xóa đề xuất trước đây của tôi.)
Rick Hitchcock

1
Cùng với đề xuất của Rick, hãy sử dụng một withtuyên bố để loại bỏ tất cả các trường hợp 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

Hãy thử nó tại MATL Online . Tôi đã thêm một nửa giây tạm dừng ( .5Y.) cho phiên bản này.

nhập mô tả hình ảnh ở đây

Giải trình

40       % Push the number literal 40 to the stack
t        % Duplicate
I        % Push the number 3 to the stack
3$l      % Create a 40 x 40 x 3 matrix of 1's (40 x 40 RGB image)
`        % Do...while loop
  3l1$r  % Generate 3 random numbers (RGB)
  ,      % Do twice loop
    40Yr % Generate two integers between 1 and 40. These will be the
  ]      % row and column of the pixel to replace
  4$Y(   % Replace the pixel with the random RGB value
  t      % Make a copy of the RGB image
  3YG    % Display the image
  T      % Push a literal TRUE to create an infinite loop

1
Tôi thích nó! ----
MD XF

4
Vì tò mò, làm thế nào bạn tăng cường đầu ra mã của bạn?
Bạch tuộc

2
@Octopus Mình mới dùng LICEcap . Một trong những ngày này, tôi sẽ kết hợp đầu ra GIF hoạt hình vào trình biên dịch trực tuyến.
Suever

Xem làm thế nào câu trả lời này sử dụng ít lệnh / phương pháp hơn để đạt được kết quả tương tự, bạn không thể chuyển đổi nó thành MATL để có thể đạt được điểm thấp hơn?
MD XF

Tôi thấy một pixel đã được thay thế được thay thế một lần nữa;).
Bạch tuộc ma thuật Urn

7

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

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

Do những hạn chế về phần cứng, điều này cuối cùng sẽ gặp sự cố, vì mỗi khi chương trình được lồng trong một chương trình trong TI-BASIC , 15 KB RAM được phân bổ để "giữ dấu trang" trong chương trình mẹ. Điều này sẽ chạy tốt trên một máy tính "lý thuyết" với RAM vô hạn, nhưng nếu chúng ta muốn nó chạy vô thời hạn trên một máy tính thực, chúng ta có thể chỉ cần bọc nó trong một While 1vòng lặp để có thêm 2 byte:

:While 1
:...
:End

Máy tính gia đình TI-83 có màn hình màu (TI 84 + CE và CSE) hỗ trợ 15 màu. Họ có mã màu 10thông qua 24. Điều này xoay vòng qua tất cả các pixel trong một 5!hình vuông 120 x 120 ( ) và gán cho mỗi màu một màu ngẫu nhiên.

Kết quả:

nhập mô tả hình ảnh ở đây


Yay, một câu trả lời CƠ BẢN khác! Chỉ để chắc chắn, điều này chạy mãi mãi?
MD XF

@MDXF Bây giờ thì có! ;-). Bỏ lỡ phần đó lần đầu tiên. +5 byte.
Scott Milner

Bạn có thể làm cho các vòng lặp bắt đầu từ 0 nếu bạn muốn bao phủ 100x100 pixel.
kamoroso94

@ kamoroso94 À, đúng rồi. Tôi cũng có thể làm 5!nếu tôi muốn 120 pixel.
Scott Milner

2
@MDXF TI-BASIC được token dựa . Tức For(là 1 byte, Pxl-On(là 1 byte, randInt(là 2 byte, v.v.
Scott Milner

5

MATLAB, 56 byte

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

Đầu ra trông giống như hình ảnh dưới đây. Một "pixel" thay đổi tại một thời điểm và chỉ một trong số các màu RGB thay đổi.

Tại sao? Các màu trong MATLAB được biểu diễn dưới dạng ma trận 3D, một lớp cho R, G và B. Đoạn mã trên chỉ thay đổi một trong các lớp trên mỗi lần lặp. Tất cả các pixel và tất cả các lớp có thể được thay đổi, vì vậy nếu bạn chờ một chút, tất cả các màu đều có thể như nhau ở tất cả các vị trí.

Thêm vào pause(t)bên trong vòng lặp để tạm dừng tgiây giữa mỗi hình ảnh.

Bạn phải dừng nó với Ctrl+ C.

nhập mô tả hình ảnh ở đây


3
Khéo léo sử dụng tay cầm cho đối tượng đồ họa làm điều kiện trongwhere
Suever

2
Một quy tắc đã được làm rõ - Your program must have an equal chance of picking all colors/points each iteration. Chương trình của bạn có đáp ứng điều này không?
MD XF

5

Bash + lõi, 59 56 byte

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

\e[48;5;COLORm là lối thoát bí mật cho màu nền.

Mỗi "pixel" có cơ hội nằm trong phạm vi [0..16777215] mỗi lần.


1
Wow, đó là một ý tưởng thực sự tốt! +1
MD XF

Bạn có thể loại bỏ 3 byte nếu bạn sử dụng jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki

Tôi đã đánh cắp ý tưởng này và đánh nó xuống 45 byte (\ e là 1 char char và shuf | xargs làm cho nó ngắn hơn (không cần -n 1, và không cho). Codegolf.stackexchange.com/a/158142/7017 . Tôi có thể xóa nó nếu bạn muốn (Tôi không thực sự chắc chắn liệu tôi có nên đề xuất đây là một bình luận thay vì đăng nó không. trong trò chơi cuộc sống "thử thách & trả lời! xem 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>

  • Điều này sẽ tạo ra các màu RGB phân bố đồng đều. Bạn không thể sử dụng Hex màu sắc mà không cần đệm đúng như số như #7không phải là một màu hợp lệ, hoặc #777#777777là cùng một màu sắc (2x tỷ lệ cược)
  • Phần tử canvas là 300x150 theo mặc định, nhưng thực tế tôi đang vẽ trên một hình vuông 255x255, do đó, có các pixel canvas bị tắt, vì vậy diện tích hiệu quả là 255x150.
  • Chỉ hoạt động trên Google Chrome.

2
Bài đăng đầu tiên tuyệt vời! Chào mừng đến với trang web!
MD XF

Tôi không tin rằng điều này có bất kỳ cơ hội nào để hiển thị bất kỳ màu nào với kênh được đặt ở 255, chẳng hạn như đỏ, xanh lá cây, xanh dương hoặc trắng. Tôi nghĩ rằng bạn phải nhân với 256 thay thế.
kamoroso94

4

VBA Excel, 131 102 85 byte

Hàm cửa sổ ngay lập tức VBE ẩn danh sử dụng hàm trợ giúp (xem bên dưới) để xuất một mảng các ô có màu ngẫu nhiên đến phạm vi A1:AN40của đối tượng activesheet.

Lưu ý: Giải pháp này được giới hạn ở các bản cài đặt MS Excel 32 bit (và do đó là toàn bộ Office) vì 8^8sẽ không biên dịch trên các phiên bản VBA 64 bit

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

Đầu ra mẫu

Màu tế bào ngẫu nhiên

Phiên bản trước

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

Chức năng trợ giúp

Xuất ra một int ngẫu nhiên trong phạm vi [0,255]

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

3

C #, 369 288 287 byte

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

Đã lưu 88 byte nhờ @CodyGray.

Một chương trình đầy đủ có tay cầm cho màn hình và kích thước của nó và sau đó bắt đầu vẽ ngẫu nhiên các pixel trên nó. Lưu ý rằng điều này có thể khiến card đồ họa của bạn bị dừng khi chạy. Ngoài ra nếu màn hình hoặc bất kỳ điều khiển nào quyết định sơn lại bất cứ lúc nào các pixel sẽ bị mất và phải được vẽ lại.

Lưu ý: Khi chạy, hãy tập trung vào cửa sổ để giết nó, bạn phải bấm Alt + F4 hoặc nhấn nút đóng và làm như vậy khi bạn không thể thấy màn hình hơi khó.

Tôi không thể ghi lại hoạt động này, với ScreenToGif, vì điều đó cứ buộc phải sơn lại để các pixel sẽ bị xóa. Tuy nhiên, đây là một ảnh chụp màn hình của nó chạy sau khoảng 10 - 15 giây, lâu hơn nữa và tôi nghĩ rằng tôi có thể khiến PC của tôi dừng hoạt động! Khoảng trống ở góc trên cùng bên phải là nơi màn hình buộc phải sơn lại giống như khi tôi chụp ảnh màn hình.

Ví dụ phiên bản đầy đủ

Phiên bản đầy đủ / được định dạng:

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

Một phiên bản cho 308 227 226 byte chỉ vẽ trên vùng 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);}}}

Ví dụ đầu ra cho cái này:

Đầu ra ví dụ nhỏ



Graphics.FromHwnd((IntPtr)0)cũng sẽ hoạt động và ngắn hơn nhiều so với P / Gọi GetDC. Tất nhiên, mã của bạn vẫn giống như của TAS và rò rỉ tài nguyên như điên, đó là lý do tại sao nó khiến máy của bạn bị dừng lại chỉ sau một thời gian ngắn chạy.
Cody Grey

@CodyGray Oh tôi biết nó bị rò rỉ, vẫn nên hoạt động trong các thông số kỹ thuật thách thức mặc dù. Và GetDCkhông trở lại IntPtr.Zerođể gửi nó FromHdcsẽ không hoạt động.
TheLethalCoder

1
Đọc gợi ý cẩn thận hơn. :-) Tôi không gợi ý rằng bạn gọi FromHdc, tôi đề nghị bạn gọi FromHwnd. Lưu ý rằng khi bạn gọi GetDCđể lấy DC cho tay cầm cửa sổ, bạn chuyển vào một con trỏ NULL (0) làm tay cầm cửa sổ.
Cody Grey

@CodyGray À đúng rồi, cảm ơn! Chúng được đặt tên tương tự, nên đọc bình luận của bạn cẩn thận hơn ...
TheLethalCoder

3

Bảng điều khiển C #, 233 220 189 188 byte

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

nhập mô tả hình ảnh ở đây

Sử dụng "tất cả" (windows) 16 màu giao diện điều khiển.

Cảm ơn "tính năng" để có thể đặt bí danh các lớp trong C # thông qua usingchỉ thị.

Chỉnh sửa số 1

  • Đã xóa một số khoảng trống.

  • Các số không bị xóa khỏi Random.Next ()

  • Đã đi đến namespace system{...}

Chỉnh sửa # 2

  • Kích thước tối thiểu của lưới là 40x40

  • Một byte bằng cách khai báo Random in for loop loop

  • Đã xóa publickhỏi phương thức chính

Chỉnh sửa số 3

Hóa ra using C=Console;không tốt nhất có. using static Consolerất giống với cách VB.Net để "Nhập" các lớp

Tôi bỏ cuộc: TheLethalCoder đã khiến điều này xảy ra


Mã gốc để điều chỉnh kích thước cửa sổ ở mức 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(" ");}}}}

Ảnh gốc:

nhập mô tả hình ảnh ở đây


namespace Systemnên lưu byte, r.Nextcó thể xóa số 0 tôi tin, Xóa khoảng trắng không liên quan,
TheLethalCoder

Ngoài ra, chỉ cần sử dụng C # là ổn
TheLethalCoder

Cảm ơn! Tôi rời khỏi Console trong tiêu đề vì tôi cảm thấy cho thử thách này, nó cung cấp bối cảnh có giá trị. Tôi không thấy làm thế nào namespace System{}ngắn hơn using System;. Quan tâm để giải thích?
MrPaulch

1
Tôi đã có bộ nhớ mạnh mẽ nhưng vô căn cứ này mà công chúng là không cần thiết cho Main. Ký ức vô căn cứ là tốt nhất!
MrPaulch

1
Cảm ơn. Sẽ không từ bỏ! :) Sẽ sử dụng những gì tôi học được trong thử thách tiếp theo!
MrPaulch

3

Đang xử lý, 90 byte

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

nhập mô tả hình ảnh ở đây

mở rộng và bình luận:

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 
}

Lý tưởng nhất là tôi có thể sử dụng chỉ mục pixel thay vì vị trí x, y, nhưng pixels[]truy cập của Xử lý yêu cầu loadPixels()trước và updatePixels()sau, do đó sử dụng set(). point()cũng sẽ làm việc, nhưng có nhiều ký tự và yêu cầu stroke(). Vùng ngẫu nhiên thực sự là 99x99 để lưu một vài byte (thay vì 100x100), nhưng vùng đó sẽ bao phủ 40x40 với mỗi pixel trong một khu vực như vậy sẽ được thay thế.

Tiếng ồn Perlin () được sử dụng thay vì ngẫu nhiên () để giữ cho nó giả ngẫu nhiên hơn và ngắn hơn một byte. Giá trị được tính một lần, nhưng được sử dụng hai lần: một lần cho vị trí ngẫu nhiên, sau đó lại cho màu.

Màu sắc thực sự là ARGB(00000000 đến FFFFFFFF) (không phải RGB) (điểm thưởng ?: D).


Tuyệt vời, và tốt để nhìn thấy bạn trên trang web này!
Kevin Workman

Thích-khôn! và cảm ơn! :)
George Profenza

+1 set()là một mẹo rất gọn gàng và có thể rất hữu ích cho Mẹo chơi gôn trong chế biến
Kritixi Lithos

ooooooh! Tôi không biết về điều đó. Tôi sẽ thêm nó ở đó, cảm ơn :)
George Profenza 21/07/17

2

Python, 133 byte

Tôi không chắc chắn nếu điều này phù hợp với thông số kỹ thuật, bởi vì nó nằm trên một khung vẽ trong khu vực 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+')'))

Dùng thử trực tuyến - phiên bản không cóeval, không hoạt động trong Trinket


Lưu ý khá chắc chắn tại sao, có thể dist rùa của bạn khác với tôi, nhưng canvas mặc định của tôi là 300 x 400 trong khi mặc định colormodethì 1.0không 255.
Jonathan Allan

Trinket.io khá độc đáo.
mbomb007

Vâng - Tôi vừa thử thay đổi colormodevà nó sẽ không có gì cả: /
Jonathan Allan

Tại sao cũng dot(1,R(0,255),R(0,255),R(0,255))không hoạt động? dotcó nghĩa là chấp nhận (width,*color). Đó không phải là Python: p
Jonathan Allan

Bởi vì Trinket.io sử dụng skulpt.js, đây là một triển khai Python chưa hoàn chỉnh.
mbomb007

2

JavaScript sử dụng Canvas 340 316 324 byte

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

phiên bản đầy đủ


2
Chào mừng đến với trang web! :)
DJMcMayhem

Điều này có tôn trọng quy tắc, "Chương trình của bạn phải tiếp tục hiển thị các pixel ngẫu nhiên cho đến khi dừng thủ công (nó không thể tự chấm dứt)."?
Bạch tuộc

Điều này dường như chỉ đơn giản là tạo ra một loạt các pixel ngẫu nhiên khi chạy. Nó không tiếp tục hiển thị từng pixel một cho đến khi dừng lại.
MD XF

Có vẻ như tôi đã bỏ lỡ quy tắc đó. Tôi đã lầm tưởng mục tiêu là tạo ra một hình ảnh chứ không phải hoạt hình. Tôi sẽ cập nhật câu trả lời của tôi khi tôi trở lại máy tính của mình.
Tim Penner

1
@MDXF bây giờ nó hoạt hình
Tim Penner

2

Đang xử lý, 112 byte

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

Tôi không thể đảm bảo rằng mỗi pixel được thay thế cứ sau 3 phút, nhưng nhìn vào nó dường như đang làm như vậy. Ít nhất là tỷ lệ cược của nó thiếu một pixel, trong tổng số 1600, cập nhật ngẫu nhiên 30x mỗi giây, tổng cộng 5400 cập nhật mỗi 3 phút, khiến người ta không thể bỏ qua.

Ung dung:

Chương trình này thực sự đơn giản. Mở một cửa sổ ở 40x40 pixel và mỗi khung hình (mặc định 30 mỗi giây) có một màu ngẫu nhiên và vẽ một điểm tại tọa độ ngẫu nhiên giữa 0 và tham số. 40 cho tọa độ pixel, 255 cho màu sắc.

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

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

nhập mô tả hình ảnh ở đây


Bạn có thể loại bỏ size(40,40);và thay đổi pointđể point(random(99),random(99));? (hoặc 100 thay vào đó nếu 99 không hoạt động)
Kritixi Lithos

@KritixiLithos trong Xử lý, sizechức năng PHẢI là dòng mã đầu tiên trong chức năng thiết lập (lý do tại sao phức tạp), vì vậy tôi không thể khắc phục điều đó. Tôi có thể thay đổi tất cả các lần xuất hiện từ 40 đến 99, tôi chỉ không làm thế vì nó không tiết kiệm cho tôi bất kỳ khoảng trống nào. Tôi chủ yếu đi với kích thước tối thiểu để tăng tỷ lệ cược rằng mọi pixel sẽ được làm mới trong khoảng thời gian 3 phút
Cody

Heh, đó là những gì tôi lần đầu tiên nghĩ là tốt, cho đến khi ai đó nói với tôi về điều đó và nó bằng cách nào đó làm việc ra, như bạn thấy ở đây trong một trình của tôi.
Kritixi Lithos

1
Xóa toàn bộ setup()chức năng trên phiên bản Xử lý mới nhất trên máy của tôi hoạt động tốt mà không có lỗi.
Kritixi Lithos

Tôi đoán phiên bản Xử lý của tôi khá cũ và tôi không sử dụng nó đủ để bận tâm nâng cấp ngay bây giờ.
Cody

2

HTML + SVG + PHP, 245 byte

<?$u=$_GET;$u[rand()%40][rand()%40]=sprintf("%06x",rand()%16777216);echo'<meta http-equiv="refresh" content="0.1; url=?'.http_build_query($u).'" /><svg>';foreach($u as$x=>$a)foreach($a as$y=>$c)echo"<rect x=$x y=$y width=1 height=1 fill=#$c />";

Mở rộng

$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

Ví dụ cho Đầu ra không có thẻ meta và trong phiên bản lớn hơn

<svg viewBox="0 0 40 40" width=400 height=400><rect x=11 y=39 width=1 height=1 fill=#1b372b /><rect x=11 y=7 width=1 height=1 fill=#2c55a7 /><rect x=11 y=31 width=1 height=1 fill=#97ef86 /><rect x=11 y=26 width=1 height=1 fill=#94aa0a /><rect x=11 y=4 width=1 height=1 fill=#f8bf89 /><rect x=11 y=6 width=1 height=1 fill=#266342 /><rect x=11 y=29 width=1 height=1 fill=#369d80 /><rect x=11 y=20 width=1 height=1 fill=#ccfab8 /><rect x=11 y=12 width=1 height=1 fill=#ac0273 /><rect x=13 y=25 width=1 height=1 fill=#0d95e9 /><rect x=13 y=0 width=1 height=1 fill=#d2a4cb /><rect x=13 y=37 width=1 height=1 fill=#503abe /><rect x=13 y=35 width=1 height=1 fill=#4e60ae /><rect x=13 y=30 width=1 height=1 fill=#3cdd5e /><rect x=13 y=12 width=1 height=1 fill=#60464c /><rect x=13 y=17 width=1 height=1 fill=#a3b234 /><rect x=13 y=3 width=1 height=1 fill=#48e937 /><rect x=13 y=20 width=1 height=1 fill=#58bb78 /><rect x=13 y=4 width=1 height=1 fill=#5c61e6 /><rect x=13 y=10 width=1 height=1 fill=#758613 /><rect x=13 y=21 width=1 height=1 fill=#9b3a09 /><rect x=13 y=28 width=1 height=1 fill=#6c6b3b /><rect x=13 y=32 width=1 height=1 fill=#9b3a0f /><rect x=13 y=14 width=1 height=1 fill=#0c9bcc /><rect x=38 y=34 width=1 height=1 fill=#a3a65d /><rect x=38 y=23 width=1 height=1 fill=#c4441a /><rect x=38 y=25 width=1 height=1 fill=#cec692 /><rect x=38 y=39 width=1 height=1 fill=#535401 /><rect x=38 y=30 width=1 height=1 fill=#21371a /><rect x=38 y=26 width=1 height=1 fill=#7560a4 /><rect x=38 y=33 width=1 height=1 fill=#f31f34 /><rect x=38 y=9 width=1 height=1 fill=#3fce3f /><rect x=38 y=13 width=1 height=1 fill=#78cab8 /><rect x=3 y=39 width=1 height=1 fill=#c6cf06 /><rect x=3 y=26 width=1 height=1 fill=#d7fc94 /><rect x=3 y=31 width=1 height=1 fill=#048791 /><rect x=3 y=19 width=1 height=1 fill=#140371 /><rect x=3 y=12 width=1 height=1 fill=#6e7e7a /><rect x=3 y=21 width=1 height=1 fill=#f917da /><rect x=3 y=36 width=1 height=1 fill=#00d5d7 /><rect x=3 y=24 width=1 height=1 fill=#00f119 /><rect x=34 y=15 width=1 height=1 fill=#e39bd7 /><rect x=34 y=1 width=1 height=1 fill=#c1c1b8 /><rect x=34 y=36 width=1 height=1 fill=#0d15d5 /><rect x=34 y=29 width=1 height=1 fill=#d15f57 /><rect x=34 y=11 width=1 height=1 fill=#6f73b9 /><rect x=34 y=33 width=1 height=1 fill=#93ce78 /><rect x=34 y=16 width=1 height=1 fill=#ddd7bd /><rect x=34 y=14 width=1 height=1 fill=#73caa6 /><rect x=34 y=28 width=1 height=1 fill=#972d89 /><rect x=34 y=31 width=1 height=1 fill=#27e401 /><rect x=34 y=10 width=1 height=1 fill=#559d6d /><rect x=34 y=22 width=1 height=1 fill=#170bc2 /><rect x=30 y=13 width=1 height=1 fill=#a9ac0d /><rect x=30 y=4 width=1 height=1 fill=#3d9530 /><rect x=30 y=10 width=1 height=1 fill=#67b434 /><rect x=30 y=15 width=1 height=1 fill=#54930a /><rect x=30 y=11 width=1 height=1 fill=#8ce15b /><rect x=30 y=7 width=1 height=1 fill=#ddf53d /><rect x=30 y=32 width=1 height=1 fill=#04de14 /><rect x=30 y=19 width=1 height=1 fill=#f52098 /><rect x=30 y=22 width=1 height=1 fill=#dc7d70 /><rect x=30 y=0 width=1 height=1 fill=#d458c3 /><rect x=30 y=30 width=1 height=1 fill=#1f8895 /><rect x=30 y=36 width=1 height=1 fill=#b3d891 /><rect x=30 y=29 width=1 height=1 fill=#0f9810 /><rect x=30 y=5 width=1 height=1 fill=#b4ce36 /><rect x=30 y=33 width=1 height=1 fill=#a837ba /><rect x=30 y=23 width=1 height=1 fill=#02beb3 /><rect x=30 y=24 width=1 height=1 fill=#2a75da /><rect x=37 y=2 width=1 height=1 fill=#7b3aa3 /><rect x=37 y=26 width=1 height=1 fill=#0e9fb2 /><rect x=37 y=32 width=1 height=1 fill=#afb3a1 /><rect x=37 y=24 width=1 height=1 fill=#b421d6 /><rect x=37 y=16 width=1 height=1 fill=#39e872 /><rect x=37 y=38 width=1 height=1 fill=#552970 /><rect x=37 y=11 width=1 height=1 fill=#2a0b2a /><rect x=37 y=18 width=1 height=1 fill=#1fe310 /><rect x=37 y=36 width=1 height=1 fill=#a80fe3 /><rect x=37 y=6 width=1 height=1 fill=#141100 /><rect x=26 y=13 width=1 height=1 fill=#5d521d /><rect x=26 y=11 width=1 height=1 fill=#d7227e /><rect x=26 y=1 width=1 height=1 fill=#8dae67 /><rect x=26 y=19 width=1 height=1 fill=#acfd2c /><rect x=26 y=2 width=1 height=1 fill=#307dd5 /><rect x=26 y=35 width=1 height=1 fill=#76b559 /><rect x=26 y=4 width=1 height=1 fill=#e6a551 /><rect x=12 y=34 width=1 height=1 fill=#266a0a /><rect x=12 y=16 width=1 height=1 fill=#8bcf44 /><rect x=12 y=13 width=1 height=1 fill=#00caac /><rect x=12 y=3 width=1 height=1 fill=#bb7aa5 /><rect x=12 y=37 width=1 height=1 fill=#3b0559 /><rect x=12 y=27 width=1 height=1 fill=#e82087 /><rect x=12 y=8 width=1 height=1 fill=#b65157 /><rect x=19 y=20 width=1 height=1 fill=#556336 /><rect x=19 y=33 width=1 height=1 fill=#81bca0 /><rect x=19 y=34 width=1 height=1 fill=#65478a /><rect x=19 y=35 width=1 height=1 fill=#256956 /><rect x=19 y=10 width=1 height=1 fill=#c49f9c /><rect x=19 y=12 width=1 height=1 fill=#99bd3d /><rect x=19 y=13 width=1 height=1 fill=#dae45d /><rect x=19 y=36 width=1 height=1 fill=#de28e2 /><rect x=19 y=30 width=1 height=1 fill=#f26ff1 /><rect x=4 y=23 width=1 height=1 fill=#3a31dc /><rect x=4 y=4 width=1 height=1 fill=#d480e7 /><rect x=4 y=24 width=1 height=1 fill=#a304c6 /><rect x=4 y=28 width=1 height=1 fill=#775aeb /><rect x=4 y=16 width=1 height=1 fill=#d942d1 /><rect x=4 y=8 width=1 height=1 fill=#ad6c7e /><rect x=4 y=3 width=1 height=1 fill=#8ef507 /><rect x=4 y=9 width=1 height=1 fill=#c59549 /><rect x=4 y=7 width=1 height=1 fill=#f757fb /><rect x=4 y=35 width=1 height=1 fill=#2db5de /><rect x=20 y=22 width=1 height=1 fill=#340f7b /><rect x=20 y=2 width=1 height=1 fill=#ae6b7c /><rect x=20 y=20 width=1 height=1 fill=#120232 /><rect x=20 y=1 width=1 height=1 fill=#bb534c /><rect x=20 y=11 width=1 height=1 fill=#a736a1 /><rect x=20 y=38 width=1 height=1 fill=#63646f /><rect x=20 y=8 width=1 height=1 fill=#8e2095 /><rect x=20 y=27 width=1 height=1 fill=#2ae2c6 /><rect x=32 y=20 width=1 height=1 fill=#56dc7a /><rect x=32 y=34 width=1 height=1 fill=#ec16ca /><rect x=32 y=19 width=1 height=1 fill=#e2ce80 /><rect x=32 y=21 width=1 height=1 fill=#5c7638 /><rect x=32 y=0 width=1 height=1 fill=#35647c /><rect x=32 y=33 width=1 height=1 fill=#9e174a /><rect x=32 y=5 width=1 height=1 fill=#8217b4 /><rect x=32 y=30 width=1 height=1 fill=#b3e018 /><rect x=32 y=36 width=1 height=1 fill=#90ea3d /><rect x=22 y=29 width=1 height=1 fill=#9d975f /><rect x=22 y=12 width=1 height=1 fill=#b50680 /><rect x=22 y=31 width=1 height=1 fill=#9cd270 /><rect x=22 y=16 width=1 height=1 fill=#05a7f7 /><rect x=22 y=20 width=1 height=1 fill=#f6c4d5 /><rect x=22 y=21 width=1 height=1 fill=#9b0dd8 /><rect x=22 y=22 width=1 height=1 fill=#bc1c9e /><rect x=22 y=26 width=1 height=1 fill=#22b4c3 /><rect x=22 y=36 width=1 height=1 fill=#f54b7b /><rect x=22 y=19 width=1 height=1 fill=#7d3be4 /><rect x=22 y=6 width=1 height=1 fill=#ff9c6f /><rect x=22 y=34 width=1 height=1 fill=#cce01c /><rect x=22 y=30 width=1 height=1 fill=#7c4fd0 /><rect x=22 y=33 width=1 height=1 fill=#c2ef4e /><rect x=25 y=3 width=1 height=1 fill=#35c580 /><rect x=25 y=31 width=1 height=1 fill=#172b52 /><rect x=25 y=39 width=1 height=1 fill=#5e724d /><rect x=25 y=10 width=1 height=1 fill=#f50c4a /><rect x=25 y=4 width=1 height=1 fill=#012808 /><rect x=25 y=33 width=1 height=1 fill=#3a0dc3 /><rect x=25 y=12 width=1 height=1 fill=#2f254a /><rect x=25 y=30 width=1 height=1 fill=#19ff2c /><rect x=25 y=38 width=1 height=1 fill=#4a3112 /><rect x=0 y=1 width=1 height=1 fill=#886f4f /><rect x=0 y=35 width=1 height=1 fill=#0bb010 /><rect x=0 y=0 width=1 height=1 fill=#a7f77e /><rect x=0 y=27 width=1 height=1 fill=#1b38da /><rect x=0 y=39 width=1 height=1 fill=#3788ae /><rect x=0 y=13 width=1 height=1 fill=#af5149 /><rect x=0 y=32 width=1 height=1 fill=#dcb445 /><rect x=0 y=20 width=1 height=1 fill=#36a218 /><rect x=0 y=2 width=1 height=1 fill=#aacbb8 /><rect x=0 y=14 width=1 height=1 fill=#fb17e3 /><rect x=17 y=8 width=1 height=1 fill=#cb2be8 /><rect x=17 y=11 width=1 height=1 fill=#dd80b1 /><rect x=17 y=35 width=1 height=1 fill=#a269aa /><rect x=17 y=6 width=1 height=1 fill=#9faf64 /><rect x=17 y=9 width=1 height=1 fill=#762811 /><rect x=17 y=23 width=1 height=1 fill=#94fa57 /><rect x=17 y=26 width=1 height=1 fill=#9bacc3 /><rect x=17 y=1 width=1 height=1 fill=#93c849 /><rect x=17 y=4 width=1 height=1 fill=#4a9fd4 /><rect x=17 y=22 width=1 height=1 fill=#1fc5f3 /><rect x=17 y=37 width=1 height=1 fill=#76d6a3 /><rect x=17 y=5 width=1 height=1 fill=#a13389 /><rect x=9 y=38 width=1 height=1 fill=#064ba3 /><rect x=9 y=23 width=1 height=1 fill=#cc83ad /><rect x=9 y=25 width=1 height=1 fill=#1de7e8 /><rect x=9 y=3 width=1 height=1 fill=#834afe /><rect x=9 y=9 width=1 height=1 fill=#15a0fb /><rect x=9 y=27 width=1 height=1 fill=#4d54dc /><rect x=9 y=21 width=1 height=1 fill=#2bf614 /><rect x=9 y=28 width=1 height=1 fill=#8080b7 /><rect x=9 y=39 width=1 height=1 fill=#d76a3b /><rect x=9 y=33 width=1 height=1 fill=#f8da2c /><rect x=9 y=26 width=1 height=1 fill=#5884ae /><rect x=7 y=39 width=1 height=1 fill=#a0264b /><rect x=7 y=15 width=1 height=1 fill=#bd87c7 /><rect x=7 y=18 width=1 height=1 fill=#4d4878 /><rect x=7 y=35 width=1 height=1 fill=#1dcc8c /><rect x=7 y=38 width=1 height=1 fill=#76497f /><rect x=7 y=1 width=1 height=1 fill=#87b1ae /><rect x=35 y=24 width=1 height=1 fill=#5d947e /><rect x=35 y=17 width=1 height=1 fill=#eabbdc /><rect x=35 y=19 width=1 height=1 fill=#01c75b /><rect x=35 y=36 width=1 height=1 fill=#06b0dd /><rect x=35 y=21 width=1 height=1 fill=#0fbba8 /><rect x=35 y=1 width=1 height=1 fill=#480be1 /><rect x=35 y=11 width=1 height=1 fill=#3f8ef6 /><rect x=35 y=30 width=1 height=1 fill=#7691d0 /><rect x=35 y=13 width=1 height=1 fill=#c9a286 /><rect x=27 y=12 width=1 height=1 fill=#08083e /><rect x=27 y=25 width=1 height=1 fill=#95d3b4 /><rect x=27 y=30 width=1 height=1 fill=#584c1b /><rect x=27 y=9 width=1 height=1 fill=#c01082 /><rect x=27 y=3 width=1 height=1 fill=#3bf653 /><rect x=27 y=33 width=1 height=1 fill=#c06f23 /><rect x=27 y=38 width=1 height=1 fill=#184c3e /><rect x=27 y=0 width=1 height=1 fill=#725d4c /><rect x=27 y=36 width=1 height=1 fill=#e7a71b /><rect x=27 y=16 width=1 height=1 fill=#43c039 /><rect x=23 y=30 width=1 height=1 fill=#947161 /><rect x=23 y=37 width=1 height=1 fill=#e8a8e5 /><rect x=23 y=12 width=1 height=1 fill=#bd9976 /><rect x=23 y=6 width=1 height=1 fill=#15085d /><rect x=23 y=31 width=1 height=1 fill=#102c95 /><rect x=23 y=24 width=1 height=1 fill=#173bc2 /><rect x=23 y=2 width=1 height=1 fill=#bac13c /><rect x=23 y=36 width=1 height=1 fill=#eb5a88 /><rect x=23 y=22 width=1 height=1 fill=#5ddc38 /><rect x=28 y=19 width=1 height=1 fill=#1ea833 /><rect x=28 y=38 width=1 height=1 fill=#dc6f6b /><rect x=28 y=2 width=1 height=1 fill=#d9fd8a /><rect x=28 y=15 width=1 height=1 fill=#eb213e /><rect x=28 y=22 width=1 height=1 fill=#b23956 /><rect x=28 y=16 width=1 height=1 fill=#875b0a /><rect x=28 y=14 width=1 height=1 fill=#ba6172 /><rect x=28 y=18 width=1 height=1 fill=#b9779a /><rect x=39 y=26 width=1 height=1 fill=#df5e52 /><rect x=39 y=4 width=1 height=1 fill=#aabb4f /><rect x=39 y=2 width=1 height=1 fill=#7ce85c /><rect x=39 y=16 width=1 height=1 fill=#1f70a8 /><rect x=39 y=15 width=1 height=1 fill=#55e398 /><rect x=39 y=29 width=1 height=1 fill=#955213 /><rect x=39 y=33 width=1 height=1 fill=#976c99 /><rect x=39 y=34 width=1 height=1 fill=#a23109 /><rect x=39 y=25 width=1 height=1 fill=#36aeae /><rect x=39 y=9 width=1 height=1 fill=#28a600 /><rect x=39 y=17 width=1 height=1 fill=#771e5b /><rect x=39 y=30 width=1 height=1 fill=#9980b1 /><rect x=31 y=14 width=1 height=1 fill=#8ffea6 /><rect x=31 y=13 width=1 height=1 fill=#d35c5c /><rect x=31 y=39 width=1 height=1 fill=#407beb /><rect x=31 y=10 width=1 height=1 fill=#45ba53 /><rect x=31 y=2 width=1 height=1 fill=#842997 /><rect x=31 y=20 width=1 height=1 fill=#ca47b0 /><rect x=31 y=37 width=1 height=1 fill=#ed098e /><rect x=31 y=5 width=1 height=1 fill=#041b67 /><rect x=31 y=22 width=1 height=1 fill=#4aaaa6 /><rect x=31 y=31 width=1 height=1 fill=#40ccbd /><rect x=31 y=27 width=1 height=1 fill=#6325ca /><rect x=33 y=18 width=1 height=1 fill=#cfbbbc /><rect x=33 y=34 width=1 height=1 fill=#b3f6b8 /><rect x=33 y=26 width=1 height=1 fill=#ef3b82 /><rect x=33 y=16 width=1 height=1 fill=#c7df5b /><rect x=33 y=39 width=1 height=1 fill=#5ad5ba /><rect x=33 y=12 width=1 height=1 fill=#9361fd /><rect x=33 y=35 width=1 height=1 fill=#1f4795 /><rect x=33 y=3 width=1 height=1 fill=#86a80c /><rect x=33 y=17 width=1 height=1 fill=#582008 /><rect x=33 y=9 width=1 height=1 fill=#686941 /><rect x=33 y=36 width=1 height=1 fill=#76ada4 /><rect x=33 y=21 width=1 height=1 fill=#511f50 /><rect x=33 y=14 width=1 height=1 fill=#64aaf7 /><rect x=8 y=28 width=1 height=1 fill=#3de9b7 /><rect x=8 y=24 width=1 height=1 fill=#5c8451 /><rect x=8 y=31 width=1 height=1 fill=#e75b30 /><rect x=8 y=38 width=1 height=1 fill=#4ee9d0 /><rect x=8 y=29 width=1 height=1 fill=#544381 /><rect x=8 y=16 width=1 height=1 fill=#12332f /><rect x=8 y=0 width=1 height=1 fill=#9e775f /><rect x=8 y=34 width=1 height=1 fill=#02224e /><rect x=8 y=1 width=1 height=1 fill=#b299f4 /><rect x=8 y=10 width=1 height=1 fill=#b2bd80 /><rect x=8 y=20 width=1 height=1 fill=#054876 /><rect x=8 y=27 width=1 height=1 fill=#ab273a /><rect x=2 y=30 width=1 height=1 fill=#1bd5f4 /><rect x=2 y=10 width=1 height=1 fill=#b00e99 /><rect x=2 y=9 width=1 height=1 fill=#bf18b0 /><rect x=2 y=8 width=1 height=1 fill=#9aa92b /><rect x=2 y=16 width=1 height=1 fill=#aa7e3d /><rect x=2 y=1 width=1 height=1 fill=#c383ea /><rect x=2 y=24 width=1 height=1 fill=#63ab54 /><rect x=2 y=19 width=1 height=1 fill=#086cac /><rect x=2 y=0 width=1 height=1 fill=#4510cc /><rect x=2 y=6 width=1 height=1 fill=#7b529c /><rect x=6 y=27 width=1 height=1 fill=#fcc946 /><rect x=6 y=20 width=1 height=1 fill=#0a7324 /><rect x=6 y=26 width=1 height=1 fill=#d93cc2 /><rect x=6 y=14 width=1 height=1 fill=#c8d410 /><rect x=6 y=33 width=1 height=1 fill=#0e5b22 /><rect x=6 y=1 width=1 height=1 fill=#e2accf /><rect x=6 y=2 width=1 height=1 fill=#06064a /><rect x=6 y=39 width=1 height=1 fill=#fae1de /><rect x=6 y=30 width=1 height=1 fill=#db50d3 /><rect x=6 y=15 width=1 height=1 fill=#59b1c5 /><rect x=6 y=16 width=1 height=1 fill=#a0178a /><rect x=16 y=29 width=1 height=1 fill=#1eb287 /><rect x=16 y=31 width=1 height=1 fill=#5fa9b0 /><rect x=16 y=36 width=1 height=1 fill=#918835 /><rect x=16 y=2 width=1 height=1 fill=#d46404 /><rect x=16 y=1 width=1 height=1 fill=#31808e /><rect x=16 y=15 width=1 height=1 fill=#22d652 /><rect x=10 y=25 width=1 height=1 fill=#94f771 /><rect x=10 y=14 width=1 height=1 fill=#e3a90a /><rect x=10 y=4 width=1 height=1 fill=#7fbdb3 /><rect x=10 y=32 width=1 height=1 fill=#d71f68 /><rect x=10 y=10 width=1 height=1 fill=#f3dcd7 /><rect x=10 y=27 width=1 height=1 fill=#cadd64 /><rect x=10 y=31 width=1 height=1 fill=#3c38c0 /><rect x=10 y=34 width=1 height=1 fill=#542641 /><rect x=10 y=19 width=1 height=1 fill=#e17ef2 /><rect x=10 y=24 width=1 height=1 fill=#676729 /><rect x=10 y=11 width=1 height=1 fill=#619f8e /><rect x=10 y=0 width=1 height=1 fill=#1576eb /><rect x=10 y=16 width=1 height=1 fill=#52854c /><rect x=36 y=2 width=1 height=1 fill=#fe133c /><rect x=36 y=31 width=1 height=1 fill=#b67ea7 /><rect x=36 y=7 width=1 height=1 fill=#92babc /><rect x=36 y=16 width=1 height=1 fill=#fc24a0 /><rect x=36 y=26 width=1 height=1 fill=#a80f75 /><rect x=36 y=15 width=1 height=1 fill=#5ddb90 /><rect x=18 y=13 width=1 height=1 fill=#64180c /><rect x=18 y=9 width=1 height=1 fill=#d67c04 /><rect x=18 y=18 width=1 height=1 fill=#3e0988 /><rect x=18 y=4 width=1 height=1 fill=#072b32 /><rect x=18 y=34 width=1 height=1 fill=#723cab /><rect x=18 y=14 width=1 height=1 fill=#560f7d /><rect x=18 y=29 width=1 height=1 fill=#4a7dd0 /><rect x=18 y=30 width=1 height=1 fill=#db0cfc /><rect x=18 y=16 width=1 height=1 fill=#f79bbf /><rect x=14 y=18 width=1 height=1 fill=#e45cec /><rect x=14 y=4 width=1 height=1 fill=#05b63c /><rect x=14 y=38 width=1 height=1 fill=#ee0251 /><rect x=14 y=14 width=1 height=1 fill=#12fb9f /><rect x=14 y=17 width=1 height=1 fill=#f8fbc9 /><rect x=14 y=22 width=1 height=1 fill=#58e112 /><rect x=14 y=1 width=1 height=1 fill=#a5bc5c /><rect x=14 y=10 width=1 height=1 fill=#3c6002 /><rect x=14 y=5 width=1 height=1 fill=#556f7a /><rect x=14 y=36 width=1 height=1 fill=#ccfaa9 /><rect x=14 y=15 width=1 height=1 fill=#2a8597 /><rect x=1 y=28 width=1 height=1 fill=#899272 /><rect x=1 y=29 width=1 height=1 fill=#be4da2 /><rect x=1 y=6 width=1 height=1 fill=#cbe1a5 /><rect x=1 y=1 width=1 height=1 fill=#8aebd4 /><rect x=1 y=31 width=1 height=1 fill=#547b9e /><rect x=1 y=10 width=1 height=1 fill=#ba7996 /><rect x=1 y=34 width=1 height=1 fill=#e29661 /><rect x=1 y=0 width=1 height=1 fill=#899d3f /><rect x=1 y=4 width=1 height=1 fill=#6993f0 /><rect x=1 y=13 width=1 height=1 fill=#119a7c /><rect x=1 y=15 width=1 height=1 fill=#e7c61c /><rect x=1 y=17 width=1 height=1 fill=#6e8770 /><rect x=1 y=36 width=1 height=1 fill=#cdda71 /><rect x=5 y=8 width=1 height=1 fill=#318f52 /><rect x=5 y=34 width=1 height=1 fill=#763499 /><rect x=5 y=37 width=1 height=1 fill=#5d0d72 /><rect x=5 y=0 width=1 height=1 fill=#97c9e7 /><rect x=5 y=12 width=1 height=1 fill=#babcca /><rect x=5 y=20 width=1 height=1 fill=#37d5cb /><rect x=5 y=31 width=1 height=1 fill=#642296 /><rect x=5 y=24 width=1 height=1 fill=#a6688c /><rect x=5 y=1 width=1 height=1 fill=#697956 /><rect x=29 y=32 width=1 height=1 fill=#b53b61 /><rect x=29 y=7 width=1 height=1 fill=#d131a3 /><rect x=29 y=18 width=1 height=1 fill=#0e082e /><rect x=29 y=17 width=1 height=1 fill=#8ca3dd /><rect x=29 y=11 width=1 height=1 fill=#376e46 /><rect x=29 y=20 width=1 height=1 fill=#11e2cf /><rect x=29 y=37 width=1 height=1 fill=#24b8de /><rect x=24 y=10 width=1 height=1 fill=#a906da /><rect x=24 y=36 width=1 height=1 fill=#ae0516 /><rect x=24 y=8 width=1 height=1 fill=#e0b9b1 /><rect x=24 y=27 width=1 height=1 fill=#29b27b /><rect x=24 y=33 width=1 height=1 fill=#78ea3e /><rect x=24 y=7 width=1 height=1 fill=#e5147e /><rect x=24 y=11 width=1 height=1 fill=#ce7084 /><rect x=24 y=23 width=1 height=1 fill=#78f645 /><rect x=24 y=25 width=1 height=1 fill=#a01f02 /><rect x=24 y=4 width=1 height=1 fill=#e4340c /><rect x=24 y=16 width=1 height=1 fill=#9b69d7 /><rect x=21 y=31 width=1 height=1 fill=#58ca7d /><rect x=21 y=39 width=1 height=1 fill=#037cb5 /><rect x=21 y=36 width=1 height=1 fill=#097454 /><rect x=21 y=28 width=1 height=1 fill=#71d744 /><rect x=21 y=38 width=1 height=1 fill=#10457c /><rect x=15 y=2 width=1 height=1 fill=#f4bf09 /><rect x=15 y=7 width=1 height=1 fill=#90357d /><rect x=15 y=27 width=1 height=1 fill=#6079ba /><rect x=15 y=5 width=1 height=1 fill=#cff723 /><rect x=15 y=17 width=1 height=1 fill=#54a6db />


2

C ++ trên 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));}

Các dòng mới cần thiết và được bao gồm trong số byte.

Vòng lặp mãi mãi, chọn ngẫu nhiên một vị trí trong khoảng từ 0 đến 255 (đã bao gồm) cho các giá trị hàng và cột, gán các giá trị R, G, B ngẫu nhiên trong khoảng 0-255 (đã bao gồm)


1
Tôi nhận ra rằng bạn đang chơi golf này, nhưng người đàn ông bị rò rỉ bối cảnh thiết bị mỗi lần đi qua vòng lặp thực sự khiến tôi cảm thấy khó chịu!
Cody Grey

Lưu 15 byte bằng cách tạo C trên Windows thay vì C ++ trên Windows, vì trình biên dịch C sẽ cho phép bạn rời khỏi #includes. (Và vâng, có các trình biên dịch không phải Visual Studio C cho 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()

tkintermột thư viện chuẩn, bạn không cần đưa nó vào tiêu đề
caird coinheringaahing

Tôi nhận được cùng một lỗi - Windows 10, Python 3.6.0 Tôi có thể đoán tại sao init lại nhìn thấy bốn tham số được truyền - phương thức này đang được thông qua một tham số "tự". Nhưng tôi không biết tại sao điều đó lại gây ra lỗi, vì tài liệu cho thấy hàm tạo Canvas chấp nhận ba tham số (chính, x, y) như được hiển thị trong mã.
CCB60

Nên sửa ngay.
Martmists

1
còn @Ilikemydog Tkinter không phải lúc nào cũng ở stdlib. Trên cửa sổ, tùy chọn khi cài đặt và tôi không nghĩ phân vùng vòm của mình đã cài đặt Tkinter. Cũng có thể bao gồm nó.
Martmists

có lỗi đánh máy - "img" thay vì "i". Và nó vẫn không hoạt động, lần này tôi nhận đượcc.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 bằng SVG, 129 + 10 = 139 byte

Phiên bản SVG, lấy cảm hứng rất nhiều từ cách tiếp cận của @ 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>

Vì Stack Snippet thích phá vỡ tập lệnh bằng cách phân tích cú pháp <rect>thẻ, đây là CodePen .


2

6502 hội, 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

Đầu ra:

đầu ra

Giải trình:

loop: lda $fe       ; accumulator = random
      sta $00       ; store accumulator
      lda $fe       ; accumulator = random
      and #$3       ; accumulator &= 3
      clc           ; clear carry
      adc #$2       ; accumulator += 2
      sta $01       ; store accumulator
      lda $fe       ; accumulator = random
      ldy #$0       ; register Y = 0
      sta ($00),y   ; store register Y
      jmp loop      ; loop

1
Nền tảng 6502 của yoiur ở đây là gì? BBC Micro? Táo ][? Hàng hóa VIC-20 v.v ...?
Shaun Bebbers

Tên nhãn phải dài ít nhất ba ký tự?
Jonathan Frech

2

LOGO, 71 byte

Ngôn ngữ duy nhất mà tôi biết, không phải là bí truyền / được thiết kế đặc biệt để mã hóa và có foreverchức năng. Bất kỳ ý tưởng về mapmột phần?

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

2

shortC , 66 56 byte

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

-10 byte nhờ Tiến sĩ 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

Không có liên kết TIO vì rõ ràng bạn không thể in ra loại thiết bị đầu cuối này yêu cầu trực tuyến.


2

Perl (trên * nix), 69 byte

Các \x1bs là nhân vật thoát theo nghĩa đen.

Dựa vào sttylệnh và hoạt động tốt trên OS X.

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

Tương tự như các cách tiếp cận khác, nhưng tôi thích sự kết hợp của tất cả các thông số vào một cuộc gọi để printftôi nghĩ rằng mình sẽ chia sẻ. Giết chết thiết bị đầu cuối của tôi.

nhập mô tả hình ảnh ở đây


Hai lần nhiều pixel, 83 byte

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

Cách tiếp cận này sử dụng một khối unicode và màu nền trước và sau ngẫu nhiên tạo ra một pixel vuông hơn. Giết thiết bị đầu cuối của tôi quá, nhưng trông mát mẻ hơn.

nhập mô tả hình ảnh ở đây


Đừng quên bạn có thể sử dụng byte thoát theo nghĩa đen, ASCII 0x1B (27) thay vì \e. Và trên StackExchange điều này có thể được đại diện bởi .
MD XF

@MDXF Vâng ... Tôi cần kiểm tra nó như một kịch bản, bởi vì nó không hoạt động thông qua -e! Tôi cũng cần tăng số byte của một với unicode. Úi! Cảm ơn đã nhắc nhở!
Dom Hastings

2

Bash, 104 byte

Các \es là nhân vật thoát theo nghĩa đen.

Đây là những bản dịch khá nhiều về bài nộp Perl của tôi, nhưng sử dụng cú pháp kiểu bash fork! Không thông minh như các mục bash khác viết trực tiếp lên màn hình tôi sợ.

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

Nhiều pixel hơn, 130 byte

Giống như câu trả lời Perl của tôi, điều này sử dụng một ký tự unicode cho tiền cảnh và tô màu nền của từng pixel.

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

Không tệ. Tuy nhiên, tôi vẫn không hiểu "\e[48;5;%im". Tại sao 48 và 5 cần thiết?
MD XF

Truy cập đầy đủ 256 màu, thay vì chỉ bảng màu 16 tiêu chuẩn. Trong các thiết bị đầu cuối hỗ trợ nó, có thể sử dụng \e[48;2;RRR;GGG;BBBmnhưng rất ít trình giả lập thiết bị đầu cuối hỗ trợ nó ... :(
Dom Hastings

Mẹ thánh của mã .... Tôi không có ý tưởng đó là có thể. Cuộc sống của tôi là một lời nói dối. Cảm ơn một triệu: P
MD XF

@MDXF ^^ và cũng 38;5biểu thị nền trước và 48;5khử màu nền. misc.flogisoft.com/bash/tip_colors_and_formatted
Dom Hastings

1
@MDXF Đừng lo! Rất vui được giúp đỡ! Thật xấu hổ tôi đã bỏ lỡ điều này khi nó hoàn toàn mới, nhưng câu trả lời Minecraft đó ... không thật!
Dom Hastings

2

Ngôn ngữ máy x86 (chế độ thực) cho PC của IBM, 20 19 byte

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

Điều này đòi hỏi một bộ xử lý với rdrandhướng dẫn và bộ chuyển đổi VGA (thực hoặc giả lập). Ở trên có thể được sao chép vào một khối khởi động hoặc tệp MS-DOS * .COM.

Để thử điều này, hãy biên dịch các mục sau và lưu kết quả đầu ra vào một tệp như floppy.imgvà khởi động hình ảnh trên máy ảo.

#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main(){
  char buffer[ 1440*1024 ];
  memcpy( buffer, "\xb8\x12\x00\x31\xdb\xcd\x10\x0f\xc7\xf0\x88\xe1\x0f\xc7\xf2\xb4\x0c\xeb\xf2", 20 );
  memcpy( buffer + 510, "\x55\xaa", 2 );
  write( 1, buffer, sizeof buffer );
}

2

Siêu 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

Tôi không chắc tên chính xác, nhưng tôi đã phải sử dụng tên này thay vì Chip-8 thông thường vì giới hạn 40x40 pixel.


Liên kết với ngôn ngữ này (rất thú vị)?
MD XF

Bạn có thể sử dụng trình giả lập Octo: johnearnest.github.io/Octo
12Me21

2

QBIC , 34 byte

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

Thật không may, QBIC không đặt SCREENchế độ theo mặc định, do đó ăn một số byte. PSETlà một lệnh bất hợp pháp trong bối cảnh đồ họa mặc định của QBIC.

Giải trình

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)

Sản lượng mẫu

@Anonymous đã tìm thấy một lỗi trong rnd()chức năng của QBIC . Sửa chữa mà cho đầu ra dưới đây. Cảm ơn!

nhập mô tả hình ảnh ở đây


Rõ ràng từ ảnh chụp màn hình, giải pháp của bạn không thỏa mãn các điều kiện ngẫu nhiên. Với tọa độ, không phải tất cả các màu đều có khả năng như nhau và được cung cấp một màu, không phải tất cả các tọa độ đều có khả năng như nhau; chúng có mối tương quan cao và điều đó làm cho nó nhẹ đi. Vấn đề là trình tạo số ngẫu nhiên bạn đang sử dụng: 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 FUNCTIONSố ngẫu nhiên của bạn chỉ là băm của thời điểm hiện tại.
Ẩn danh

@Anonymous Bây giờ đã được sửa, cảm ơn!
steenbergh

2

6502 hội, 582 byte

Whew, điều này thật thú vị. Có nhiều hay ít điều tương tự như giải pháp Applesoft BASIC của tôi.

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

Đây có phải là phiên bản không được trả lời của câu trả lời lắp ráp 6502 khác của bạn không? :-)
Cody Grey

@CodyGray Không, nó làm mọi thứ hơi khác một chút. Nó giống như câu trả lời Applesoft BASIC của tôi (sử dụng bước đi ngẫu nhiên) và câu trả lời lắp ráp 6502 khác giống với tất cả các câu hỏi khác.
MD XF

Tôi không đồng ý với số byte: đây là cách ngắn hơn 583 byte lắp ráp?
Olivier Dulac

@OlivierDulac tio.run/##Zc/ Kẻ ?
MD XF

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.