এল-সিস্টেমগুলি , যা আমি বলতে পারি * থেকে, ব্যাকরণের মতো বিকল্প ব্যবস্থার একটি সেট যা আপনি আকর্ষণীয়, "জৈব" ফলাফল পেতে পুনরাবৃত্তভাবে প্রয়োগ করতে পারেন।
উদ্ভিদগুলি যেখানে এল-সিস্টেমগুলি প্রায়শই ব্যবহৃত হয়, কারণ তারা প্রচুর পুনরাবৃত্তির বৃদ্ধি দেখায় (যেমন শাখাটি আরও শাখায় বিভক্ত হয়)। একটি সাধারণ উদাহরণের জন্য, আমি একটি এল-সিস্টেম ব্যবহার করে উত্পন্ন একটি "ললিপপ" গাছটি দেখাব:
variables : | o (these are the things that will grow)
start : o
| (this is what we start with)
rules : (o → o o) (these are the substitution rules that we apply
\ / one step at a time)
1 প্রজন্মের সময়, আমরা সবে শুরু করেছি:
o
|
প্রজন্ম 2 এ, আমরা প্রতিটি বিধি অনুসরণ করি এবং বিদ্যমান অংশগুলি বিধি অনুসারে প্রতিস্থাপন করি। আমরা "বল" দুটি "দুটি স্টিক এবং বল" দিয়ে প্রতিস্থাপন করি:
o o
\ /
|
প্রজন্ম 3:
o o o o
\| |/
\ /
|
শীঘ্রই আমরা একটি সুন্দর (কৃপণ) বড় গাছ পাব!
কোডে এটি করার জন্য, আপনি হয় এটি পুনরাবৃত্তভাবে (অর্থাত্ ডিএফএস) করতে পারেন, নিয়মিতভাবে একই অংশে নিয়ম প্রয়োগ করে কিছুটা নির্বিচারে শেষ না হওয়া অবধি, বা আপনি এই পুনরাবৃত্তভাবে (যেমন বিএফএস) করতে পারেন যেমন আমরা এই উদাহরণটিতে করেছি , সমস্ত উপাদানগুলির একটি নিয়ম "পাস" সম্পাদন করে এবং বেশ কয়েকটি পদক্ষেপ পুনরাবৃত্তি করে। এটাই:
recursively:
tree = start
grow(tree, start)
func grow(tree, part)
if this part of the tree is big enough
stop
if part is 'o'
replace part with 'o\/o'
grow(tree, the left 'o')
grow(tree, the right 'o')
iteratively:
tree = start
for a number of iterations
for each part in tree
if part is 'o':
replace with 'o\/o'
এল-সিস্টেমের প্রচুর ব্যবহার উপ-বিভাগ ব্যবহার করে "বৃদ্ধি" পদক্ষেপটি সম্পাদন করে - অর্থাত্ অংশগুলি "বর্ধিত" হওয়ার সাথে সাথে ছোট হতে থাকে, বড় অংশগুলি কেবল বিভক্ত হয়। অন্যথায় আপনার ক্রমবর্ধমান সিস্টেম নিজেই ওভারল্যাপ শুরু করতে পারে। আপনি আমার ললিপপ গাছের উদাহরণে দেখতে পাবেন, আমি জাদুগতভাবে নিশ্চিত করেছি যে নতুন শাখাগুলির আকার পরিবর্তন করে দুটি শাখা মাঝখানে ভরাট হবে না। মহকুমা ব্যবহার করে শহরের উদাহরণটি করা যাক :
variables: block_vertical block_horizontal road_vertical road_horizontal
start: block_vertical
rules: (block_vertical → block_horizontal road_vertical block_horizontal)
(block_horizontal → block_vertical road_horizontal block_vertical)
এটি এক মিনিটের মধ্যে বোঝা যাবে।
প্রজন্ম 1:
+--------------------+
| |
| |
| |
| V |
| |
| |
| |
+--------------------+
একটি একক, বিরক্তিকর উল্লম্ব ব্লক। (ভিটি দাঁড়া উল্লম্ব।)
প্রজন্ম 2: আমরা মাঝখানে উল্লম্ব রাস্তা সহ অনুভূমিক ব্লকগুলির সাথে উল্লম্ব ব্লকটি প্রতিস্থাপন করি
+--------------------+
| r |
| r |
| r |
| H r H |
| r |
| r |
| r |
+--------------------+
আর রাস্তা দাঁড়িয়েছে! আমি এলোমেলোভাবে বিভাজনটি ছড়িয়ে দিয়েছি, আমরা পিসিজিতে নিয়মিত বিরক্তিকর অংশগুলি চাই না।
প্রজন্ম 3: আমরা অনুভূমিক ব্লকগুলি অনুভূমিক রাস্তাগুলির সাথে পৃথক করে উল্লম্ব ব্লকগুলি প্রতিস্থাপন করি। বিদ্যমান রাস্তাগুলি স্থায়ী; তাদের জন্য কোন বিধি নেই।
+--------------------+
| V r |
| r |
|rrrrrrrr |
| r V |
| V r |
| rrrrrrrrrrrrr|
| r V |
+--------------------+
রাস্তাগুলি একে অপরের সাথে কীভাবে সংযুক্ত হয় তা লক্ষ করুন which এটি যথেষ্ট বার পুনরাবৃত্তি করুন এবং আপনি এরকম কিছু দিয়ে শেষ করবেন (স্পষ্টভাবে সম্পর্কিত উত্তরটি ছিঁড়ে ফেলে ):
লক্ষ্য করুন যে আমি প্রচুর বিবরণ coveredাকেনি, এবং এই ফলাফলটি "স্পষ্টতই" উত্পন্ন দেখায় - বাস্তব শহরগুলি কিছুটা আলাদা দেখায়। এটিই পিসিজি মজাদার / শক্ত করে তোলে। আপনার ফলাফলগুলি টুইট করতে এবং উন্নত করতে অবিরাম কিছু করতে পারেন তবে এল-সিস্টেমের সাথে সম্পর্কিত না থাকায় আমি এই উত্তরটি এখানে রেখে যাব; আশা করি এটি আপনাকে শুরু করতে সহায়তা করে।
* - আমি আনুষ্ঠানিকভাবে এল-সিস্টেমগুলি অধ্যয়ন করি নি, যদিও আমি ব্যাকরণ এবং পিসিজি উদ্ভিদের মতো নির্দিষ্ট ধরণের মুখোমুখি হয়েছি; যদি আমি কোনও সংজ্ঞা বা ধারণা ভুল পাই তবে আমাকে সংশোধন করুন