Зробіть прозоре зображення 448 * 448


10

Це простий виклик.

Завдання полягає в написанні коду, який виводить квадратне зображення площею 448 * 448 зі 100% прозорістю. Вихід повинен відповідати стандартним правилам зображення .


7
Що заважає людям надсилати 0-байтну відповідь, яка "виводить" прозоре (невидиме) зображення на екран?
12Me21

9
@ 12Me21 Це було б 448 * 448?
Ануш

2
Це пародія на (або принаймні натхненну) закрите питання про stackoverflow?
Foon

2
Що особливого у 448 пікселях?
dan04

1
@Foon Однозначно не пародія, але, безумовно, я був досить зацікавлений, щоб поцікавитись SO, перш ніж зрозуміти, що тут буде набагато веселіше.
Ануш

Відповіді:


28

Imagemagick в якійсь оболонці, 35

convert -size 448x448 xc:none a.png

Це дозволено?


5
Баш, я думаю? Ось чим я користувався, коли тестував його. Будь-яка оболонка POSIX повинна працювати?
vityavv

3
Працює також у Windows (якщо раніше ImageMagick був у PATH \windows\system32).
ЗР.

1
У Windows ImageMagick не постачається з convertінструментом, тому що ім'я суперечить утиліті системи. Ви magick convert ... замість цього біжите .
n0rd

1
@SztupY the convertє частиною ImageMagick, тому називати його своєю мовою не буде працювати.
vityavv

1
це власна команда. Ви можете просто сказати, якою мовою ви користуєтесь ImageMagick Convert. Можливо, варто відкрити мета про це, хоча
SztupY

15

APL (Dyalog Unicode) , 11 байт SBCS

Повна програма. Друкує масив 448 на 448 на 4, що відображає зображення 448 rgba.

448 448 40

Спробуйте в Інтернеті!

є r eshape


Я взагалі не знаю APL, але я думаю, що у нього немає дублікату для гольфу 448 448?
Кевін Круїссен

448 * 448 = 200704, тому не можете замінити простір, розділений 448 448, на 200704, заощадивши 1 байт?
NaCl

1
@NaCl У такому випадку, чому б просто не помножити це на 4 і мати 802832p0як відповідь?
Джон Гамільтон

@NaCl Тому що це не один з допустимих форматів зображень за правилами за замовчуванням .
Адам

@JohnHamilton З тієї ж причини, що і моя відповідь NaCl .
Адам

8

Іди, 70

import i"image";func a()i.Image{return i.NewRGBA(i.Rect(0,0,448,448))}

Ніколи раніше не бачив гольфу в Го. Визначає функцію, яка називається a, яка виводить зображення


2
Назвіть це Go-lf.
Скайлер

6

JavaScript (ES6), 74 69 байт

f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());

Повертає PNG зображення кодується як дані: URL підходить , наприклад , для установки в якості srcАп HTMLImageElement. Редагувати: збережено 3 байти завдяки @Shaggy та ще 2 байти завдяки @Arnauld.



2
document.createElement`canvas` повинен працювати, заощаджуючи ще 2 байти.
Арнольд

1
Якщо createelement є дійсним, чи буде бачити document.body і, використовуючи факт, id стає змінною, чи дійсною? Також
лише для ASCII

1
Чи можете ви додати щось на зразок d=documentу верхній частині та замінити documentна d? Слід зберегти ~ 5 символів.
Лука

1
@Luke Це document.writeлише частина фрагмента стека, а не частина функції, тому вона все одно не рахується.
Ніл

6

Java 8, 23 (або 20) байт

v->new int[448][448][4]

Повертає 3D-масив розміром 448x448x4 0s.

Спробуйте в Інтернеті.

Пояснення:

v->  // Method with empty unused parameter and 3D integer-array as return-type
  new int[448][448][4]
     // Create a 3D array of dimensions 448 by 448 by 4 (filled with 0s by default)

v->new int[448][448]

Повертає матрицю розміром 448x448 0.

У Java значення RGBA можуть бути представлені цілим числом . Шістнадцятковий знак 0x00000000буде представляти 00для червоного, зеленого, синього та альфа відповідно. І 0x00000000дорівнює цілому числу 0.

Спробуйте в Інтернеті.


А-а-а-а, люблю це :-) Не працює це просто v->new int[448][448]? Оскільки колір може бути представлений цілим числом (RGBA) на Java.
Олів'є

@ OlivierGrégoire Ні, мені потрібні чотири 0 на 448x448 пікселів для значень RBGA. EDIT: Хм .. це ціле число 0-255дійсне значення RBGA? Я знаю, що це дійсне значення RGB, але також RGBA? Я майже ніколи не використовую зображення на Java, тому не надто знайомий з ними. Я просто грунтував свої 4 внутрішніх 0 на інших відповідях.
Kevin Cruijssen

Так, чотири 0 як (у шістнадцятковій), 0x00000000що вміщуються в int. Перші 2 шістнадцяткові цифри - це Альфа, наступні 2 - червоні, наступні 2 - зелені, останні 2 - блакитні. Отже, вам потрібно лише ціле число. Див. BufferedImage.TYPE_INT_ARGB . У вас є 4 значення, зведені як одне ціле число. І 0x00000000дорівнює 0.
Олів'є

Я думаю, що це вперше за ~ 2 роки тут я бачив, що Java насправді є конкурентоспроможною!
Кошлатий

@Shaggy З цими мовами для гри в гольф все ще не настільки конкурентоспроможними. Крім того, у мене було кілька інших напівконкурентних відповідей на Java в минулому, як цей , або цей, який вигравав, поки Bash не з'явився (і R пограв його відповідь).
Кевін Круїссен

6

Java 8


Збереження зображення у файл із контуром s, 101 байт

s->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",new java.io.File(s))

Спробуйте в Інтернеті ... якось

повернення BuferiImage, 46 байт

v->new java.awt.image.BufferedImage(448,448,2)

Збереження зображення у файл f, 83 байти

f->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",f)

Скидання PNG до STDOUT, 92 байти (спасибі лише ASCII!)

v->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",System.out)

Спробуйте в Інтернеті!
Дякую Кевіну за збереження байта для другого та четвертого рішень!


2
Ви маєте на увазі порожнє чи прозоре?
Ануш

1
Просто напишіть на stdout
лише для ASCII

1
@ ASCII-тільки Отже, запишіть порожній (заповнений нулями) 448 * 448 * 4 масив для stdout? У будь-якому випадку мені подобається ідея створити фактичний файл PNG.
Бенджамін

1
Ви можете пограти ()->в два ваші відповіді v->, оскільки в ній пустий непотрібний вхід (для якого я особисто використовую Void). Тоді ваш останній TIO буде таким .
Kevin Cruijssen

1
@NahuelFouilleul, тому що я хочу вивести фактичне зображення, а не піксель за піксельним зображенням одного
Benjamin Urquhart

6

05AB1E , 12 10 9 байт

448LDδ4Å0

Спробуйте в Інтернеті.

або альтернативно:

¾4Ž1ÂDиии

Спробуйте в Інтернеті.

-2 байти завдяки @Emigna .
-1 байт завдяки @Adnan .

Виводить тривимірний список розміром 448x448x4 з 0.

Пояснення:

448LD      # Push a list in the range [1,448], and duplicate it
     δ     # Outer product; apply the following double-vectorized:
      4Å0  #  Push a list of 4 0s: [0,0,0,0]
           # (and output the result implicitly)

  Ž1ÂD     # Push compressed integer 448, and duplicate it
      и    # Create a list of 448 times 448
 4     и   # Transform it into a list of 448 times 448 times 4
¾       и  # Transform it into a list of 448 times 448 times 4 times 0
           # (and output the result implicitly)

Дивіться цю мою відповідь 05AB1E (розділ Як стискати великі цілі числа? ), Щоб зрозуміти, чому Ž1Âце так 448.



5

Python 2.7, 17 байт (22 з друком)

[[[0]*4]*488]*488

З друком:

print[[[0]*4]*488]*488

Як змінна:

x=[[[0]*4]*488]*488

Оскільки масив RGBA дозволений, це те, що я створив вище, за замовчуванням до всіх 0 - це означає чорний, але повністю прозорий.

Спробуйте в Інтернеті!


Знову ж таки, з цим просто помножте вручну, і ви отримаєте, [0]*802816що також має працювати.
Джон Гамільтон

1
@JohnHamilton Виправте мене, якщо я помиляюся, але я вважаю, що це повинен бути 3D-масив (масив рядків пікселів), тобто масив [pixel x координат] [піксель y координат] [r / g / b / a]
Диспенсер

1
Не настільки стислий, але ось альтернатива, яка вводить нулі в масивний масив ... np.zeros ([4] + [448] * 2)
П. Хопкінсон

5

Желе , 8 байт

448ṁ4¬¥þ

Ніладична посилання, що дає 448 на 448 RGBA-масив прозорих чорних пікселів.

Спробуйте в Інтернеті!

Як?

448ṁ4¬¥þ - Link: no arguments
448      - 448
       þ - outer-product with: -- i.e. [[f(x,y) for y in [1..448]] for x in [1..448]]
      ¥  -   last two links as a dyad:
   ṁ4    -     mould like [1,2,3,4]  -- e.g. x=7 -> [7,7,7,7]
     ¬   -     logical NOT                       -> [0,0,0,0]

5

HTML, 25 байт

Чи дійсно це?

<svg height=448 width=448

Тестуйте його ( backgroundзастосовано за допомогою CSS, щоб ви могли "побачити" його)


Я не вірю, що це справедливо, оскільки запис <svg height=448 width=448у файл html та відкриття його видає порожнім <body>. Однак , якщо ви пишете <svg height=448 width=448>, розмір 1 байт, якщо він пише , він створює <body>порожнє зображення SVG.
Ісмаїл Мігель

@IsmaelMiguel, ми визначаємо мови за їх інтерпретацією, а не за призначенням. Те, що існує інтерпретатор (у даному випадку CodePen), який дозволяє нам опустити закриття, >означає, що це дійсно дійсно, наскільки розмічається.
Кошлатий

1
Codepen додає додатковий HTML-код, щоб він працював. Він додає <!DOCTYPE html>, <html>, <head>, <style>, <script>і все йде до <body>. Деякі додаткові коди потрібні для отримання потрібного результату. Ви можете бачити, що отриманий код аналізується як <svg height="448" width="448" < body></svg>, тому що він пише <svg height=448 width=448 </body>в iframe. Я вважаю, що це неправда.
Ісмаїл Мігель


5

Іржа - 206 201 168 байт

use std::{io::Write,fs::File};fn main(){let mut v=vec![0,0,2,0,0,0,0,0,0,0,0,0,192,1,192,1,32,0];v.extend(vec![0u8;802816]);File::create("o.tga").unwrap().write(&v);}

Це записує фактичний, читабельний файл o.tga, без будь-яких бібліотек або вбудованих функцій, використовуючи бінарний формат TGA за http://paulbourke.net/dataformats/tga/ , шляхом жорсткого кодування ширини та висоти у заголовку бінарного файлу.


-5 байт скоротити ім’я файлу, виправити розмір img, лише для ASCII


чи потрібно це надрукувати у файлі: P
лише для ASCII

чи потрібно навіть бути двовимірним? Я міг би просто сказати [0; 444 * 444 * 4]; і скажіть, що я створив прозоре зображення розміром 444x444. я роблю це цікавим.
яскравий

також aбуде працювати, як ім'я файлу, як ні. btw, це 448 * 448, а не 444 * 444, тому це недійсно
лише для ASCII

ой, ха-ха дякую
яскравий

щоб зробити його ще цікавішим, кодіруйте його довжиною: P (дані зображення повинні бути [255,0,0,0,0]6272 рази ( [0,0,0,0]128 разів, повторені 6272 рази). Тип зображення тоді 10не буде 2. Ще краще, кольорова карта для кодування коротшої довжини виконання ( 0,0,0,0-> 0)
ASCII лише

4

C # (Visual C # Interactive Compiler) , 48 байт

_=>(Enumerable.Repeat((0,0,0,0),200704),448,448)

Мабуть, [1D array of pixels, width, height]виходить нормально, так що виводиться кортеж `(IEumerable of pixels, width, height).

Спробуйте в Інтернеті!

C # (Visual C # Interactive Compiler) , 58 байт

_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)

Оригінальна відповідь, що повертається на матрицю.

Оскільки правила IO зображення дозволяють виводити матрицю значень RGB, це подання виводить матрицю значень RGBA, представлену кортежами з чотирма значеннями, причому всі 0.

Спробуйте в Інтернеті!


4

PHP, 192 байти

На жаль, PHP якось підходить до цього аспекту, оскільки для нього потрібна велика кількість коду. Але знову ж таки, де PHP не смокче.

$i=imagecreatetruecolor(448,448);imagesavealpha($i,true);$b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);imagepng($i,'i.png');header('Content-type: image/png');readfile('i.png');

Безголівки:

$i=imagecreatetruecolor(448,448);         // Create a new image with a set width
imagesavealpha($i,true);                  // Tell PHP to save alphachannels on that image
$b=imagecolorallocatealpha($i,0,0,0,127); // set the actual transparency values
imagefill($i,0,0,$b);                     // Fill the image with the color saved above
imagepng($i,'i.png');                     // Save the file as PNG
header('Content-type: image/png');        // Set the content type for the browser
readfile('i.png');                        // Read the file and output it

Очевидно, що якщо ви просто хочете створити його, не виводячи його, ви можете опустити команди header()і readfile(). Все-таки це ідіотсько довго.


1
З позитивної сторони, це одна з найбільш "читабельних" відповідей, яка вказує саме на те, що вона робить
яскравий

@donbright Насправді сенс кодогольфінгу Тхо. ; P Однак я не думаю, що іншого способу це зробити в PHP, якщо я просто не повторюю якийсь HTML.
НЕ РОБОТИ

@YUNOWORK Відповідно до правил, ви можете експортувати масив. Ви можете '<?php return '.var_export(array_fill(0,952576,0),1).';';експортувати масив у виконуваний спосіб. ви можете зробити php -f image.php > array.php, а десь ще можна зробити, $array = include('array.php');щоб мати знову корисний масив. Але я не знаю, чи справедлива вона, тому я даю вам її як альтернативу. Або навіть а <?=json_encode(array_fill(0,952576,0));.
Ісмаїл Мігель

До речі, trueможна замінити 1, щоб зберегти 3 байти. Читаючи документацію Росії imagepng(), ви можете просто зробити header('Content-type: image/png');imagepng($i);. Я вважаю , що ви також можете замінити $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);з imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));але не цитуйте мене на цьому.
Ісмаїл Мігель

Я щойно тестував і <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);створює прозоре зображення (109 байт). Автоматично надсилає зображення на браузер / стандартний вихід і все.
Ісмаїл Мігель

4

Python 3.7 - Імпорт PIL, 30 байт

Image.new("LA",[448]*2).show()

Це потребує імпорту, але має перевагу створення та відображення фактичного файлу зображення, а не абстрактного порожнього масиву.

Пояснення:

from PIL import Image
Image.new(    // create a new image
mode="LA"     // select LA colour mode, this is grey-scale plus an alpha channel
size=[448]*2  // size argument needs to be a 2D tuple, [448*2] is a better golf shot than (448,448)
color=0       // populates the image with the specified colour, helpfully preset to transparent
).show()      // display the image object

Image.show () відкриє зображення у вашій програмі зображень за замовчуванням. У моєму випадку це відкриває тимчасовий файл растрових зображень у Windows Photo Viewer, але результати можуть відрізнятися. Можливо, це обман, оскільки представлення растрових зображень не містить прозорості

Варіації ...

Image.new("LA",[448]*2)                 // 24 bytes but doesn't open image
Image.new("LA",[448]*2).show()          // 30 bytes, shows you a bitmap
Image.new("LA",[448]*2).save("x.png")   // 37 bytes, saves image to disk

1
Якщо ви не враховуєте імпорт, ви повинні вказати свою мову як Python 3.7 - PIL, імпортований або щось подібне. Крім того, у своєму поясненні ви використовуєте велику користь Import.
Джонатан

Спасибі, виправлено. Чи повинен я дати свою відповідь як 24 байти, 30 або 37?
П. Хопкінсон

Кількість байтів залежить від мови, якою ви користуєтесь. На даний момент ваше представлення займає 30 байт мовою Python 3 з імпортованим PIL . Якби ви писали в Python 3 , це, швидше за все, буде довше. Звичайно, якщо ви використовуєте мову Python 3 з усім імпортованим простором імен PIL , вашою відповіддю буде new("LA",[448]*2).show()26 байт.
Джонатан

Велике спасибі за подання коду, який я фактично можу запустити і який дає результат, який я можу перевірити!
Ануш

4

MATLAB, 31 байт

imwrite(nan(448),'.png','tr',1)

Створює матрицю NaNзначень 448 x 448 , а потім використовує imwriteдля збереження їх у імені PNG-файлу '.png'та встановлює прозорість у 1, роблячи його прозорим. Ім'я 'Transparency'параметра може бути скорочено до 'tr'MATLAB, що забезпечує часткове узгодження рядків імен параметрів до тих пір, поки скорочена версія є унікальною серед доступних параметрів.


чекай, чому 443 ??
Лише ASCII

@ ASCII Тільки
жирні

О_о це була шалено швидка відповідь
лише ASCII

4

dzaima / APL + APLP5 , 18 16 байт

{P5.img⍴∘0,⍨448}

Функція, яка виводить об’єкт зображення, який можна намалювати на екран (без ефекту) або перетворити назад у значення пікселів.

-2 завдяки ngn !


це працювало б? {P5.img⍴∘0,⍨448}
ngn

@ngn це справді, дякую!
dzaima


3

Червоний , 33 байти

a: make image![448x448 0.0.0.255]

За замовчуванням непрозорість до повністю непрозорого (0)

Ось як це використовувати / повна програма /:

Red [ ]
a: make image! [ 448x448 0.0.0.255 ]
view [ image a ]

3

MathGolf , 10 байт

º4♦7*_ß{.a

Спробуйте в Інтернеті!

Пояснення

º            push [0]
 4           push 4
  ♦7*        push 64*7=448
     _       duplicate TOS
      ß      wrap last three elements in array (stack is now [[0], [4, 448, 448]])
       {     foreach in [4, 448, 448]
        .    repeat TOS x times
         a   wrap TOS in array

Цей спосіб економить 1 байт порівняно зі "стандартним" ♦7*_4º*a*a*


3

JavaScript (Node.js) , 39 байт

_=>[w=448,w,Array(w*w).fill([0,0,0,0])]

Мабуть, [height, width, 1d array of RGBA values]виходить нормально.

Спробуйте в Інтернеті!

-3 байти завдяки @Arnauld


недійсне ... це список рядків
лише ASCII

Також ви можете вивести[1D array of pixels, width, height]
лише для ASCII

@ ASCII Виправлено лише зараз
втілення невігластва

41 байт або 39 байт, якщо ми можемо вивести [width, height, array].
Арнольд

3

SmileBASIC, 27 байт

DIM A[448,448]SAVE"DAT:I",A

Зберігає двовимірний масив 448x448, заповнений 0, у файл з назвою DAT:I(Що коротше, ніж визначення функції, яка якось повертає масив)

Стандартні формати (використовувані всіма графічними функціями) для кольорів у SmileBASIC - це 32-бітний ARGB і 16-бітний 5551 RGBA, і 0в обох вони прозорі.


Що робить це прозорим замість чорного?
труба

1
Кольори в 4- ARGBбайтному форматі (зазвичай використовується в Smilebasic), так 0x00000000це Альфа = 0, Червоний = 0, Зелений = 0, Синій = 0. Чорний буде 0xFF000000.
12Me21

kudos для SmileBasic для використання формату зображення RAW lol
яскравий

Я б скаржився на технічність, що це не формат зображення, оскільки це не так, GRPале я відпущу його, оскільки фактичні дані, що зберігаються, однакові.
равлик_

@snail_ Це просто виведення матриці пікселів, а не використання певного формату зображення.
12Me21

3

SCPL для ярликів iOS , 98 байт

Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448

Знімок екрана

Ярлик посилання iCloud

Візьме 1х1 прозорий gif, закодований як base64, і змінює його розмір


це було ... дивно ... що таке посилання icloud, на який я щойно пішов? ?
яскравий

@donbright, коли ви ділитесь ярликом із програми швидкого доступу, це посилання
pfg

2

Jstx , 24 байти

♪☺ü@/øP♦£Q)%)£Q◄úæD)%)£Q

Пояснення

♪☺ü@ # Push literal 448
/    # Store the first stack value in the a register.
ø    # Push literal 0
P    # Push four copies of the first stack value.
♦    # Push literal 4
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.
)    # Push the value contained in the a register.
%    # Push the second stack value the absolute value of the first stack value times.
)    # Push the value contained in the a register.
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.
◄úæ  # Push literal \n
D    # Push the sum of the second and first stack values.
)    # Push the value contained in the a register.
%    # Push the second stack value the absolute value of the first stack value times.
)    # Push the value contained in the a register.
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.

Спробуйте в Інтернеті!




2

C ++, SFML, 131 байт

#include <SFML/Graphics.hpp>
void f(){sf::Image i;i.create(448,448);i.createMaskFromColor(sf::Color::Black);i.saveToFile("a.png");}

2

JavaScript + HTML, 56 байт

location=C.toDataURL()
<canvas id=C width=448 height=448>

Якщо натиснути "Виконати фрагмент коду", буде генеровано прозорий PNG розміром 448x448 в IFRAME. Потім можете клацнути правою кнопкою миші «Зберегти зображення як ...», щоб завантажити його на свій комп’ютер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.