এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা তিনটি পূর্ণসংখ্যার, একটি প্রস্থ w
, একটি উচ্চতা h
এবং একটি পদক্ষেপ গণনা করে s
। আপনি একটি অ-স্ব ছেদ অঙ্কন করা হবে এলোমেলো হাটা s
একটি দীর্ঘ পদক্ষেপ 5*w
দ্বারা 5*h
পিক্সেল ইমেজ যেখানে প্রতি 5 5 পিক্সেল সেল পারেন খালি (খাঁটি বেইজ রঙ) অথবা এই বারটি সহজ "পাইপ" এর এক:
উপরের চিত্রটি বিস্তারিত দেখানোর জন্য বাড়ানো হয়েছে। প্রকৃত আকারে পাইপগুলি এখানে রয়েছে:
(ধূসর রেখাগুলি কেবল পাইপের ধরণের পৃথক করার জন্য))
এলোমেলো হাঁটা একটি একক অবিচ্ছিন্ন পাইপ পাথ হবে যা একটি পাইপের শেষ পয়েন্ট (নীচের চারটি পাইপের ধরণের একটি) থেকে শুরু হয়ে অন্য পাইপের শেষ পয়েন্টে শেষ হয়।
গ্রিড w
দ্বারা খালি দিয়ে শুরু করুন h
এবং এলোমেলোভাবে একটি কক্ষকে প্রারম্ভের পয়েন্ট হিসাবে চয়ন করুন। তারপরে এলোমেলোভাবে শুরু করতে চার দিকের একটি বেছে নিন এবং সংশ্লিষ্ট পাইপ শেষের অবস্থানটি আঁকুন। এই শুরুর ঘরটি আপনার হাঁটার প্রথম ধাপ চিহ্নিত করে এবং প্রতিবার আপনি যখন একটি নতুন ঘর আঁকেন বা বিদ্যমান কোনও ওভাররাইট করে সেটি অন্য পদক্ষেপ হিসাবে গণ্য হয়।
এখন বারবার, এলোমেলোভাবে ডান, বাম বা সোজা যেতে বেছে নিন, যদি সঠিক দিকটি চয়ন করা বৈধ হয় তবে উপযুক্ত পাইপ সেল আঁকুন। সম্পূর্ণ s
পদক্ষেপের পথ তৈরি না হওয়া পর্যন্ত কোনও দিক বৈধ না হলে ব্যাকট্র্যাক এবং পুনরায় নির্বাচন করুন । পাথটি একটি পাইপের শেষ পয়েন্টের সাথে শেষ হওয়া উচিত, যা গ্রিডের যে কোনও জায়গায় থাকতে পারে, সেই পথটি যে পথটি নিয়েছিল তার উপর নির্ভর করে।
এটি লক্ষ করা খুব গুরুত্বপূর্ণ যে কেবল দুটি সরল পাইপ কোষ ওভাররাইট করা যেতে পারে এবং কেবল বিপরীত অভিমুখের সোজা পাইপ কোষ দ্বারা, ফলাফলটি একটি ছেদ সেল হয়। অন্যথায়, সমস্ত পাইপ অবশ্যই খালি কোষে রাখতে হবে।
যখন একটি ছেদটি আঁকানো হয়, প্রারম্ভিক ঘরটি সহ আরও যে অংশটির অংশ রয়েছে তা শীর্ষে আঁকতে হবে।
গ্রিডের পর্যায়ক্রমিক সীমানা শর্ত (পিবিসি) রয়েছে কিনা তা আপনার উপর নির্ভর করে, গ্রিডের এক পাশ থেকে বেরিয়ে আসা পাইপটি অন্য দিকে বেরিয়ে আসবে কিনা। পিবিসি ছাড়াই গ্রিডের সীমানা এমন একটি বাধা হিসাবে গণ্য হয়েছে যা আপনি অন্যান্য পাইপের মতো চালাতে পারেন।
বিশেষ ক্ষেত্রে
- যখন
s
0 হয় কোনও পাইপ আঁকতে হবে না এবং চিত্র5*w
দ্বারা আউটপুট ফাঁকা হওয়া উচিত5*h
(অর্থাত্ সমস্ত বেইজ)। যখন
s
1 একক পাইপ স্টাব হয়এলোমেলোভাবে নির্বাচিত শুরু কক্ষে আঁকা উচিত at
অন্যান্য বিস্তারিত
- আপনি ধরে নিতে পারেন যে
s
এটি সর্বাধিকw*h
তাই একটি পথ সর্বদা সম্ভব হবে। (যদিও দীর্ঘতর পথগুলি ছেদগুলির কারণে সম্ভব)) w
এবংh
সর্বদা ইতিবাচক হবে।- সমস্ত এলোমেলো পছন্দ অবশ্যই অভিন্ন র্যান্ডম হতে হবে । উদাহরণস্বরূপ, যখন মোড়গুলি সম্ভব হয় তখনও এটি যখন আরও সহজে করা হয় তখন আপনার এড়ানো উচিত নয়। সিউডো-এলোমেলো নম্বর জেনারেটর অনুমোদিত।
- কালো, নীল এবং বেইজের জায়গায় কোনও তিনটি দৃশ্যত পৃথক রঙ ব্যবহার করা যেতে পারে।
- আপনার আউটপুট চিত্রগুলি বড় করা যেতে পারে যাতে সেগুলি পিক্সেল
5*w*k
দ্বারা সত্যই5*h*k
যেখানেk
ধনাত্মক পূর্ণসংখ্যার হয়। (আপনার পোস্টের যে কোনও উদাহরণ ব্যাখ্যা করার জন্য আপনারk
1 টি হলেও পরামর্শ দেওয়া হচ্ছে)) - যে কোনও সাধারণ লসলেস ইমেজ ফাইল ফর্ম্যাট ব্যবহার করা যেতে পারে এবং চিত্রটি কোনও ফাইলে সংরক্ষিত হতে পারে, প্রদর্শিত হতে পারে বা স্টাডাউটে কাঁচা বানানো হতে পারে।
বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।
উদাহরণ
(সমস্ত 500% দ্বারা প্রসারিত)
যদি ইনপুট হয় w=2, h=1, s=0
তবে আউটপুট সর্বদা থাকবে:
যদি ইনপুট হয় w=2, h=1, s=1
তবে আউটপুটটি সমান সুযোগ সহ এই চিত্রগুলির মধ্যে একটি হবে:
যদি ইনপুট হয় w=2, h=1, s=2
তবে আউটপুট হবে
বা সম্ভবত
যদি গ্রিডে পিবিসি ধরা হয়।
(দ্রষ্টব্য যে পথটি শুরু করা দ্বিতীয় ধাপটিকে অসম্ভব করে তুলবে))
w=3, h=2, s=6
পিবিসি ধরে ধরে এখানে কিছু সম্ভাব্য ফলাফল রয়েছে :
w=3, h=3, s=9
পিবিসি ধরে ধরে এখানে একটি সম্ভাব্য আউটপুট দেওয়া হয়েছে :
লক্ষ করুন যে দুটি ধাপ হিসাবে ছেদ করা সংযোগের কারণে পথটির সমস্ত কক্ষকে আবরণ করার প্রয়োজন ছিল না। এছাড়াও, আমরা অনুমান করতে পারি যে কোণার শেষ পয়েন্টটি একটি প্রারম্ভিক সেল ছিল যেহেতু চৌরাস্তা ওভারপাস অবশ্যই পরে আঁকা উচিত। সুতরাং আমরা তৈরি করা এলোমেলো পছন্দগুলির ক্রমটি অনুমান করতে পারি:
start at top left, facing east
go straight
go right
go right
go right
go straight
go left
go right
end
অবশেষে, এখানে উদাহরণ w=4, h=5, s=20
এবং w=4, h=5, s=16
:
You will be drawing a non-self-intersecting random walk
... এটি স্ব-ছেদ করা কি না?