এটি একটি সহজ চ্যালেঞ্জ।
কাজটি এমন কোড লেখা যা 100% স্বচ্ছতার সাথে 448 * 448 বর্গ চিত্রের আউটপুট দেয়। আউটপুট মানক চিত্র নিয়ম অনুসরণ করা উচিত ।
এটি একটি সহজ চ্যালেঞ্জ।
কাজটি এমন কোড লেখা যা 100% স্বচ্ছতার সাথে 448 * 448 বর্গ চিত্রের আউটপুট দেয়। আউটপুট মানক চিত্র নিয়ম অনুসরণ করা উচিত ।
উত্তর:
convert -size 448x448 xc:none a.png
এটি কি অনুমোদিত?
\windows\system32
)।
convert
সরঞ্জামের সাথে চালিত হচ্ছে না , কারণ নামটি সিস্টেমের ইউটিলিটির সাথে সংঘর্ষে লিপ্ত। আপনি magick convert ...
তার পরিবর্তে চালান ।
convert
অংশ, সুতরাং এটিকে তার নিজস্ব ভাষা বলা কার্যকর হবে না।
ImageMagick Convert
। এটি সম্পর্কে একটি মেটা খোলার উপযুক্ত হতে পারে
পুরো প্রোগ্রাম। 448 বাই 448-বাই -4 অ্যারে 448 বাই 448 আরজিবিএ চিত্র প্রতিনিধিত্ব করে মুদ্রণ করে।
448 448 4⍴0
⍴
হয় দ eshape
448 448
?
802832p0
এটিকে 4 দিয়ে গুণ করবেন না এবং উত্তর হিসাবে পেয়েছেন?
f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());
রিটার্নস একটি PNG চিত্র একটি ডাটা যেমন এনকোড: যেমন সেটিং জন্য URL উপযুক্ত যেমন src
একটি এর HTMLImageElement
। সম্পাদনা করুন: @ শাগগির জন্য 3 বাইট সংরক্ষণ এবং @ আরনাউল্ডকে আরও 2 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে
document.createElement`canvas`
আরও 2 বাইট সাশ্রয় করা উচিত।
d=document
শীর্ষে কিছু যুক্ত করতে এবং এর সাথে প্রতিস্থাপন document
করতে পারেন d
? ~ 5 টি অক্ষর সংরক্ষণ করা উচিত।
document.write
স্ট্যাক স্নিপেটের কেবল একটি অংশ, ফাংশনের অংশ নয়, সুতরাং এটি কোনওভাবেই গণনা করা হয় না।
v->new int[448][448][4]
448x448x4 0s এর 3 ডি অ্যারে প্রদান করে।
ব্যাখ্যা:
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]
0 এর একটি 448x448 ম্যাট্রিক্স প্রদান করে।
জাভাতে, আরজিবিএ মানগুলি একটি পূর্ণসংখ্যার দ্বারা উপস্থাপিত হতে পারে । হেক্সাডেসিমাল যথাক্রমে লাল, সবুজ, নীল এবং আলফার জন্য 0x00000000
উপস্থাপন করবে 00
। এবং 0x00000000
পূর্ণসংখ্যার সমান 0
।
v->new int[448][448]
? কারণ একটি রঙ জাভাতে একটি পূর্ণসংখ্যা (আরজিবিএ) দিয়ে উপস্থাপন করা যেতে পারে।
0-255
একটি বৈধ আরবিজিএ মান? আমি জানি এটি একটি বৈধ আরজিবি মান, তবে আরজিবিএও? আমি জাভাতে প্রায় কখনওই চিত্রগুলি ব্যবহার করি না, তাই এগুলির সাথে খুব বেশি পরিচিত না। আমি কেবলমাত্র আমার 4 টি অভ্যন্তরীণ 0 গুলি অন্যান্য উত্তরের উপর ভিত্তি করে তৈরি করেছি।
0x00000000
যা কোনও ইন্টারে ফিট করে। প্রথম দুটি হেক্স সংখ্যা হ'ল আলফা, পরের 2 টি লাল, পরের 2 টি সবুজ, চূড়ান্ত 2 টি নীল। সুতরাং আপনার কেবলমাত্র একটি পূর্ণসংখ্যার প্রয়োজন। বাফার্ডআইমেজ দেখুন T TYPE_INT_ARGB । আপনার 4 টি মান রয়েছে, একটি সংখ্যার সংক্ষিপ্তসার হিসাবে। এবং 0x00000000
সমান 0
।
চিত্র s
, 101 বাইট সহ কোনও ফাইলে সংরক্ষণ করা
s->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",new java.io.File(s))
এটি অনলাইনে চেষ্টা করে দেখুন ... কোনওভাবে
বাফার্ডআইমেজ ফিরিয়ে দেওয়া হচ্ছে, 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)
স্টোনআউটে পিএনজি ডাম্পিং, 92 বাইট (কেবলমাত্র ASCII- ধন্যবাদ!)
v->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",System.out)
এটি অনলাইন চেষ্টা করুন!
দ্বিতীয় এবং চতুর্থ সমাধানগুলির জন্য একটি বাইট সংরক্ষণ করার জন্য কেভিনকে ধন্যবাদ!
()->
আপনার উত্তর দুটিতে গল্ফ করতে পারেন v->
, যেহেতু এটি খালি অব্যবহৃত ইনপুট (যার জন্য আমি ব্যক্তিগতভাবে ব্যবহার করি Void
) রাখার অনুমতি দেওয়া আছে । আপনার শেষ টিআইও এর পরিবর্তে এটি হবে ।
448LDδ4Å0
বা বিকল্পভাবে:
¾4Ž1ÂDиии
-2 ধন্যবাদ বাইট @Emigna ।
-১ বাইট @ আদনানকে ধন্যবাদ ।
0s এর একটি 448x448x4 3 ডি তালিকা আউটপুট দেয়।
ব্যাখ্যা:
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
।
[[[0]*4]*488]*488
প্রিন্ট সহ:
print[[[0]*4]*488]*488
পরিবর্তনশীল হিসাবে:
x=[[[0]*4]*488]*488
আরজিবিএর অ্যারে যেমন অনুমোদিত, তেমনই আমি উপরে তৈরি করেছি, সমস্ত 0 এর ডিফল্ট - অর্থ কালো, তবে সম্পূর্ণ স্বচ্ছ।
[0]*802816
এটিও কাজ করা উচিত।
448ṁ4¬¥þ
একটি নীলাদিক লিঙ্ক যা 448 বাই 448 আরজিবিএ অ্যারে স্বচ্ছ কালো পিক্সেলের অ্যারে দেয়।
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]
এটা কি বৈধ?
<svg height=448 width=448
এটি পরীক্ষা করুন ( background
CSS এর সাথে প্রয়োগ করা হয়েছে যাতে আপনি এটি "দেখতে" পারেন)
<svg height=448 width=448
একটি এইচটিএমএল ফাইলে লিখন এবং এটি খোলার ফলে একটি খালি পাওয়া যায় <body>
। যাইহোক , 1 বাইটের দণ্ডের সাথে, আপনি যদি লিখেন তবে <svg height=448 width=448>
এটি <body>
একটি খালি এসভিজি চিত্র সহ একটি উত্পাদন করে।
>
অর্থ এই যে সত্যই, বৈধ, যতক্ষণ মার্কআপ যায়।
<!DOCTYPE html>
, <html>
, <head>
, <style>
, <script>
এবং সবকিছু যায় <body>
। কাঙ্ক্ষিত আউটপুট উত্পাদন করতে অতিরিক্ত কিছু কোডের প্রয়োজন। আপনি দেখতে পাচ্ছেন যে ফলস্বরূপ কোডটি পার্স করা হয়েছে <svg height="448" width="448" < body></svg>
কারণ এটি <svg height=448 width=448 </body>
আইফ্রেমে লিখেছে । এর মতো, আমি এখনও বিশ্বাস করি এটি বৈধ নয়।
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 ফাইল লিখছেন, কোন লাইব্রেরীর ছাড়া বা ফাংশন builtin প্রতি TGA বাইনারি বিন্যাস ব্যবহার http://paulbourke.net/dataformats/tga/ , হার্ড প্রস্থ এবং বাইনারি ফাইল হেডার মধ্যে উচ্চতা কোডিং দ্বারা।
-5 বাইট সংক্ষিপ্ত ফাইলের নাম, img আকার ঠিক করুন, কেবলমাত্র ASCII
a
ফাইলের নাম হিসাবে কাজ তাই না would হবে। বিটিডব্লিউ এটি 448 * 448 নয় 444 * 444 তাই এটি অবৈধ
[255,0,0,0,0]
6272 বার ( [0,0,0,0]
128 বার পুনরাবৃত্তি 6272 বার) ইমেজ লিখে হবে। 10
না 2
আরও ভাল, খাটো রান দৈর্ঘ্য এনকোডিং (জন্য colormap। 0,0,0,0
-> 0
)
_=>(Enumerable.Repeat((0,0,0,0),200704),448,448)
দৃশ্যত outputting [1D array of pixels, width, height]
, ঠিক আছে তাই এই আউটপুট `(পিক্সেলে, প্রস্থ এর IEnumerable, উচ্চতা) এর tuple।
_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)
আসল ম্যাট্রিক্সের উত্তর।
যেহেতু চিত্র আইও নিয়মগুলি আউটপুটটিকে আরজিবি মানগুলির ম্যাট্রিক্স হিসাবে অনুমতি দেয়, এই জমাটি আরজিবিএ মানগুলির একটি ম্যাট্রিক্সকে আউটপুট দেয়, চারটি মানযুক্ত টিউপস দ্বারা প্রতিনিধিত্ব করা হয়, সবগুলি 0 হয়।
দুর্ভাগ্যক্রমে, পিএইচপি কিন্ডা সেই দিকটিতে সফল হয় কারণ এটির জন্য পুরোপুরি কোড প্রয়োজন। তবে আবার, যেখানে পিএইচপি স্তন্যপান করে না।
$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');
Ungolfed:
$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()
আদেশগুলি বাদ দিতে পারেন । তবুও, এটি বোকামি দীর্ঘ।
'<?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
। এর ডকুমেন্টেশন পড়া 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 বাইট)। ব্রাউজার / মানক আউটপুট এবং সমস্ত কিছুতে স্বয়ংক্রিয়ভাবে চিত্রটি প্রেরণ করে।
পাইথন 3.7 - পিআইএল আমদানি করা, 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.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
Import
।
new("LA",[448]*2).show()
26 বাইট হবে।
imwrite(nan(448),'.png','tr',1)
একটি 448 x 448 NaN
মানগুলির ম্যাট্রিক্স তৈরি করে এবং তারপরে imwrite
নামকরা পিএনজি ফাইলে সেভ করতে ব্যবহার করে '.png'
এবং স্বচ্ছ করে তোলে 1 এ স্বচ্ছতা সেট করে। 'Transparency'
প্যারামিটার নাম থেকে সংক্ষেপিত করা সক্ষম হয় 'tr'
যেমন ম্যাটল্যাব যতদিন সংক্ষিপ্ত সংস্করণ উপলব্ধ পরামিতি মধ্যে অদ্বিতীয় হিসাবে পরামিতি নামের আংশিক স্ট্রিং মিলের জন্য অনুমতি দেয়।
{P5.img⍴∘0,⍨448}
এমন ফাংশন যা কোনও চিত্র অবজেক্টকে আউটপুট করে যা স্ক্রিনে আঁকতে পারে (কোনও প্রভাব ছাড়াই) বা পিক্সেল মানগুলিতে ফিরে রূপান্তর করতে পারে।
-2 ধন্যবাদ এনএনজি !
{P5.img⍴∘0,⍨448}
x4Wẋ448Ɗ⁺
একটি 448x448x4 অ্যারে আউটপুট করে
একটি বাইট সংরক্ষণ করার জন্য @ জোনাথন অ্যালানকে ধন্যবাদ।
2¡
হতে পারে⁺
a: make image![448x448 0.0.0.255]
অস্বচ্ছতা সম্পূর্ণরূপে অস্বচ্ছ (0)
এটি কীভাবে এটি ব্যবহার করবেন / একটি সম্পূর্ণ প্রোগ্রাম /:
Red [ ]
a: make image! [ 448x448 0.0.0.255 ]
view [ image a ]
º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*
_=>[w=448,w,Array(w*w).fill([0,0,0,0])]
দৃশ্যত আউটপুটিং [height, width, 1d array of RGBA values]
ঠিক আছে।
-3 বাইটস @ আরনাউল্ডকে ধন্যবাদ
[1D array of pixels, width, height]
DIM A[448,448]SAVE"DAT:I",A
নামের একটি ফাইলের সাথে 0s ভরা একটি 2-মাত্রিক 448x448 অ্যারে সংরক্ষণ করে DAT:I
(যা কোনওভাবে অ্যারে ফিরিয়ে দেয় এমন ফাংশন সংজ্ঞায়নের চেয়ে সংক্ষিপ্ত)
স্মাইলব্যাসিকের রঙগুলির জন্য স্ট্যান্ডার্ড ফর্ম্যাটগুলি (সমস্ত গ্রাফিক্স ফাংশন দ্বারা ব্যবহৃত) 32 বিট এআরজিবি এবং 16 বিট 5551 আরজিবিএ এবং 0
উভয় ক্ষেত্রেই স্বচ্ছ।
ARGB
বিন্যাসে (সাধারণত স্মাইলব্যাসিক ব্যবহৃত হয়), তাই 0x00000000
আলফা = 0, লাল = 0, সবুজ = 0, নীল = 0 কালো হবে 0xFF000000
।
GRP
করব যে এটি কোনও চিত্রের ফর্ম্যাট নয় কারণ এটি নয় তবে আসল তথ্য সমান হওয়ায় এটি ছেড়ে দেব।
Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448
বেস 1 হিসাবে 1x1 স্বচ্ছ জিআইফ এনকোডেড করে এবং এর আকার পরিবর্তন করে
♪☺ü@/ø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.
#include <SFML/Graphics.hpp>
void f(){sf::Image i;i.create(448,448);i.createMaskFromColor(sf::Color::Black);i.saveToFile("a.png");}
"রান কোড স্নিপেট" ক্লিক করা একটি আইফ্রেমে একটি 448x448 স্বচ্ছ পিএনজি উত্পন্ন করবে। এরপরে এটি আপনার কম্পিউটারে ডাউনলোড করতে "চিত্রটি সংরক্ষণ করুন ..." তে ডান ক্লিক করতে পারেন।