Отображение случайных цветных пикселей


47

Мне всегда нравились экраны, полные случайно окрашенных пикселей. На них интересно смотреть, а программы, которые их рисуют, интересно смотреть.

Соревнование

Заполните ваш экран или графическое окно цветными пикселями.

Правила

  • Ваша программа должна иметь равные шансы выбрать все цвета (т.е. в диапазоне #000000до #FFFFFF) или все цвета, которые могут отображаться в вашей системе.
  • Ваша программа должна продолжать отображать случайные пиксели, пока не остановится вручную (она не может завершиться сама по себе).
  • Пиксели могут быть любого размера, если ваш вывод имеет размер не менее 40x40 "пикселей".
  • Ваша программа должна работать с такой скоростью, чтобы она могла заменить каждый пиксель на экране / окне хотя бы один раз после запуска в течение трех минут.
  • Ваша программа должна выбирать действительно случайные цвета и точки для замены, т.е. случайные, с равной вероятностью для всех точек / цветов. Это не может выглядеть просто случайно. Он должен использовать pRNG или лучше, и результат не может быть одинаковым каждый раз.
  • Ваша программа должна иметь одинаковые шансы выбрать все цвета на каждой итерации .
  • Ваша программа должна заменить только один пиксель одновременно.
  • Ваша программа не может использовать Интернет, ни вашу файловую систему ( /dev/randomи за /dev/urandomисключением).

пример

Ваш вывод может выглядеть следующим образом, если остановится в случайное время:

Победитель

Самый короткий ответ на каждом языке выигрывает. Веселиться!


Под «действительно случайным» я полагаю, что псевдослучайный - это нормально (как Math.random () или аналогичный)
OldBunny2800

@ OldBunny2800It must use a pRNG or better
TheLethalCoder

Поскольку программа не может использовать Интернет, я просто оставлю это в комментарии: babelia.libraryofbabel.info/slideshow.html
KSmarts

1
Так что же касается и «3-минутного лимита»? Или только однажды «программа» начинается? Спрашиваю, потому что у меня есть решение Minecraft Redstone, которое запускается очень быстро, когда оно идет, но требует начальной настройки (ему нужно «поместить» каждый «пиксель» в сетке 40x40), прежде чем оно сможет начать менять цвета.
BradC

5
Действительно случайные по определению исключают псевдослучайные , но не определяют распределение. Я предполагаю, что вы имеете в виду единый PRNG, где все события равновероятны и независимы друг от друга.
Деннис

Ответы:


84

Minecraft 1.12 Redstone Command Blocks, 4 355 2 872 байта

Скриншот Minecraft с броневыми стойками и картой

(Размер определяется размером файла сохраненного структурного блока.)

Вот полный обзор YouTube , но я постараюсь обрисовать в общих чертах код ниже.

Программа установки:

2 ряда командных блоков для настройки

Это устанавливает 40x40 сетку стендов брони Minecraft. Стойки брони необходимы, потому что Minecraft не имеет возможности подставлять переменные в мировые координаты . Таким образом, обходной путь должен относиться к расположению этих сущностей броневого стенда.

(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

Эта именованная подставка для брони является в основном нашим «курсором» для размещения всех подставок для брони, которые нам понадобятся. Блок красного камня на последнем шаге «питает» соседние блоки (включая наши командные блоки), поэтому запускается следующий цикл:

(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

На данный момент наша сетка завершена:

Завершена броня стенда решетки

Случайный выбор цвета

Выбор цвета и пикселей

Фиолетовые повторители в центре этой картинки выбирают случайный цвет с помощью следующей команды:

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

«@R []» - волшебный соус, он выбирает случайную сущность в мире, которая соответствует заданным условиям . В этом случае он находит подставку для брони в радиусе 9 блоков , и мы установили 16 подставок для брони, по одной на каждый цвет шерсти. Под выбранным цветом он помещает блок красного камня (который питает два командных блока с каждой стороны).

Случайный пиксельный селектор

Помещение блока красного камня под выбранный цвет шерсти запускает еще два командных блока:

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

В этой первой строке используется та же команда magic @r, чтобы выбрать любую стойку брони на всей карте (без ограничения радиуса, включая сетку 40x40), и помещает шерсть выбранного цвета над головой. X определяет цвет и находится в диапазоне от 0 до 15. Вторая команда удаляет блок красного камня, поэтому он снова готов к работе.

У меня есть 5 фиолетовых блоков повторителей, а красный камень работает в «тиках» 20 раз в секунду, поэтому я помещаю 100 пикселей в секунду (за вычетом наложения некоторых цветов). Я рассчитал время, и я обычно покрываю всю сетку за 3 минуты.

Это было весело, я попытаюсь найти другие проблемы, которые могут также работать в Minecraft. Огромное спасибо lorgon111 за серию учебных пособий по YouTube Command Block .

РЕДАКТИРОВАТЬ: Сделано несколько серьезных сокращений в размере сохраненной структуры, теперь на 2872 сохраненных байтов :

более близкие командные блоки с видимыми пустыми блоками

  1. Немного перебрал вещи (во всех трех измерениях), чтобы я мог уменьшить общий размер сохраненной области.
  2. Поменяли разноцветные шерсти на каменные, они все равно были просто декоративными.
  3. Убран светящийся светильник.
  4. Изменены все воздушные блоки на пустые блоки (красные квадраты).

Протестировано, вытащив сохраненную структуру в новый мир, все по-прежнему работает как задумано.

РЕДАКТИРОВАТЬ 2 : Ссылка Dropbox только для чтения на файл структуры NBT

Прогулка проходит в моем видео на YouTube , но вот шаги:

  1. В Minecraft 1.12 создайте новый креативный сверхплоский мир, используя предустановку «Redstone Ready». Сделай мирный режим.
  2. Когда мир существует, скопируйте файл NBT в новую \structuresпапку, созданную в текущем сохранении мира.
  3. Вернувшись в игру, сделайте /give @p structure_blockи /tp @p -12, 56, -22прыгните в нужное место, чтобы начать.
  4. Выкопайте яму и поместите структурный блок в -12, 55, -22.
  5. Щелкните правой кнопкой мыши структурный блок, нажмите кнопку режима, чтобы переключить его на «Загрузить».
  6. Введите «random_pixels», включите «включить объекты» и нажмите «Загрузить»
  7. Если он найдет файл структуры, он будет предварительно просматривать схему. Щелкните правой кнопкой мыши еще раз и нажмите «загрузить», чтобы перенести структуру в мир.
  8. Нажмите кнопку, чтобы запустить процедуру настройки.
  9. Когда он завершится, нажмите на переключатель, чтобы запустить случайную выборку.

6
Черт возьми ... ты на самом деле сделал это. И это твой первый ответ, вау! Добро пожаловать на сайт, и это отличный способ начать!
MD XF

2
@MDXF В дополнение к вашим +10, я даю +60
NoOneIsHere

2
@NoOneIsHere Все в порядке: P Но если у вас есть ответ, он должен быть +100 ...
MD XF

2
Я попытаюсь
Кристофер

2
Ну, shortest answer in each language winsи это самый короткий ответ в Minecraft: у P есть дополнительные +15
MD XF

19

sh + ffmpeg, 52 байта

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

Ffmpeg считается как esolang? : D

К сожалению, pix_fmt требуется, поскольку ffmpeg по умолчанию равен yuv420p. Это не соответствует требованию «должна иметь равную вероятность каждого возможного цвета пикселя». Удобно, cifэто ярлык для довольно большого размера видео, который использует меньше места, чем «40x40».

Неудивительно, что оптимизация этого gif с gifsicle абсолютно ничего не сделала. Это 4MiB.


3
Это « заменяет только один пиксель одновременно »?
Скотт Милнер

1
Технически? ffmpeg будет ждать, пока весь кадр будет заполнен пикселями, прежде чем отобразить его. Я неправильно прочитал «должен заменять только 1 пиксель за раз», как «может». : /
Уна

1
И, конечно, gifsicle не смог сохранить ни одного байта в gif: нет способа сжать произвольные данные, и все случайные пиксели расположены хаотично, что означает, что наиболее эффективный способ их кодирования - один пиксель за раз. Numberphile (я думаю?) Снял видео на тему «что такое информация» и сделал случайный шум, чтобы преднамеренно связываться со сжатием YouTube. В VSauce тоже было видео о сжатии видео, но я забыл, как оно называлось.
Draco18s

2
@ Draco18s, я знаю, записка о том, что это несжимаемо, высмеивала меня за то, что я все равно пыталась запустить на нем гифсикулу.
Уна

2
Gifsicle - неправильный инструмент. Precomp снижает его с 4 МБ до 3 МБ :) Это потому, что алгоритм GIF расширяет случайность, а не сжимает ее, а Precomp обращает это в обратную сторону.
шнаадер

17

C на POSIX, 98 96 95 92 байта

-3 благодаря 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););}

Он выбирает между 16 цветами (темно-серый, красный, зеленый, синий, оранжевый, голубой, фиолетовый, светло-серый, черный, розовый, голубой, желтый, светло-голубой, пурпурный, белый) и печатает их непосредственно на терминал.

Обратите внимание, что если ваш графический процессор слишком медленный, может показаться, что он обновляет весь экран одновременно. Это на самом деле идет пиксель за пикселем, но С быстро.

цвета

Альтернативное решение, которое делает цвета более четкими:

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

Доказательство того, что оно идет попиксельно (скриншот из альтернативной программы):

3d !!!

Ничего себе, это выглядит почти 3-мерным ...


Отсутствует ;компиляция правильно, но, кажется, отлично работает, кроме этого! B-)
cleblanc

@cleblanc О, ты прав! Я забыл добавить это после того, как я переключился с whileна for.
MD XF

2
Вы могли бы, вероятно, побрить несколько байтов, #define r rand()а затем использоватьr%40, r%40, r%2, r%8
Tas

Без использования 32-битного цвета это не соответствует требованиям.
ягоды

4
@wberry "Ваша программа должна иметь одинаковые шансы выбрать все цвета (т.е. в диапазоне от # 000000 до #FFFFFF) или все цвета, которые могут отображаться в вашей системе. " Это все цвета, которые может отображать терминал POSIX.
MD XF

13

JS + HTML 162 + 32 (194) 124 + 13 (137) байтов

Спасибо Люку и другим комментаторам за то, что они спасли мне много байтов.

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
На самом деле <canvas id=c>должно быть достаточно, так как я думаю, что размер по умолчанию для canvas-element равен 300 x 150 pxи поэтому превышает ваш «размер области просмотра» 99 x 99 px. Во всяком случае, хорошее решение.
insertusername здесь

1
@insertusernamehere, да, спасибо
Осьминог

1
Сейчас не работает в Firefox. Это работает в Chrome
ETHproductions

1
Хорошо, хорошо, я понял. Сохраните 2 байта, выполнив b = c.getContext 2d. (Не уверен, как это отформатировать, но если «2d» является литералом шаблона, ему не нужны круглые скобки.) (Удаление моих предыдущих предложений.)
Рик Хичкок

1
Наряду с предложением Рика, используйте withутверждение, чтобы избавиться от всех случаев 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 байт

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

Попробуйте это в MATL Online . Я добавил полсекунды pause ( .5Y.) для этой версии.

введите описание изображения здесь

объяснение

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
Я люблю это! ----
MD XF

4
из любопытства, как вы расшифровали вывод кода?
Осьминог

2
@ Осьминог Я только что использовал LICEcap . На днях я собираюсь включить анимированный GIF-вывод в онлайн-компилятор.
Suever

Видя, как в этом ответе используется меньше команд / методов для достижения аналогичного результата, не могли бы вы преобразовать его в MATL, чтобы получить более низкий балл?
MD XF

Я видел, как уже замененный пиксель заменяется снова;).
Волшебная Урна Осьминога

7

TI-BASIC (только 84 + C (S) E), 37 35 байт

: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

Из-за аппаратных ограничений это может привести к сбою, поскольку каждый раз, когда программа вкладывается в программу в TI-BASIC , 15 КБ ОЗУ выделяется для «сохранения закладки» в родительской программе. Это нормально работает на «теоретическом» калькуляторе с бесконечной оперативной памятью, но если мы хотим, чтобы он работал бесконечно на реальном калькуляторе, мы можем просто обернуть его в While 1цикл для дополнительных 2 байтов:

:While 1
:...
:End

Калькуляторы семейства TI-83 с цветными экранами (TI 84 + CE и CSE) поддерживают 15 цветов. У них есть цветовые коды до 10конца 24. Это циклически перебирает все пиксели в 5!квадрате 120 на 120 ( ) и назначает каждому случайный цвет.

Результат:

введите описание изображения здесь


Yay, еще один базовый ответ! Просто чтобы быть уверенным, это работает вечно?
MD XF

@MDXF Теперь это так! ;-). Пропустил эту часть в первый раз. +5 байт.
Скотт Милнер

Вы можете сделать так, чтобы петли for начинались с 0, если вы хотите покрыть 100x100 пикселей.
kamoroso94

@ kamoroso94 Ах, правда. Я мог бы также сделать, 5!если бы я хотел 120 пикселей.
Скотт Милнер

2
@MDXF TI-BASIC является на основе маркеров . Т.е. For(1 байт, Pxl-On(1 байт, randInt(2 байта и т. Д.
Скотт Милнер

5

MATLAB, 56 байт

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

Вывод выглядит как на картинке ниже. Одновременно меняется один «пиксель», и меняется только один из цветов RGB.

Почему? Цвета в MATLAB представлены в виде 3D-матрицы, один слой для R, G и B. Приведенный выше код изменяет только один из слоев на одну итерацию. Все пиксели и все слои можно изменить, поэтому, если вы немного подождете, все цвета одинаково возможны во всех положениях.

Добавьте pause(t)внутри цикла, чтобы сделать паузу tсекунд между каждым изображением.

Вы должны остановить это с помощью Ctrl+ C.

введите описание изображения здесь


3
Умное использование дескриптора для графического объекта в качестве условия вwhere
Suever

2
Правило было уточнено Your program must have an equal chance of picking all colors/points each iteration. Ваша программа выполняет это?
MD XF

5

Bash + coreutils, 59 56 байт

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

\e[48;5;COLORm это побег безопасности для цвета фона.

Каждый «пиксель» может каждый раз находиться в диапазоне [0..16777215].


1
Вау, это действительно хорошая идея! +1
MD XF

Вы можете сбросить 3 байта, если используете jot:for((;;)){ printf "\e[48;5;`jot -r 1 0 16777215`m ";}
Moreaki

Я украл эту идею и обработал ее до 45 байт (\ e - 1 escape-символ, а shuf | xargs делает его короче (нет необходимости для -n 1 и нет для). Codegolf.stackexchange.com/a/158142/7017 Я могу удалить его, если хотите (я не совсем уверен, стоит ли предлагать это в качестве комментария, а не публиковать его. Моя цель - получить несколько баллов за один день, чтобы получить удивительные ответы на удивительный «тетрис». в игре жизни "вызов и ответ! см. codegolf.stackexchange.com/q/11880/7017
Оливье Дюлак

5

Javascript + HTML 118 + 13 (131 байт)

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>

  • Это даст равномерно распределенные цвета RGB. Вы не можете использовать Hex цвета без надлежащего заполнения в виде чисел , как #7это не является допустимым цветом, или #777и #777777того же цвета (2x шансы)
  • Элемент canvas по умолчанию имеет размер 300x150, но я на самом деле рисую на квадрате 255x255, поэтому есть пиксели вне холста, поэтому эффективная область равна 255x150.
  • Работает только на Google Chrome.

2
Отличный первый пост! Добро пожаловать на сайт!
MD XF

Я не верю, что у этого есть какой-либо шанс отобразить какие-либо цвета с каналом, установленным на 255, например, красный, зеленый, синий или белый. Я думаю, что вы должны умножить на 256 вместо этого.
kamoroso94

4

Excel VBA, 131 102 85 байт

Анонимная функция непосредственного окна VBE, которая использует вспомогательную функцию (см. Ниже) для вывода массива случайно окрашенных ячеек в диапазон A1:AN40объекта activesheet.

Примечание. Это решение ограничено 32-разрядной установкой MS Excel (и, следовательно, Office в целом), поскольку 8^8не будет компилироваться в 64-разрядных версиях VBA.

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

Пример вывода

Случайные цвета ячеек

Предыдущая версия

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

Вспомогательная функция

Выводит случайное целое число в диапазоне [0,255]

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

3

C #, 369 288 287 байт

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

Сохранено 88 байтов благодаря @CodyGray.

Полная программа, которая получает указатель на экран и его размер, а затем начинает случайное рисование пикселей на нем. Обратите внимание, что это может привести к остановке видеокарты при запуске. Также, если экран или какой-либо элемент управления решит перекрасить в любое время, пиксели будут потеряны и должны быть перерисованы.

Примечание: во время работы держите фокус на окне, чтобы убить его, вы должны либо нажать Alt + F4, либо нажать кнопку закрытия, и делать это, когда вы не видите экран, довольно сложно.

Я не мог записать эту работу с ScreenToGif, так как он заставлял перекрашивать, чтобы пиксели были удалены. Тем не менее, вот снимок экрана, показывающий, что он работает примерно через 10-15 секунд, и я думаю, что мой компьютер остановился! Разрыв в верхнем правом углу - то, где экран заставил перекрасить, как я сделал скриншот.

Пример полной версии

Полная / Отформатированная версия:

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

Версия для 308 227 226 байт, которая рисует только в области 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);}}}

Пример вывода для этого:

Небольшой пример вывода



Graphics.FromHwnd((IntPtr)0)также будет работать, и будет намного короче, чем P / Invoking GetDC. Конечно, ваш код по-прежнему похож на код Tas , а ресурсы теряют как сумасшедшие, поэтому он останавливает вашу машину после короткого времени работы.
Коди Грей

@CodyGray О, я знаю, что это утечка, все же должен работать в рамках спецификации задач, хотя. И GetDCне возвращает, IntPtr.Zeroтак что отправка, что FromHdcне будет работать.
TheLethalCoder

1
Прочитайте предложение более внимательно. :-) Я не предлагаю вам позвонить FromHdc, я предлагаю вам позвонить FromHwnd. Обратите внимание, что когда вы вызываете GetDCDC для дескриптора окна, вы передаете NULL-указатель (0) в качестве дескриптора окна.
Коди Грей

@CodyGray Ах да, это работает, спасибо! Они названы похожими, следовало бы прочитать ваш комментарий более внимательно ...
TheLethalCoder

3

Консоль C #, 233 220 189 188 байт

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

введите описание изображения здесь

Использует "все" (окна) 16 цветов консоли.

Спасибо за "особенность", чтобы иметь возможность псевдоним классов в C # через usingдирективу.

Редактировать # 1

  • Удалены некоторые пробелы.

  • Удалены нули из Random.Next ()

  • Пошел в namespace system{...}

Редактировать № 2

  • Минимальный размер сетки 40х40

  • Один байт, объявив Random для заголовка цикла

  • Удалено publicиз метода Main

Редактировать № 3

Оказывается, using C=Console;это не самое лучшее , что есть. using static Consoleочень похоже на способ VB.Net "импортировать" классы

Я сдаюсь: TheLethalCoder сделал это возможным


Оригинальный код для адаптации размера окна в 207 байт:

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

Исходное изображение:

введите описание изображения здесь


namespace Systemдолжен сохранить байты, r.Nextможет удалить ноль, я считаю, удалить
ненужные

Также просто название C # хорошо
TheLethalCoder

Спасибо! Я оставляю Console в заголовке, так как считаю, что этот вызов предоставляет ценный контекст. Я не вижу, как namespace System{}короче using System;. Хотите объяснить?
MrPaulch

1
У меня была эта сильная, но необоснованная память, что публика нужна для Main. Необоснованные воспоминания самые лучшие!
MrPaulch

1
Благодарю. Не сдавайся! :) Воспользуюсь тем, что я узнал на следующем задании!
MrPaulch

3

Обработка, 90 байт

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

введите описание изображения здесь

расширен и прокомментирован:

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 
}

В идеале я мог бы использовать индекс пикселей вместо x, y местоположения, но pixels[]доступ для обработки требует loadPixels()предварительного и updatePixels()последующего использования, а следовательно, и использования set(). point()будет работать, но имеет больше символов и требует stroke(). Случайная область на самом деле составляет 99x99, чтобы сэкономить несколько байтов (вместо 100x100), но это должно охватывать 40x40 с каждым пикселем в такой области, которая должна быть заменена.

Perlin noise () используется вместо random (), чтобы сделать его более псевдослучайным и короче байта. Значение вычисляется один раз, но используется дважды: один раз для случайной позиции, затем снова для цвета.

Цвет на самом деле ARGB(от 00000000 до FFFFFFFF) (не RGB) (бонусные баллы?: D).


Круто, и приятно видеть вас на этом сайте!
Кевин Воркман

Похоже! и спасибо! :)
Джордж Profenza

+1 set()- очень аккуратный трюк и может быть очень полезен для
Советов

Ooooooh! Я не знал об этом. Я добавлю это туда, спасибо :)
Джордж Profenza

2

Python, 133 байта

Я не совсем уверен, соответствует ли это спецификациям, потому что это на холсте в области 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+')'))

Попробуйте онлайн - версия безeval, которая не работает в Брелок


Заметьте, конечно, почему, может быть, ваша черепаха отличается от моей, но мой холст по умолчанию - 300 на 400, а по умолчанию colormode- 1.0нет 255.
Джонатан Аллан

Trinket.io довольно уникальный.
mbomb007

Да - я только что попытался измениться, colormodeи у него не было бы ничего: /
Джонатан Аллан

Почему тоже dot(1,R(0,255),R(0,255),R(0,255))не работает? dotпредназначен для принятия (width,*color). Это не Питон: р
Джонатан Аллан

Потому что Trinket.io использует skulpt.js, который является неполной реализацией Python.
mbomb007

2

JavaScript с использованием Canvas 340 316 324 байта

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

полная версия


2
Добро пожаловать на сайт! :)
DJMcMayhem

Соблюдает ли это правило: «Ваша программа должна продолжать отображать случайные пиксели до тех пор, пока не остановится вручную (она не может завершиться самостоятельно)»?
Осьминог

Это, кажется, просто генерирует кучу случайных пикселей при запуске. Он не продолжает отображать пиксели один за другим, пока не остановится.
MD XF

Кажется, я пропустил это правило. Я ошибочно думал, что целью было создать изображение, а не анимацию. Я обновлю свой ответ, когда вернусь к своему компьютеру.
Тим Пеннер

1
@MDXF сейчас анимирован
Тим Пеннер

2

Обработка, 112 байт

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

Я не могу гарантировать, что каждый пиксель заменяется каждые 3 минуты, но, глядя на это, похоже, он делает это. По крайней мере вероятность того, что из-за отсутствия пикселя из общего числа 1600 обновляется случайное значение 30x в секунду, что составляет 5400 обновлений за 3 минуты, делает маловероятным, что он будет пропущен.

Ungolfed:

Программа действительно проста. Откройте окно с разрешением 40x40 пикселей, и каждый кадр (по умолчанию 30 в секунду) получает случайный цвет и рисует точку со случайной координатой между 0 и параметром. 40 для координат пикселей, 255 для цветов.

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

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

введите описание изображения здесь


Вы можете удалить size(40,40);и изменить pointна point(random(99),random(99));? (или 100 вместо, если 99 не работает)
Kritixi Lithos

@KritixiLithos в обработке, sizeфункция ДОЛЖНА быть первой строкой кода в функции установки (причины сложны), поэтому я не могу обойти это. Я могу изменить все вхождения от 40 до 99, я просто не сделал, так как это не спасло меня. В основном я использовал минимальный размер, чтобы увеличить вероятность того, что каждый пиксель будет обновлен за 3 минуты
Cody

Хех, это было то, о чем я сначала подумал, пока кто-то не сказал мне об этом, и это как-то сработало, как вы можете видеть здесь в моем представлении.
Kritixi Lithos

1
Удаление всей setup()функции на последней версии Processing на моем компьютере работает нормально без ошибок.
Kritixi Lithos

Я полагаю, что моя версия Processing довольно старая, и я не использую ее достаточно, чтобы потрудиться на обновление прямо сейчас.
Коди

2

HTML + SVG + PHP, 245 байт

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

расширенный

$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

Пример для вывода без метатега и в большей версии

<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 ++ в Windows, 125 байт

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

Новые строки необходимы и включены в число байтов.

Циклы навсегда, случайным образом выбирает позицию между 0 и 255 (включительно) для значений строк и столбцов, назначает случайные значения R, G, B между 0-255 (включительно)


1
Я понимаю, что вы играете в эту игру, но человек, у которого утечка контекста устройства каждый раз в цикле, действительно вызывает покалывание в моих чувствах!
Коди Грей

Сохраните 15 байтов, сделав его C в Windows вместо C ++ в Windows, так как компиляторы C позволят вам отказаться от #includes. (И да, для Windows существуют компиляторы, отличные от Visual Studio C.)
MD XF

2

Python 3.6 + Tkinter, 281 байт

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

Как tkinterи в стандартной библиотеке, вам не нужно включать ее в заголовок
caird coinheringaahing

Я получаю ту же ошибку - Windows 10, Python 3.6.0 Я могу догадаться, почему init видит четыре переданных параметра - метод неявно передает параметр "self". Но я понятия не имею, почему это вызывает ошибку, поскольку в документации показано, что конструктор Canvas принимает три параметра (master, x, y), как показано в коде.
CCB60

Должно быть исправлено сейчас.
Мартовцы

1
также @Ilikemydog Tkinter не всегда в stdlib. На окнах это необязательно при установке, и я не думаю, что на моем разделе arch также установлен Tkinter. Можно также включить это.
Мартовцы

есть опечатка - «img» вместо «i». И все же это не работает, на этот раз я получаюc.create_image((20,20),i) File "C:\Python36\lib\tkinter\__init__.py", line 2483, in create_image return self._create('image', args, kw) File "C:\Python36\lib\tkinter\__init__.py", line 2474, in _create *(args + self._options(cnf, kw)))) _tkinter.TclError: unknown option "pyimage1"
Михаил V

2

JavaScript (ES7) + HTML с использованием SVG, 129 + 10 = 139 байт

Версия SVG, в значительной степени вдохновленная подходом @ 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>

Так как фрагмент стека любит разбивать скрипт, анализируя <rect>тег, вот CodePen .


2

6502 сборки, 92 байта

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

Выход:

выход

Объяснение:

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
Какая у вас платформа 6502 здесь? BBC Micro? Яблоко ][? Коммодор VIC-20 и т.д ...?
Шон Бебберс,

Должны ли имена ярлыков быть длиной не менее трех символов?
Джонатан Фрех

2

LOGO, 71 байт

Единственный язык, который я знаю, не эзотерический / специально разработанный для игры в гольф и имеющий foreverфункцию. Любая идея со mapстороны?

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

2

shortC , 66 56 байт

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

-10 байтов благодаря доктору Рэнду. :П

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

Нет ссылки TIO, потому что вы, очевидно, не можете печатать на терминале, который требуется онлайн.


2

Perl (on * nix), 69 байт

В \x1bs прописные буквы , побег.

Полагается на sttyкоманду и хорошо работает на OS X.

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

Подобно другим подходам, но мне понравилось сочетание всех параметров в одном вызове, printfпоэтому я поделился. Убивает мой терминал.

введите описание изображения здесь


В два раза больше пикселей, 83 байта

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

Этот подход использует блок Юникода и случайный цвет переднего плана и фона, который дает более квадратный пиксель. Убивает мой терминал тоже, но выглядит круче.

введите описание изображения здесь


Не забывайте, что вы можете использовать буквенный escape-байт, ASCII 0x1B (27) вместо \e. И на StackExchange это может быть представлено .
MD XF

@MDXF Да ... Мне нужно проверить это как скрипт, потому что это не работает через -e! Мне также нужно увеличить количество байтов с Unicode. К сожалению! Спасибо за напоминание!
Дом Гастингс

2

Баш, 104 байта

В \es прописные буквы , побег.

Это в значительной степени переводы моего представления на Perl, но с использованием синтаксиса стиля bash fork бомба! Боюсь, не так умно, как другая запись bash, которая пишет прямо на дисплей.

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

Больше пикселей, 130 байт

Как и в моем Perl-ответе, здесь используется символ Unicode для переднего плана и цвет фона каждого пикселя.

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

Неплохо. Тем не менее, я до сих пор не понимаю "\e[48;5;%im". Зачем нужны 48 и 5?
MD XF

Это доступ к полному 256 цветам, а не просто к стандартной 16 цветовой палитре. В терминалах, которые поддерживают это, возможно использовать, \e[48;2;RRR;GGG;BBBmно очень немногие эмуляторы терминала поддерживают это ... :(
Dom Hastings

Святая мать кодекса .... Я понятия не имел, что это возможно. Моя жизнь - это ложь. Спасибо миллион: P
MD XF

@MDXF ^^, а также 38;5обозначает передний план и 48;5фон deonates. misc.flogisoft.com/bash/tip_colors_and_formatting
Дом Гастингс,

1
@MDXF Не беспокойся! Рад помочь! Позор, я пропустил это, когда это было совершенно новым, но тот ответ Minecraft ... нереальный!
Дом Гастингс

2

Машинный язык x86 (реальный режим) для IBM PC, 20 19 байтов

 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

Для этого требуется процессор с rdrandинструкцией и адаптер VGA (реальный или эмулированный). Вышеприведенное можно скопировать в загрузочный блок или файл MS-DOS * .COM.

Чтобы попробовать это, скомпилируйте следующее и сохраните вывод в файл наподобие floppy.imgи загрузите образ на виртуальной машине.

#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

Супер Чип (48) ?, 12 байт

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

Я не уверен в точном названии, но мне пришлось использовать это вместо обычного Chip-8 из-за ограничения 40x40 пикселей.


Ссылка на этот (очень интересный) язык?
MD XF

Вы можете использовать эмулятор Octo
12Me21

2

QBIC , 34 байта

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

К сожалению, QBIC не устанавливает SCREENрежим по умолчанию, поэтому он потребляет несколько байтов. PSETявляется недопустимой командой в графическом контексте по умолчанию QBIC.

объяснение

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)

Образец вывода

@Anonymous обнаружил ошибку в rnd()функции QBIC . Исправление, которое дает вывод ниже. Спасибо!

введите описание изображения здесь


Как должно быть видно из скриншота, ваше решение не удовлетворяет условиям случайности. При заданной координате не все цвета одинаково вероятны, а при заданном цвете не все координаты одинаково вероятны; они сильно коррелированы, и это мягко говоря. Проблема в том, что вы используете генератор 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 FUNCTIONслучайных чисел : ваши случайные числа - это просто хеши текущего времени.
Аноним

@ Аноним Это исправлено, спасибо!
Стинберг

2

6502 сборки, 582 байта

Вот это было весело. Делает более или менее то же самое, что и мое решение Applesoft BASIC.

start:
lda #15
sta $0
sta $1
loo:
lda $fe
and #3
cmp #0
beq g_l
cmp #1
beq g_r
cmp #2
beq g_d
dec $1
d_w:
lda $1
and #$1f
asl
tax
lda ypo,x
sta $2
inx
lda ypo,x
sta $3
lda $0
and #$1f
tay
lda ($2),y
tax
inx
txa
sta ($2),y
jmp loo
g_d:
inc $1
jmp d_w
g_l:
dec $0
jmp d_w
g_r:
inc $0
jmp d_w
ypo:
dcb $00,$02,$20,$02,$40,$02,$60,$02
dcb $80,$02,$a0,$02,$c0,$02,$e0,$02
dcb $00,$03,$20,$03,$40,$03,$60,$03
dcb $80,$03,$a0,$03,$c0,$03,$e0,$03
dcb $00,$04,$20,$04,$40,$04,$60,$04
dcb $80,$04,$a0,$04,$c0,$04,$e0,$04
dcb $00,$05,$20,$05,$40,$05,$60,$05
dcb $80,$05,$a0,$05,$c0,$05,$e0,$05

Является ли это неверной версией вашего другого 6502 ответа на сборку ? :-)
Коди Грей

@CodyGray Нет, все немного по-другому. Это больше похоже на мой ответ Applesoft BASIC (использует случайное блуждание), а другой ответ 6502 сборки больше похож на все остальные.
MD XF

Я не согласен с количеством байтов: это меньше 583 байта сборки?
Оливье Дюлак

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.