ছুতে-এ-Pearing


16

এখানে নাশপাতি এবং স্টিলের গুটির পাঁচটি চিত্র রয়েছে :

এ: বি: সি: ডি: ই:নাশপাতি এ নাশপাতি খ নাশপাতি সি নাশপাতি ডি নাশপাতি E

এগুলি কেবল থাম্বনেইলস, পূর্ণ আকারের জন্য তাদের ক্লিক করুন!

(আমি এটি আলগোডো দিয়ে তৈরি করেছি ))

এই শ্রেণীর চিত্রগুলির সর্বদা নিম্নলিখিত বৈশিষ্ট্য থাকে:

  1. এগুলি সর্বদা সাদা ব্যাকগ্রাউন্ড সহ 400 × 400 পিক্সেল থাকে। (এসই চিত্রগুলি ক্ষতিকারকভাবে সংকুচিত হওয়ায় এটি একেবারে সাদা হতে পারে না))
  2. তাদের 1 থেকে 4 অভিন্ন নাশপাতি রয়েছে, প্রতিটি ঘোরানো হয় এবং যে কোনও উপায়ে অবস্থিত (প্রায়)।
  3. তাদের কাছে একটি উল্লম্ব ইস্পাত পাট রয়েছে যা চিত্রের নীচে পৌঁছায়।
  4. চুটের নীচে ছাড়াও চুট এবং পিয়ার বাউন্ডিং বাক্সগুলি ( বাউন্ডিং বাক্স উদাহরণ ) কখনও চিত্রের সীমানার বাইরে স্পর্শ করে না go
  5. নাশপাতিগুলির সীমাবদ্ধ বাক্সগুলি কখনই একে অপরকে ওভারল্যাপ করে না এবং চুটে ওভারল্যাপ করে না।
  6. নাশপাতিগুলি বি , সি এবং ডি এর মতো চুটের opালু অংশের নীচে থাকতে পারে । (সুতরাং চুটের বাউন্ডিং বাক্সটি একটি নাশপাতিটির বাউন্ডিং বাক্সটি ওভারল্যাপ করে।
  7. নাশপাতিগুলির সমস্ত সীমানা বাক্সের উপরে নিখরচায় ফিট করার জন্য পর্যাপ্ত জায়গা থাকায় কুটীর কোনও অনুভূমিক এবং উল্লম্ব অবস্থান থাকতে পারে (কোনও "সবে ফিট" কেস পরীক্ষা করা হবে না) এবং কলামের অংশটি দৃশ্যমান থাকে is

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম লিখুন যা একই জায়গায় ছুট দিয়ে আরও 400 × 400 চিত্র আউটপুট করে, তবে নাশপাতিগুলি স্থির করে রাখে যাতে এগুলি সমস্ত আবদ্ধের উপরে থাকে (যাতে তারা এতে পড়ে এবং রসালো হয়ে ওঠে এবং কী করতে পারে না)।

আউটপুট চিত্রের জন্য প্রয়োজনীয়তাগুলি হ'ল:

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

পাঁচটি নমুনা চিত্রের জন্য বৈধ আউটপুটগুলির উদাহরণ এখানে রয়েছে:

এ: বি: সি: ডি: ই:আউট আ আউট বি আউট গ আউট ডি আউট ডি

এগুলি কেবল থাম্বনেইলস, পূর্ণ আকারের জন্য তাদের ক্লিক করুন!

মনে রাখবেন যে ই এর জন্য ইনপুট চিত্রটি ইতিমধ্যে একটি বৈধ আউটপুট ছিল, তবে প্রযুক্তিগতভাবে প্রয়োজনীয় না হলে নাশপাতিগুলি পুনরায় সাজানো ঠিক is

বিস্তারিত

  • স্টিডিন / কমান্ড লাইন / ফাংশন কলের মাধ্যমে চিত্রের ফাইলের নাম বা কাঁচা চিত্রের ডেটা নিন।
  • আপনার পছন্দের নাম সহ কোনও ফাইলে চিত্র আউটপুট করুন বা কাঁচা চিত্র ফাইল ডেটা স্টাডআউট বা কেবল চিত্র প্রদর্শন করতে পারেন।
  • যে কোনও সাধারণ লসলেস ইমেজ ফাইল ফর্ম্যাট ব্যবহার করা যেতে পারে।
  • গ্রাফিক্স এবং চিত্র গ্রন্থাগার ব্যবহার করা যেতে পারে।
  • এখানে এবং সেখানে কয়েকটি ভুল পিক্সেল (ক্ষয়ক্ষতি বা কোনও কিছুর কারণে) বড় কথা নয়। যদি আমি দৃষ্টিগোচরভাবে কিছু ভুল বলতে না পারি তবে সম্ভবত এটি ঠিক আছে।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার সর্বোচ্চ ভোট প্রাপ্ত পোস্ট।


যেহেতু আমার কাছে খান একাডেমি অ্যাকাউন্ট রয়েছে এবং এটি সমাধান করার জন্য এটি নিখুঁত বলে মনে হচ্ছে, আমি কি এটি খান একাডেমিতে সমাধান করতে পারি? কেবল একটি জটিলতা রয়েছে: বাহ্যিক চিত্র অনুমোদিত নয়। সৌভাগ্য যে আমি মাধ্যমে ইমেজ চালাতে পারেন এই তাদের খান একাডেমি বান্ধব তথ্য রূপান্তর করবে। এটা কি গ্রহণযোগ্য?
বব দ্য অসাধারণ

@ BobTheAwesome তাই আপনি একটি জাভাস্ক্রিপ্ট উত্তর পোস্ট করতে চান? এটি দুর্দান্ত, যদিও এটি 400x400 চিত্রের ইনপুট এবং আউটপুট দেওয়ার কথা। আপনি কেএ দিয়ে এটি কীভাবে করেছিলেন তা দেখানোর জন্য আপনি আপনার কাজ পোস্ট করতে পারেন তবে এটি 400x400 চিত্রগুলিতে কাজ না করলে আমি বিজয়ী হিসাবে গ্রহণ করতে পারি না।
ক্যালভিনের শখ

একটি নিখুঁত কাকতালীয়; খান একাডেমির জাভাস্ক্রিপ্ট + পিজেএস এর জন্য 400x400px ক্যানভাসের একটি ডিফল্ট থাকতে পারে।
ববTheAwesome

কোন !! ইমেজেনেটর 400x400 চিত্রগুলিতে সুপার ধীর গতির !!
বব দ্য আশ্চর্য

উত্তর:


6

পাইথন 2.7, 636 বাইট by

import sys;from PIL.Image import*
_,m,R,I,p,H=255,400,range,open(sys.argv[1]).convert('RGB'),[],0
w,h=I.size;W,A,P,L=(_,_,_),[(x,y)for x in R(w)for y in R(h)],I.load(),I.copy()
try:
 while 1:
    s,x,y,X,Y=[[a for a in A if P[a][0]<50][0]],m,m,0,0
    while s:c=(a,b)=s.pop();x,y,X,Y=min(x,a),min(y,b),max(X,a),max(Y,b);P[c]=W;s+=[n for n in[(a+1,b),(a,b+1),(a-1,b),(a,b-1)]if n in A and P[n]!=W]
    p+=[((x,y,X,Y),X-x,Y-y)]
except:0
def G(a):r,g,b=P[a];return r==g==b and r<_
g=[a for a in A if G(a)]
(z,t),W=g[0],max([x for x,y in g]);t-=1
for r,w,h in p:
 if z+w>W:z,_=g[0];t-=H;H=0
 I.paste(L.crop(r),(z,t-h,z+w,t));z+=w;H=max(h,H)
I.show()

সম্পাদনা করুন : এখন চিত্রটি পরিচালনা করার আগে আলফা চ্যানেলটি সরিয়ে দেয়, এবং প্রয়োজনে কয়েকটি সারিতে নাশপাতিগুলি সারিবদ্ধ করে তোলে

উত্পাদিত চিত্র:

একজন বি সি ডি এবং ই

এবং উল্লম্ব নাশপাতি সহ (আমার কম্পিউটারে প্রায় 3 মিনিট সময় লাগে):

পরীক্ষা ক্ষেত্রে উল্লম্ব


1
ছবিগুলি কি আগের / আফটারগুলির আগে? যদি তা হয় তবে আমি মনে করি আপনি বিই এর জন্য
ভুলগুলি নিয়েছেন

বামদিকে ইনপুট চিত্র এবং ডানদিকে আউটপুট চিত্রগুলি ... উদ্ধার এবং অনুলিপি-পেস্ট করার কারণে এগুলি পিক্সেল-নিখুঁত নয়, আমি স্ক্রিপ্টটি কীভাবে কাজ করে তার ইঙ্গিত দেওয়ার জন্য আমি এগুলি রেখেছি ..
ডাইটার


আসলে নয় ... দুটি কারণে: এটি একটি অসীম লুপের মধ্যে পড়ে কারণ এই নির্দিষ্ট চিত্রটির একটি আলফা চ্যানেল রয়েছে -> স্ক্রিপ্ট ঠিক করা যাতে এটি চিত্রটিকে প্রথমে রূপান্তরিত করে। অন্যান্য কারণের কারণে আমি কোডটি সরিয়ে দিয়েছি যা বেশ কয়েকটি সারিতে নাশপাতিগুলিকে সারিবদ্ধ করে -> এটিকে পিছনে ফেলে
ডাইটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.