روب Bowden: ہیلو. میں روب ہوں، اور مجھے امید ہے کہ آپ 15 کے کھیل کے لئے کھیل. اب، آپ کی ضرورت ہے چار افعال ہیں اس پروگرام میں لاگو کرنے کے لئے - init، ، اپنی طرف متوجہ منتقل، اور جیت. تو، init کو دیکھو. یہاں، ہم ہیں سب سے پہلی چیز کو دیکھنے کے کیا جا رہا ایک متغیر کا اعلان ہے انسداد کہا جاتا ہے. initialized یہ کیا جا رہا ہے D اوقات D مائنس 1. D طول و عرض ہے یاد رکھیں کہ ہمارے بورڈ کے. کس طرح init کام کرنے کے لئے کی جا رہی ہے کہ یہ جا رہا ہے ہے پورے بورڈ پر iterate اور ہم شروع کرنے کے لئے جا رہے ہیں سب سے اوپر بائیں میں. اور صرف کا کہنا ہے کہ ہم 4 4 کی طرف سے بورڈ ہے. تو سب سے اوپر ہم کو چھوڑ دیا کہنے جا رہا 15 ہے. اور پھر ہم صرف شمار کرنے کے لئے جا رہے ہیں بورڈ کے ذریعے،، 15، 14، 13 کہہ 12، 11، 10، 9، 8، 7، 6، 5، 4، اور اسی طرح کی. تو سب سے اوپر بائیں، ہم D اوقات ہونے کی توقع D مائنس 1، 4 کی طرف سے 4 جس کیس 16 مائنس جا رہا ہے 1، صحیح طریقے سے 15 ہے. ہم کہاں جا رہے ہیں اور اب یہاں ہے پورے بورڈ پر iterate. اور ہم میں سے ہر ایک کی پوزیشن قائم کرنے کے لئے جا رہے ہیں کی موجودہ قیمت کے بورڈ ہماری کاؤنٹر، اور پھر کاؤنٹر جا رہا ہے تدریج کریں، تاکہ اگلا ہم تک پہنچنے کی پوزیشن کی جا رہی ہے انسداد ایک سے زیادہ کم ہو جائے گزشتہ پوزیشن. تو ہم نے ابتدائی طور پر 15 تھا اور انسداد تدریج کریں. تو پھر ہم 14 تفویض کرنے کے لئے جا رہے ہیں اگلا پوزیشن، تدریج کے انسداد، اور ہم تفویض کرنے جا رہے ہیں 13، اور اسی طرح کی. آخر میں، ہم اس کونے کو ہینڈل کرنے کی ضرورت ہے کیس جہاں، بورڈ بھی ہے طول و عرض، تو صرف، 15، 14، 13 کر 12، تمام طرح نیچے سے 3، 2، 1، ہے کے ساتھ ہمیں چھوڑ جا ایک unsolvable بورڈ. اور ہم نے 1 اور 2 کا تبادلہ کرنے کے لئے ہے. D MOD 2 0 کے برابر ہے اگر ایسا ہے تو،، کہ ہے ہم چیک کرنے جا رہے ہیں کس طرح یہ بھی ہے کو دیکھنے کے لئے. D MOD 2 0، پھر صف D مائنس میں برابر ہے 1، جس کے نیچے دیے صف ہے، اور پوزیشن D مائنس 2، یا کالم D مائنس 2، ہم 2 کے لئے کہ قائم کرنے کے لئے جا رہا، اور کر رہے ہیں کالم D مائنس 3 ہم 1 کے لئے مقرر کیا جا رہا. تو یہ صرف تبدیل جہاں 1 اور 2 ہیں. آخر میں، ہم بہت قائم کرنے کے لئے جا رہے ہیں سب سے نیچے دائیں خالی برابر، جہاں خالی ہیش بیان کیا گیا ہے 0 طور پر سب سے اوپر. تو، یہ ہے کہ، سختی ضروری نہیں تھا لوپ کے لئے اس کی ضرورت کے لئے جا رہا ہے کے بعد سے 0 سب سے نیچے دائیں، کے بعد مقرر انسداد قدرتی طور 0 تک پہنچ جائے گی. لیکن یہ جان کر کہ ہم پر انحصار کرتا ہے کہ خالی 0 حاصل کرنے کے لئے hashed گیا تھا. میں بعد میں اس پروگرام میں جانے اور تو ، 100 سب سے اوپر خالی یہ تبدیلی اب بھی کام کرنا چاہئے. تو یہ صرف اس بات کو یقینی بنا رہا ہے سب سے نیچے دائیں اصل کے برابر ہے ہماری خالی قیمت. آخر میں، ہم نے دو عالمی متغیر ہے، تو میں اور خالی J خالی، اور ہم دیکھتے ہیں ان سب سے اوپر اعلان. اور ہم ان دو عالمی استعمال کرنے کے لئے جا رہے ہیں کا ٹریک رکھنے کے متغیر خالی کی پوزیشن، ہم نہیں ہے تاکہ پورے کے ذریعے تلاش کرنے کی ضرورت ہے خالی ہر ایک کو تلاش کرنے کی بورڈ ہم ایک اقدام کرنے کی کوشش کے وقت. تو خالی کی پوزیشن ہمیشہ سب سے نیچے دائیں میں شروع کرنے جا. تو سب سے نیچے دائیں طرف سے دی گئی ہے سوچکانکوں D مائنس 1، D مائنس 1. تو، کہ init ہے. اب ہم اپنی طرف متوجہ کرنے کے لئے پر منتقل. تو، ڈرا اسی طرح کی جا رہی ہے ہم iterate کرنے جا رہے ہیں، جہاں پورے بورڈ پر. اور ہم صرف قیمت پرنٹ کرنے کے لئے چاہتے ہیں، کہ بورڈ میں سے ہر ایک کی پوزیشن میں ہے. تو یہاں، ہم اس قدر چھپائی رہے ہیں بورڈ کے ہر ایک کی پوزیشن میں. اور ہم کیا کر رہے ہیں کہ نوٹس -. اور یہ کہ صرف printf کہہ رہا ہے کہ سے قطع نظر یہ ایک عددی یا تو کی دو عددی تعداد، ہم اب بھی اس کے لئے چاہتے ہیں ، پرنٹ میں دو کالم لے تاکہ ہم دو عددی اور ایک ہے تو اسی بورڈ میں ہندسوں کے نمبر پر، ہماری بورڈ بھی اچھا اور مربع نظر آئے گا. تو ہم ہر قیمت کے لئے ایسا کرنے کے لئے چاہتے ہیں، بورڈ میں، خالی کے علاوہ. تو، اگر بورڈ میں پوزیشن برابر خالی، پھر ہم نے خاص طور پر صرف ایک کشید پرنٹ کرنا چاہتے خالی کی نمائندگی کرتے ہیں، بجائے اس کے پر کی جو بھی قیمت خالی اصل میں ہے. آخر میں، ہم پرنٹ کرنے کے لئے چاہتے ہیں، ایک نئی سطر سے. اس کے اندر اب بھی ہے نوٹس ہے کہ باہر لوپ کے لئے بیرونی، لیکن لوپ کے لئے اندرونی. لوپ کے لئے اس بیرونی iterating کر رہا ہے کے بعد سے تمام قطار میں، اور اس طرح یہ printf ہے صرف ایک نئی سطر میں پرنٹ، تو جا رہا ہم اگلی صف سے باہر پرنٹ کرنے کے لئے پر منتقل. اور یہ کہ قرعہ اندازی کے لئے ہے. تو، اب منتقل کرنے کے لئے پر منتقل. اب، ہم، ٹائل اقدام گزر صارف کے کھیل میں داخل ہے - وہ وہ منتقل کرنا چاہتے ہیں ٹائل میں داخل - اور آپ ایک bool واپس کرنے چاہیے، تو کر رہے ہیں صحیح یا غلط، پر منحصر ہے یا تو اس اقدام سے اصل میں تھا کہ درست - کہ ٹائل جا سکتا ہے خالی جگہ میں منتقل کر دیا. تو یہاں، ہم نے ایک مقامی متغیر کا اعلان، tile_1 اور جا رہے ہیں جس tile_j، blank_i اور blank_j کی طرح ہو، اس کا ٹریک رکھنے کے لئے جا رہا ہے کے علاوہ ٹائل کی پوزیشن. اب یہاں، ہم blank_i استعمال کرنے کے لئے جا رہے ہیں اور blank_j اور تو، ٹھیک ہے کا کہنا ہے کہ یہاں بورڈ پر خالی ہے. اب، خالی اوپر ٹائل ہے؟ خالی کے بائیں ٹائل ہے؟ خالی کے حق ٹائل ہے؟ خالی ذیل ٹائل ہے؟ تو، ٹائل ان میں سے کسی میں ہے تو عہدوں پر، تو ہم جانتے ہیں کہ ٹائل خالی جگہ میں منتقل کر دیا گیا کیا جا سکتا ہے خالی پر منتقل کر دیا جا سکتا ہے جہاں ٹائل فی الحال ہے. تو یہاں ہم کا کہنا ہے کہ پوزیشن میں بورڈ blank_i مائنس 1 blank_j. تو یہ کہہ رہا ہے ٹائل ہے موجودہ خالی اوپر؟ اور اگر ایسا ہے تو، ہم کو یاد کرنے کے لئے جا رہے ہیں کہ ٹائل کی پوزیشن ہے. ٹائل کی پوزیشن blank_i میں ہے مائنس 1 اور blank_j. اب سب سے پہلے، ہم بھی اس چیک ہے یہاں، تو blank_i ہے 0 سے بڑا. کیوں ہم ایسا کرنا چاہتے ہیں؟ ٹھیک ہے، خالی سب سے اوپر قطار میں ہے تو بورڈ کے، تو پھر ہم نہیں کرنا چاہتے کے بعد ٹائل کے لئے خالی سے اوپر نظر آتے ہیں سب سے اوپر اوپر کچھ بھی نہیں ہے بورڈ کی قطار. یہ آپ کو ہو رہی ہے ختم ہو سکتا ہے کہ کس طرح ایک انقطاع غلطی یا کچھ اس طرح آپ کے پروگرام صرف کام کر سکتے ہیں غیر متوقع طور پر. تو، یہ ہم نہیں کرتے ہیں اس بات کو یقینی بنا رہا ہے درست نہیں ہیں کہ مقامات میں نظر آتے. اب ہم کے لئے ایک ہی بات کرنے جا رہے ہیں دیگر تمام ممکنہ کے مجموعے. تو یہاں، ہم خالی ذیل میں تلاش کر رہے ہیں کہ ٹائل کی ہے تو دیکھنے کے لئے. اور ہم بھی یقین ہے کہ ہم کر رہے ہیں بنانے کے لئے ہے نہیں نیچے صف پر، ورنہ ہم ٹائل کے لئے نظر نہیں کرنا چاہئے. یہاں، ہم بائیں کے لئے تلاش کرنے کے لئے جا رہے ہیں یہ ٹائل اگر خالی کو دیکھنے کے لئے. اور ہم نے بائیں طرف نظر نہیں کرنا چاہئے ہم leftmost کالم میں ہیں. اور ہم یہاں پر تلاش کرنے کے لئے جا رہے ہیں حق خالی کی، اور ہم نہیں ہونا چاہئے ہم ہیں تو حق پر نظر rightmost کالم میں. تو، ان چیزوں میں سے کوئی بھی حقیقی تھے، کہ ٹائل سے ملحق نہیں تھا مطلب خالی اور ہم جھوٹے واپس آ سکتے ہیں. اقدام درست نہیں تھا. لیکن، ان میں سے ایک سچے تھے، تو میں اس نقطہ نظر، ہم اس tile_i جانتے ہیں اور tile_j کے برابر ہیں ٹائل کی پوزیشن. اور اس طرح، ہم بورڈ اپ ڈیٹ کر سکتے عہدوں tile_i اور tile_j. ہم نئی قیمت خالی ہو جائے گا معلوم ہے اور اس کی پوزیشن blank_i blank_j، اصل تھا جس میں خالی - ہم ٹائل کی جا رہی ہے جانتے ہیں وہاں منتقل. ہم اصل میں ایسا کرنے کی ضرورت نہیں ہے کا نوٹس A یہاں اصلی تبدیل ھو، چونکہ ہم جانتے ہیں داخل کرنے کی ضرورت ہے اقدار ان عہدوں میں. ہم نے ایک عارضی کی ضرورت نہیں ہے کے ارد گرد متغیر. آخر میں، ہم کہ ہم یاد رکھنے کی ضرورت ہیں کہ ہمارے عالمی متغیر ہے پوزیشن کا ٹریک رکھنے خالی کی. تو ہم نے کی پوزیشن کو اپ ڈیٹ کرنا چاہتے ہیں جہاں ٹائل کرنے کے لئے خالی اصل تھا. آخر میں، ہم کے بعد سے حقیقی واپس اقدام کامیاب تھا. ہم نے کامیابی کا تبادلہ ٹائل کے ساتھ خالی. ٹھیک ہے، تو گزشتہ ہم جیت کی جانچ پڑتال کرنے کی ضرورت ہے. تو، جیت اسی طرح ایک bool واپس جہاں سچ بات کی نشاندہی کی جا رہی ہے کہ صارف کھیل جیت لیا ہے. اور باطل کا اشارہ ہے کہ کھیل اب بھی کی جا رہی ہے. صارف نہیں جیتی ہے. تو، یہ بہت ہو جا رہا ہے init کے برعکس، جہاں init، ہم بورڈ ابتدا، یاد تو 15، 14، 13، 12، پر. جیتا جبکہ، ہم چیک کرنا چاہتے ہیں تو بورڈ تو 1، 2، 3، 4، 5، اور ہے. تو، ہم ابتدا کرنے جا رہے ہیں ہماری کیا سب سے اوپر ہے 1 انسداد بورڈ کے چھوڑ دینا چاہئے. اور پھر ہم لوپ کرنے جا رہے ہیں پورے بورڈ پر. کی اس شرط کو نظر انداز کرتے ہیں ایک دوسرے کے لئے. اور اس شرط صرف کی جا رہی ہے چیک اس کی پوزیشن میں بورڈ ہے موجودہ شمار کے برابر ہے؟ اگر ایسا ہے تو، شمار اضافہ ہے تاکہ ہم کو دیکھنے کے اگلے پوزیشن ایک زیادہ ہے ہم ابھی ہیں حیثیت سے. تو ہے کہ ہم کس طرح ہے سب سے اوپر بائیں 1 ہونا چاہئے. 2 شمار اضافہ. اگلا پوزیشن کو دیکھو. یہ 2 ہے؟ اگر ایسا ہے تو، 3 شمار اضافہ. اگلا پوزیشن، یہ 3 ہے؟ اگر ایسا ہے تو، شمار اضافہ 4، اور اسی طرح کی. تو، کسی بھی پوزیشن ہے تو ہماری شمار کے برابر نہیں ہے کہ بورڈ، پھر ہم اس کے بعد جھوٹے واپس کرنا چاہتے ہیں ہے کہ کچھ ٹائل نہیں ہے کا مطلب نہیں صحیح پوزیشن میں. تو یہاں، اس کی حالت کیا کر رہا ہے؟ ٹھیک ہے، خالی ہے یاد رکھیں کہ سب سے نیچے دائیں پر جانا چاہیے. اور خالی کی قیمت نہیں ہو سکتا ضروری کی قیمت کے برابر کہ پہنچ جا رہا ہے کا مقابلہ سب سے نیچے دائیں میں. تو ہم نے خاص طور پر جانچ کرنا چاہتے ہیں اگر میں برابر D مائنس 1 اور جے برابر برابر D مائنس 1 برابر - کہہ رہا ہے جس میں اگر ہم سب سے نیچے دائیں کی طرف دیکھ رہے ہیں بورڈ - تو ہم صرف جاری رکھنا چاہتے ہیں. ہم اس خاص طور پر کرنا چاہتے ہیں کے لئے لوپ کی iteration کے. اور اس طرح، ہم اس کے ذریعے حاصل کرنے کا انتظام تو لوپ کے لئے اندر در اندر، کا مطلب ہے کہ میں تھا کہ کوئی ٹائل تھا غلط پوزیشن. اور ہم لوپ سے باہر توڑ اور آنے یہاں، ہم کہاں سچ واپس آ سکتے ہیں. تمام ٹائل صحیح پوزیشن میں تھے اور اس کے صارف ہیں کا مطلب ہے کہ کھیل جیت لیا. اور یہ کہ یہ ہے. میرا نام روب Bowden ہے، اور یہ 15 سال کی تھی.