Фон / Описание
Примечание: как указывает @HelkaHomba, фактические идентификаторы GitHub на самом деле не случайны, а основаны на хэше имени пользователя
Аватар GitHub по умолчанию представляет собой изображение размером 5x5 пикселей. Цвет выбирается случайным образом, и затем случайные пиксели заполняются с одной стороны (справа или слева, размером 2x5), используя этот цвет. Затем эта сторона копируется и переворачивается на другую сторону, по оси Y. Не заполненные пиксели - это # F0F0F0 или rgb (240,240,240).
Пиксели центрального столбца (размером 1х5) затем заполняются случайным образом, используя тот же цвет, что и ранее.
Выход
Примечание: для этого вызова мы будем игнорировать пространство, в котором находятся аватары GitHub.
Программа должна вывести файл изображения 5x5 пикселей. См. Http://meta.codegolf.stackexchange.com/a/9095/42499 для подробностей
Примеры
Примечание: они были явно увеличены с 5х5, чтобы вы могли их видеть
Удачи!
источник
Ответы:
Pyth - 27 байт
Очевидно, что он не работает в Интернете, но вы можете распечатать цветовые коды здесь .
источник
Perl 5 , 77 байт
Это неконкурентное решение, поскольку оно имеет только 256-цветовую палитру, работает только на терминалах, которые поддерживают escape-коды ANSI, и на самом деле не выводит квадратное изображение размером 5 пикселей, но я решил опубликовать его в любом случае, так как это было забавно, сыграв в эту игру вниз.
Примечание: на
\e
самом деле это символ ASCII\x1B
.использование
объяснение
Ничего особенно умного, кроме, возможно,
$-
для автоматического округления номера цвета для использования в escape-последовательности, используется вместо$n=0|rand 254
.Пример вывода
источник
MATL ,
3629 байтЭто сохраняет результат в файл
a.png
.Замена
'a'
на2
в коде отображает изображение (увеличенное) вместо сохранения файла:Вот пример вывода:
объяснение
источник
На самом деле, 53 байта
Попробуйте онлайн!
На самом деле плохо при обработке строк. Я думаю, что упоминал об этом раньше. Эта программа выводит изображение netpbm P6 с использованием CP437, например:
Это может быть преобразовано в PNG с помощью ImageMagick:
Увеличенная версия PNG:
Объяснение:
источник
ppm
изображение.Python,
167164155148 байтВывести в ppm
range(5)
для" "*5
print
map
посколькуstr(p)
использовался толькоexec""*5
вместоfor _ in " "*5:
Некоторое улучшение по сравнению со старым, основанным на строках кодом:
источник
Swift 2.3,
593585 байтОбновить
Swift 3, 551 байт
Я на WWDC и только что получил бета-версию Xcode 8 с Swift 3. Apple сделала некоторые вызовы CoreGraphics более «Swifty», и я могу сократить количество пользователей.
Swift 2 код Ungolfed:
Этот ответ предполагает, что UIKit доступен и использует платформу Cocoa Touch.
Некоторые примеры выходных изображений:
Я знаю, что не могу конкурировать с большинством других ответов, но я хотел дать этому шанс как личный вызов. В этом ответе определенно есть место для улучшения, но я думаю, что будет трудно уменьшить его до нескольких сотен байтов из-за длины имен методов записи изображений UIKit и CoreGraphics. В качестве упражнения для себя я решил написать фактический файл PNG, а не значения PPM, но более короткие ответы определенно были бы возможны, если бы я использовал формат PPM.
Я уже начинаю как потери от того , чтобы объявить переменную семени
srand48
сtime
. Я выбрал этоarc4random()
илиarc4random_uniform()
потому, что в конечном итоге я потерял бы больше байтов с ними. Я использую Rng дляdrand48
генерации случайного цвета и выбираю, когда записать цвет в пиксель.CGSize
противCGSizeMake
иCGRect
противCGRectMake
:Я переключаюсь между встроенными функциями API C и их расширениями Swift, чтобы найти самый короткий конструктор для каждого из них.
CGSizeMake
в конечном итоге короче, чемCGSize()
, иCGRect
заканчивается короче, чемCGRectMake()
:Я должен был бы создать
CGFloat
сx
иy
из-за природы цикла for. Я действительно не в восторге от цикла 2D и проверки равенства, но я действительно изо всех сил пытался найти более короткий путь. Здесь определенно есть место, чтобы сбрить несколько байтов.Вызов
CGContextFillRects
с массивомCGRect
структур дешевле, чем вызовCGContextFillRect
дважды с двумя разными значениями, поэтому я сохраняю несколько байтов с массивом и указателем.Я также экономлю 27 байтов, не вызывая
UIGraphicsEndImageContext()
. Хотя это обычно было бы «ошибкой» в производственном коде, для этой игрушечной программы это не обязательно.Цвета:
С цветами также трудно справиться, так как я создаю
UIColor
объекты, но мне нужно написатьCGColor
непрозрачный тип для каждого пикселя. Самый короткий код, который я нашел, чтобы создать случайный цвет, должен был использоватьUIColor
конструктор и получитьCGColor
из этогоUIColor
. То же самое с белым. Если бы я использовал Cocoa Framework вместо Cocoa Touch, я мог бы сохранить некоторые байты с помощьюCGColorGetConstantColor()
, но, к сожалению, этот метод недоступен в Cocoa Touch SDK.Запись в файл:
Запись в файл занимает почти 100 байтов. Я не уверен, как вообще оптимизировать это. В некоторых системах, в зависимости от ваших разрешений, вам может понадобиться использовать каталог Documents, который будет еще длиннее:
Определенно открыт для дальнейшей оптимизации.
Редактировать 1: Сохранение нескольких байтов путем перестановки объявлений переменных.
источник
Mathematica,
1051029894 байта
является оператором транспонирования .Изменить 1: 3 байта сохранены путем замены
Round
+RandomReal
наRandomInteger
Изменить 2: 4 байта сохранены путем замены
RandomInteger
наRandomChoice
Редактировать 3: Сохранено 4 байта путем замены
RandomColor
иGrayLevel
сRandomReal
источник
MATLAB, 102 байта
Привет, это мое решение Matlab:
Ввод
x
функции - это имя выходного файла. Например:создает изображение в формате png с именем 'output.png'.
Вот результаты некоторых выполнений этого кода.
источник
Дьялог АПЛ,
4342 байта'P3',5 5 256,∊(3⍴240)(?3⍴256)[⌈(⊢+⌽)?5 5⍴0]
'P3',5 5a,∊(3⍴240)(?3⍴a←256)[⌈(⊢+⌽)?5 5⍴0]
Справа налево:
?5 5⍴0
генерирует матрицу 5 × 5 случайных чисел от 0 до 1 ( но никогда не 0 или 1 )(⊢+⌽)
это поезд, который добавляет матрицу с ее отражением⌈
потолок, возвращает 1 или 2 для каждого элемента(3⍴240)(?3⍴256)
цвета - белый и случайный[ ]
использовать каждый элемент матрицы в качестве индекса в цветах'P3',5 5 256,∊
расплющить и добавить заголовокисточник
PHP, 236 байт
Я знаю, что это старый вызов, но мне просто нравится испытывать себя.
Ungolfed:
Пример вывода:
источник
Javascript ES6, 296 байт
Примечание: не создает файл, рисует на холсте.
Посмотрите это в действии в этой JS Fiddle .
источник