আপনাকে ইনপুট হিসাবে একটি গ্রেস্কেল চিত্র দেওয়া হয়েছে। আপনার কাজ হ'ল কনওয়ের গেম অফ লাইফে এমন একটি স্ট্যাটিক বা লুপিং প্যাটার্ন সন্ধান করা যা ইনপুট চিত্রটিকে যতটা সম্ভব ঘনিষ্ঠভাবে সাদৃশ্যযুক্ত।
আপনার আউটপুট হয় স্থির চিত্র বা কিছু ফর্ম্যাটে লুপিং অ্যানিমেশন হতে পারে যা জিআইএফ এ রূপান্তরিত হতে পারে। আউটপুট চিত্রের মাত্রাগুলি ইনপুটটির মতো হওয়া উচিত এবং এতে কেবল কালো এবং সাদা পিক্সেল থাকতে হবে।
যদি আউটপুটটি অ্যানিমেশন হয় তবে প্রতিটি ফ্রেম অবশ্যই গেম অফ লাইফ নিয়ম অনুসারে পূর্ববর্তী একটি থেকে পিক্সেল প্রতি একক সেল তৈরি করতে হবে। অ্যানিমেশনটি অবশ্যই লুপ করবে, একই ফ্রেমে প্রথম ফ্রেমটি একই বিধি দ্বারা উত্পন্ন করার সাথে।
যদি আউটপুট স্থির চিত্র হয় তবে গেম-অফ-লাইফ নিয়মগুলি এতে প্রয়োগ করা একই চিত্র তৈরি করতে হবে। এর অর্থ হ'ল কোনও 'জীবিত' কোষের তিন বা তার চেয়ে কম 'জীবিত' প্রতিবেশী থাকতে পারে না এবং কোনও 'মৃত' কোষে ঠিক তিনটি 'জীবিত' প্রতিবেশী নাও থাকতে পারে। (দ্রষ্টব্য যে এটি মূলত উপরে বর্ণিত অ্যানিমেশনের মতো তবে কেবল একটি ফ্রেমের সাথে))
অতিরিক্ত নিয়ম এবং স্পষ্টতা:
আপনি (বা আপনার প্রোগ্রাম) চয়ন করতে পারেন যে 'জীবন্ত' কোষগুলি সাদা এবং 'মৃত' কালো হিসাবে উপস্থাপিত হয়েছে বা বিপরীতে whether এটি হ'ল আপনি হয় এটি হার্ড-কোড করতে পারেন বা আপনার প্রোগ্রামটি ইনপুট চিত্রের উপর ভিত্তি করে এটি চয়ন করতে পারে। (তবে অ্যানিমেশনের প্রতিটি ফ্রেমের ক্ষেত্রে এটি অবশ্যই একই হতে হবে))
সীমানা পরিস্থিতি পর্যায়ক্রমিক হওয়া উচিত, যার অর্থ ডানদিকের কলামে কোষের বামতম কলামে প্রতিবেশী থাকে have
অ্যানিমেশনগুলির জন্য, ফ্রেমের হার আপনার (বা আপনার প্রোগ্রাম) উপর নির্ভর করে; আমি কল্পনা করি দ্রুত ফ্রেমের হার ধূসর পিক্সেল আনুমানিক জন্য ভাল কাজ করবে।
আপনার উত্তর এম্বেড কমপক্ষে দুটি ফলাফল পোস্ট করুন। আপনি নীচের সমস্ত ইনপুট চিত্র থেকে ফলাফল পোস্ট করতে পারেন, এটি ভাল।
এটি যথেষ্ট পরিমাণে ছোট ফাইল ফাইলের আকারের জন্য জিআইএফ অর্জন করতে প্রয়োজন হলে পরীক্ষার চিত্রগুলি স্কেল করে নেওয়ার পক্ষে এটি গ্রহণযোগ্য। আপনি যদি বড় ফাইলগুলিতেও লিঙ্ক করতে চান তবে তা ঠিক। আপনি যদি প্রদর্শন করতে চান তবে কিছু উচ্চ-রেজোলিউশন উত্স ফাইলগুলি নির্দ্বিধায় সন্ধান করুন।
দয়া করে আপনার কোডে অনেকগুলি নিয়ন্ত্রণযোগ্য পরামিতি এড়াতে চেষ্টা করুন - আপনার প্রোগ্রামের একমাত্র ইনপুটটি যদি চিত্র হয় তবে এটি সর্বোত্তম। ব্যতিক্রম হ'ল যদি আপনি অ্যানিমেশন ফ্রেমের সংখ্যা নিয়ন্ত্রণের জন্য প্যারামিটার রাখতে চান, যেহেতু এটি ফাইলের আকারকে প্রভাবিত করবে।
আপনি চাইলে ইনপুট এবং আউটপুট ফাইলগুলির ফর্ম্যাট পরিবর্তন করতে এবং / অথবা আউটপুট ফ্রেমগুলি একটি অ্যানিমেশনে সংকলন করতে আপনি বাহ্যিক প্রোগ্রামগুলি ব্যবহার করতে পারেন। (এটি কোনও ফাইল-ফর্ম্যাট-হ্যান্ডলিং চ্যালেঞ্জ নয়))
এটি জনপ্রিয়তা-প্রতিযোগিতা , তাই সর্বাধিক ভোটের উত্তর জিতেছে।
এখানে পরীক্ষার চিত্রগুলির একটি নির্বাচন রয়েছে, বেশিরভাগই এই সাইটের অন্যান্য প্রশ্ন থেকে নেওয়া হয়। (এটি সম্ভব যে পরে আমি অতিরিক্ত "বোনাস" ইনপুট চিত্র যুক্ত করব।)
কেবল জিনিস শুরু করতে এখানে পাইথন 2-তে একটি খুব বোবা রেফারেন্স প্রচেষ্টা রয়েছে, যা চার স্কোয়ারের একটি ব্লক গেম অফ লাইফের একটি স্থিতিশীল কাঠামো এই সত্যটির সুযোগ নেয়। এটি কেবল 4 এর ফ্যাক্টর দ্বারা ইনপুট চিত্রটিকে পুনরায় বিক্রি করে, তারপরে যদি পিক্সেলটি 0.5-এর চেয়ে গাer় হয় তবে একটি ব্লক আঁকবে।
from skimage import io
from skimage import transform
import sys
img = io.imread(sys.argv[1],as_grey=True)
source = transform.resize(img, [i/4 for i in img.shape])
img[:]=1
for x in xrange(source.shape[0]):
for y in xrange(source.shape[1]):
if source[x,y]<0.5:
img[x*4, y*4] = 0
img[x*4+1, y*4] = 0
img[x*4, y*4+1] = 0
img[x*4+1, y*4+1] = 0
io.imsave(sys.argv[2], img)
এখানে উদাহরণ কোড থেকে কিছু আউটপুট দেওয়া আছে। আমি নিশ্চিত যে আরও ভাল ফলাফল সম্ভব।