کوڈ کے ذریعے گودام کی کرین چلائیں اور رنگین کریٹوں کو ہدایات کی ایسی حد کے اندر دوبارہ ترتیب دیں جو اتنی تنگ ہے کہ ریکرشن کے بغیر کام نہیں چلتا۔
کرین کی ہدایات (بائیں اور دائیں چلنا، پکڑنا، چھوڑنا، اور رنگ کی شرائط) سے ایک پروگرام بنائیں تاکہ کریٹوں کے ڈبوں کو مطلوبہ ڈھیر کی شکل میں دوبارہ ترتیب دیا جا سکے۔ ہدایات کی حد جان بوجھ کر تنگ رکھی گئی ہے، اس لیے آپ کو Call کمانڈ پر انحصار کرنا ہوگا، جو آپ کا پورا پروگرام شروع سے دوبارہ چلاتی ہے؛ جو شرط ناکام ہو جائے وہی بیس کیس بن جاتی ہے جو ریکرشن کو روکتی ہے۔ ہاتھ سے بنائے گئے دس لیول ہیں، ایک سرخ کریٹ سے لے کر چھ کریٹوں کے مینار تک، اور ان میں سے آٹھ Call کے بغیر حل نہیں ہو سکتے۔
تین کا مینار: تین سرخ کریٹ ڈبہ 1 میں ہیں اور انہیں ڈبہ 2 میں پہنچنا ہے، اور آپ صرف چھ ہدایات استعمال کر سکتے ہیں۔ اگر سب کچھ الگ الگ لکھا جائے تو ہر کریٹ کو Grab، Right، Drop اور Left چاہیے، یعنی تین کریٹوں کے لیے گیارہ ہدایات، آخری Left ہٹانے کے بعد بھی۔ چھ کافی نہیں۔
اس لیے ایک چکر لکھیں اور اسے دہرانے دیں: Grab، If-held red، Right، Drop، Left، Call۔ یہ چھ ہدایات ہیں۔ کرین ایک کریٹ پکڑتی ہے، جانچتی ہے کہ اس کے پاس سرخ ہے، اسے لے جاتی ہے، نیچے رکھتی ہے، واپس آتی ہے اور پورے پروگرام کو دوبارہ کال کرتی ہے۔ چوتھی کال پر ڈبہ 1 خالی ہوتا ہے، Grab کچھ نہیں اٹھاتا، If-held red کی جانچ ناکام ہو جاتی ہے، اور پروگرام رک جاتا ہے۔ یہی ناکام جانچ بیس کیس ہے۔
If-held red کو If-held blue میں بدلیں تو یہی چھ ہدایات چار کریٹوں والا لیول اور چھ کریٹوں کا مینار بھی صاف کر دیتی ہیں، کیونکہ روٹین کبھی کریٹ نہیں گنتا؛ وہ تب تک چلتا رہتا ہے جب تک کوئی باقی نہ رہے۔ ریکرشن کا یہی نکتہ ہے: پروگرام ایک قدم اور رکنے کا ایک اصول بیان کرتا ہے، اور ان پٹ طے کرتا ہے کہ وہ کتنی بار چلے۔
Claw Compiler کریٹ رکھنے والی کرین اور حرکتوں کے سخت بجٹ کے ذریعے ریکرشن سکھاتا ہے، اور ایک مشکل خیال کو ٹھوس بنا دیتا ہے۔
کرین کی ہدایات — بائیں اور دائیں چلنا، پکڑنا، چھوڑنا، اور رنگ پر شرائط — ایک مختصر ترین اسمبلی لینگویج ہیں جس کے ساتھ ایک جسمانی وجود جڑا ہوا ہے۔
ایک چھوٹی سی دنیا میں ایک چھوٹے روبوٹ کے ذریعے پروگرامنگ سکھانے کا سلسلہ Karel the Robot تک جاتا ہے، مبتدیوں کی وہ زبان جو رچرڈ پیٹس نے 1981 کی ایک کتاب میں متعارف کرائی اور اسٹینفورڈ میں اپنے کورسز میں استعمال کی۔ کھیلوں نے یہ خیال اپنایا: Lightbot ایک روبوٹ کو بھول بھلیاں سے گزارنے کی پروگرامنگ کے ذریعے لوپس اور پروسیجرز سکھاتا ہے، اور Claw Compiler کا قریب ترین پیش رو Cargo-Bot ہے، 2012 کی ایک iPad پہیلی جس میں آپ ایک روبوٹ کو کریٹ منتقل کرنا سکھاتے ہیں۔ Two Lives Left نے اسے روئی ویانا کے ساتھ مل کر ان کے پروٹوٹائپ سے اپنی iPad کوڈنگ ایپ Codea میں بنایا، اور اسے پوری طرح iPad پر پروگرام کیا گیا پہلا گیم قرار دیا۔
کام، یعنی کریٹوں کے ڈبوں کو ایک مطلوبہ ڈھیر میں دوبارہ ترتیب دینا، ایک ایسی مشین سے چھانٹنا ہے جو ایک وقت میں ٹھیک ایک چیز پکڑ سکتی ہے۔ ایک ہی گرفت کی یہ حد اپنے آپ میں ایک سبق ہے۔ یہ وہی پابندی ہے جو ایک رجسٹر عائد کرتا ہے، اور اسی لیے حقیقی چھانٹی کو چیزیں رکھنے کے لیے کوئی جگہ چاہیے — یہ دریافت کہ آپ کو ایک فالتو ڈبہ چاہیے، عارضی ذخیرے کے تصور کی دریافت ہے۔
چونکہ Call ہمیشہ آخری ہدایت ہوتی ہے، اس لیے یہاں ہر پروگرام ٹیل ریکرسیو ہے: خود کو کال کرنا اس کا آخری کام ہوتا ہے۔ بہت سی زبانوں کے نفاذ ٹیل کال کو شروع کی طرف ایک سادہ جمپ میں بدل دیتے ہیں، اسی لیے ایک ہی پروگرام کو ریکرشن بھی سمجھا جا سکتا ہے اور لوپ بھی۔ یہ دیکھ لینا کہ دونوں ایک ہی خیال ہیں، ریکرشن کو سمجھنے کا بڑا حصہ ہے۔
Claw Compiler ایک اصل، مفت براؤزر گیم ہے جو PlayPendium کے لیے بنایا گیا: سات ہدایات والی کرین زبان، دس لیول جن کی حدیں ریکرشن کو اختیاری نہیں بلکہ ضروری بنا دیتی ہیں، ایک مشترکہ روزانہ لیول، اور ایک مشق موڈ جو باقی لیول پیش کرتا ہے۔