ড্রাগনের ইমেজ


23

আমি একটি বর্গক্ষেত্র থেকে তৈরি দুটি ড্রাগন কার্ভের একটি দুর্দান্ত জিআইএফ দেখেছি এবং ভাবলাম যে আমরা যদি অন্য একটি বেস চিত্র থেকে শুরু করি তবে কী হবে happen আমি এটি করার জন্য একটি প্রোগ্রাম লিখেছি।

                                       

এটি এত শীতল যে আমি ভেবেছিলাম চ্যালেঞ্জ হিসাবে এটি করা মজাদার হবে।

কার্য

আপনি একটি প্রান্ত দৈর্ঘ্য সহ একটি বর্গক্ষেত্র চিত্র নেবেন যা 2 পাওয়ার (4 এর বেশি)।

এই চিত্রটি তৈরি করার জন্য আপনার চিত্রটি সমান আকারের 4 টি উল্লম্ব ব্যান্ডগুলিতে বিভক্ত করে এবং বিপরীত দিকের চিত্রের আকারের 8 ম সংলগ্ন ব্যান্ডগুলি স্থানান্তরিত করা উচিত (স্থানান্তরিত ব্যান্ডগুলি অন্যদিকে প্রায় আবদ্ধ হওয়া উচিত)। তারপরে প্রতিবার এই চিত্রটি দ্বিগুণ বিভাগে বিভক্ত করা এবং আগের সময়ের চেয়ে অর্ধেক স্থান পরিবর্তন করা উচিত process প্রতিটি পুনরাবৃত্তির আপনার উলম্ব এবং অনুভূমিক শিফটের মধ্যে বিকল্প হওয়া উচিত। শিফ্টটি আপনাকে পিক্সেলের ভগ্নাংশের সংখ্যার দ্বারা শিফট করার প্রয়োজন না হওয়াতে পুনরাবৃত্তি করা উচিত (এটি সর্বদা 1/2 হবে) আপনি যে বিন্দুতে সম্পন্ন করেছেন।

বাম দিক থেকে উলম্বভাবে বিজোড় সংখ্যাযুক্ত ব্যান্ডগুলি স্থানান্তরিত করার সময় (শূন্য-সূচকযুক্ত) এমনকি শিফ্ট আপ করার সময় নীচে স্থানান্তরিত হওয়া উচিত। উপরের দিক থেকে অনুভূমিক বিজোড় সংখ্যাযুক্ত ব্যান্ডগুলি স্থানান্তরিত করার সময় বাম দিকে সরে যেতে হবে এবং এমনকী সংখ্যাযুক্ত ব্যান্ডগুলি ডানদিকে সরে যেতে হবে।

আপনার কেবলমাত্র আউটপুট / রূপান্তরটির শেষ ফলাফলটি প্রদর্শন করতে হবে, জিআইএফের মতো সমস্ত মধ্যবর্তী পদক্ষেপ নয়।

এটি তাই বাইট হিসাবে পরিমাপক হিসাবে আপনার উত্স কোডের দৈর্ঘ্য হ্রাস করা লক্ষ্য।

উদাহরণ দিয়ে কাজ করেছেন

ফ্রেম দ্বারা পৃষ্ঠার ফ্রেমের শীর্ষে প্রদর্শিত ক্যাট জিআইএফের মাধ্যমে কাজ করব।

শুরুর চিত্রটি এখানে:

এই চিত্রটি 512 বাই 512 পিক্সেল। প্রতিটি ব্যান্ডটি 1/8 চিত্রের আকারের (64 পিক্সেল) উল্লম্বভাবে শুরু এবং স্থানান্তর করতে আমরা এটি 4 টি ব্যান্ডে ভেঙে দেব।

আমরা এখন এটিকে দ্বিগুণ ব্যান্ডের (8 টি ব্যান্ড) বিভক্ত করব এবং এটি শেষ সময়ের (32 পিক্সেল) হিসাবে অর্ধেক স্থানান্তর করব। এবার আমরা অনুভূমিকভাবে স্থানান্তরিত করব।

আমরা এখন 16 টি ব্যান্ডে বিভক্ত হয়ে প্রতিটি ব্যান্ডকে 16 পিক্সেল দ্বারা স্থানান্তর করব vert

32 ব্যান্ড, 8 পিক্সেল, অনুভূমিক শিফট

64 ব্যান্ড, 4 পিক্সেল, উল্লম্ব শিফট।

128 ব্যান্ড, 2 পিক্সেল, অনুভূমিক শিফট।

256 ব্যান্ড, 1 পিক্সেল, উল্লম্ব শিফট।

যেহেতু পরের শিফটে আমাদের প্রতিটি ব্যান্ডকে আধ পিক্সেল দিয়ে সরানো দরকার আমরা এই মুহুর্তে থামব এবং ফলাফলটি আউটপুট দেব।

পরীক্ষার মামলা

আমার একটি কার্যনির্বাহী স্ক্রিপ্ট রয়েছে যা এই চিত্রগুলি তৈরি করতে পারে তাই আমি ভেবেছিলাম যে আমি আপনাকে ছেলেদের পরীক্ষার ক্ষেত্রে চিত্রগুলি বেছে নিতে দেব। সুতরাং আপনার যদি এমন একটি বর্গক্ষেত্র চিত্র থাকে যা 2 প্রশস্ত একটি শক্তি যা আপনি দেখতে চান ড্রাগন হয়ে গেছে। এটি আমার কাছে নির্দ্বিধায় প্রেরণ করুন এবং আমি এটি একটি পরীক্ষার কেস করব।

পরীক্ষা 1 আউট 1

আপনার একটি সরল সাদা বা শক্ত কালো চিত্রেরও পরীক্ষা করা উচিত যাতে আপনি নির্ধারণ করতে পারেন পিক্সেলগুলি অদৃশ্য হচ্ছে কি না।



2
ড্রাগনের ছবি? আহেম
কনর ও'ব্রায়ান

এটি বন্ধ হয়ে যাওয়ার মূল কারণটি আমার মনে হয়, এটি চিত্রটি কতবার স্থানান্তরিত করা উচিত তা অস্পষ্ট। আপনি যদি শিফটটি কতবার হওয়া উচিত তা নির্দিষ্ট করে থাকেন, তবে আমার মনে হয় এটি ঠিক থাকবে। আর কিছুই আমার কাছে অস্পষ্ট নয়।
কমরেড স্পার্কলপনি

1
@ লুইস মেন্দো এর **Start** by shifting one 8th of the size of the imageপরে repeat ... each time splitting the image into twice as many divisions and shifting half as far as the previous timeপ্রথমবারটি হবে 1/8, দ্বিতীয় 1/16। তৃতীয় 1/32 পিক্সেল সংখ্যা আপেক্ষিক না হওয়া পর্যন্ত। আমি এই সম্পর্কে অস্পষ্ট দেখতে পাচ্ছি না।
স্তর নদী সেন্ট

কার্ট ম্যানেজার লোকেরা এটি পাচ্ছে না বলে আমি মনে করি একটি সাধারণ বর্গক্ষেত্রের উদাহরণযুক্ত লিঙ্কযুক্ত উদাহরণের প্রথম কয়েকটি স্থিতিশীল ফ্রেম দেখানো একটি কাজের উদাহরণ অ্যানিমেশনের চেয়ে অনুসরণ করা সহজতর হতে পারে। (বিদ্যমান বিড়াল অ্যানিমেশনটি এটি দুর্দান্ত হিসাবে ছেড়ে দিন, তবে এটি ধারণার সাথে উপলব্ধি করতে বরং ব্যস্ত))
লেভেল রিভার সেন্ট

উত্তর:


11

ম্যাটল্যাব, 237 বাইট

function A=r(A);n=size(A,1);p=@(a,v)permute(a,[v,3]);k=n/8;v=1:2;while k>=1;b=mod(0:n-1,4*k)<2*k;x=find(b);y=find(~b);c=[k+1:n,1:k;n-k+1:n,1:n-k];A=p(A,v);c=c(3-v,:);A(x,:,:)=A(x,c(1,:),:);A(y,:,:)=A(y,c(2,:),:);A=p(A,v);k=k/2;v=3-v;end

আমি চশমা থেকে পদ্ধতিটি বুঝতে পারি নি, তবে চিত্রটির সাহায্যে এটি কাজ করে বলে অনুমান করার জন্য কিছুটা সময় নিয়েছিল।


7

পাইথন 2, 317 313 304 298

from PIL import Image
I=Image.open(input())
w,h=I.size
b,p,q,s=4,w/8,1,1
while p>1:o=I.copy();o.paste(I,[(w-p,0),(0,w-p)][q==1]);o.paste(I,[(p-w,0),(0,p-w)][q==1]);q*=-1;x=0;exec'o.paste(I.crop([(0,x,w,x+p*2),(x,0,x+p*2,w)][s%2]),[(q*p,x),(x,q*p)][s%2]);q*=-1;x+=p*2;'*b;p/=2;I=o;s+=1;b*=2
o.show()

1
আমাদের সাইটের বিধি অনুসারে আপনি ব্যবহার করতে পারেন input()এবং এটির পরিবর্তে ইনপুট পাওয়ার জন্য স্ট্রিং হিসাবে পাস হওয়ার আশা করতে পারেন raw_input()
গম উইজার্ড

2

গণিত, 177 বাইট tes

এটি ধীর এবং পুরো গল্ফ হয় না।

r=ImageRotate;r[#2,Pi/2(3-#)]&@@Nest[{#+1,ImageAssemble@MapIndexed[RotateLeft[#,(-1)^#2]&]@ImagePartition[r@#2,Reverse@d/2^{#,#-1}]}&@@#&,{3,#},Log2@Min[d=ImageDimensions@#]-2]&

এই লেনা:

লেনা

এই লেনা ড্রাগন:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.