ROB BOWDEN: سلام. I راب هستم، و من امیدوارم که شما بازی برای بازی 15. در حال حاضر، چهار توابع نیاز شما وجود ندارد برای پیاده سازی در این برنامه - init انجام، قرعه کشی، حرکت، و به دست آورد. بنابراین، اجازه دهید در init انجام است. در اینجا، ما اولین چیزی که ما را ببینید رفتن به انجام است که یک متغیر اعلان به نام ضد. آن را به مقداردهی اولیه می شود به د بار د منهای 1. به یاد داشته باشید که D بعد است از هیئت مدیره است. چگونه init انجام شده است به کار است آن را به تکرار کل سایت و ما قصد داریم به شروع در بالا سمت چپ. و اجازه دهید فقط می گویند ما یک 4 4 تخته. بنابراین بالا سمت چپ ما رفتن به می گویند 15 است. و پس از آن ما فقط به تعداد از طریق تخته، گفت: 15، 14، 13، 12، 11، 10، 9، 8، 7، 6، 5، 4، و غیره. بنابراین بالا سمت چپ، ما انتظار داریم که d بار D منهای 1، که در 4 از 4 مورد در حال رفتن به 16 منفی 1 است که درست 15. و در حال حاضر در اینجا است که ما قصد داریم به تکرار کل سایت. و ما قصد داریم به مجموعه هر موقعیت در هیئت مدیره به ارزش فعلی ما ضد، و پس از آن مقابله می گذرد، خانمها با کاهش، به طوری که بعد از موقعیت ما رسیدن است رفتن به ضد یکی کمتر از موقعیت های قبلی است. بنابراین ما در ابتدا به حال 15 و واحد کم میکنیم ضد. پس ما در حال رفتن به اختصاص 14 به موقعیت بعدی، کاهش مقابله، و ما قصد داریم به اختصاص 13، و غیره. در نهایت، ما نیاز به رسیدگی است که گوشه مورد که در آن، در صورتی که هیئت مدیره است که حتی بعد، پس از آن فقط انجام 15، 14، 13، 12، تمام راه را به پایین 3، 2، 1، به ما با ترک هیئت مدیره لاینحل. و ما به مبادله 1 و 2. بنابراین، اگر D وزارت دفاع 2 برابر 0، که چگونه ما قصد داریم به بررسی برای دیدن اگر آن را حتی. اگر د وزارت دفاع 2 برابر 0 و سپس در ردیف د منهای 1، که در ردیف پایین، و 2 موقعیت D منفی، یا ستون د منهای 2، ما قصد داریم به مجموعه ای است که تا 2، و ستون د منهای 3 ما رفتن به مجموعه را به 1. به طوری که فقط معکوس که در آن 1 و 2 در حال حاضر می باشد. در نهایت، ما قصد داریم به مجموعه ای از بسیار پایین سمت راست خالی برابر، که در آن خالی شده است هش تعریف در بالا به عنوان 0. بنابراین، بود که شدت لازم نیست، از آنجایی که این حلقه است که به مجموعه ای از سمت راست پایین تا 0، از سال ضد به طور طبیعی 0 خواهد شد. اما که متکی بر ما دانستن است که خالی برای پیدا کردن یک 0 درهم شد. اگر من به این برنامه بروید و بعد از آن تغییر خالی در بالا تا 100، از آن باید هنوز هم کار می کنند. پس این است که فقط مطمئن شوید که سمت راست پایین است که در واقع برابر ما مقدار خالی. در نهایت، ما دو متغیر های جهانی، تا خالی من و خالی د، و ما می بینیم که در بالا اعلام کرد. و ما قصد استفاده از این دو جهانی متغیر برای پیگیری موقعیت خالی، به طوری که ما نمی باید از طریق تمام نگاه هیئت مدیره برای پیدا کردن خالی هر زمان ما سعی می کنیم یک حرکت. بنابراین موقعیت های خالی همیشه است رفتن به شروع در سمت راست پایین. بنابراین سمت راست پایین است با شاخص D منهای 1، D منهای 1. بنابراین، آن init انجام است. در حال حاضر ما در حرکت به منظور جلب. بنابراین، قرعه کشی است برای رفتن به مشابه که در آن ما قصد داریم به تکرار کل سایت. و ما فقط می خواهم به چاپ ارزش که در هر موقعیت از هیئت مدیره است. بنابراین در اینجا، ما در حال چاپ ارزش که در هر موقعیت از هیئت مدیره. و توجه کنید که ما انجام می دهیم -. و این فقط گفتن چون printf که بدون در نظر گرفتن اگر آن را یک رقم و یا در دو رقمی، ما هنوز هم آن را می خواهم به را تا دو ستون در چاپ، به طوری که اگر ما دو رقم و یک رقمی را در همان تخته، ما هیئت مدیره هنوز هم نگاه خوب و مربع است. بنابراین ما می خواهیم انجام دهیم که برای هر مقدار در هیئت مدیره، به جز برای خالی. بنابراین، اگر موقعیت در هیئت مدیره برابر با خالی، پس از آن ما به طور خاص می خواهم به نسخه قابل چاپ کردن فقط یک زیرین به نمایندگی از خالی، به جای هر چه مقدار از خالی واقع شده است. در نهایت، ما می خواهیم برای چاپ از یک خط جدید است. توجه کنید که این است که هنوز در داخل بیرونی حلقه for، اما در خارج به حلقه for. از آنجا که این خارجی برای حلقه تکرار بیش از همه ردیف، و بنابراین این چون printf است رفتن به فقط چاپ یک خط جدید، بنابراین ما حرکت به نسخه قابل چاپ کردن سطر بعدی. و که آن را برای قرعه کشی. بنابراین، اکنون اجازه دهید در حرکت به حرکت می کند. در حال حاضر، ما به پاس حرکت، کاشی که کاربر در این بازی وارد شده - آنها ورود به کاشی که آنها می خواهند به حرکت می کند - و شما قرار است برای بازگشت به بولی، بنابراین درست یا نادرست، بسته به آیا این حرکت در واقع معتبر - که آیا این کاشی می تواند به فضای خالی منتقل شد. بنابراین در اینجا، ما یک متغیر محلی، 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. چرا ما می خواهیم به انجام این کار؟ خوب، اگر خالی است در ردیف بالا از هیئت مدیره، پس ما نمی خواهند بالاتر از خالی برای کاشی از نگاه هیچ چیز بالاتر از بالا وجود دارد ردیف از هیئت مدیره. این است که چگونه ممکن است در نهایت گرفتن چیزی شبیه به یک گسل تقسیم بندی و یا برنامه شما فقط ممکن است کار در راه های غیر منتظره. بنابراین، این است که مطمئن شوید که ما نمی در مکان هایی که معتبر نیست نگاه کنید. در حال حاضر ما در حال رفتن به همین کار را برای تمام ترکیبات ممکن دیگر. بنابراین در اینجا، ما به دنبال زیر خالی برای دیدن در صورتی که کاشی است. و ما همچنین باید مطمئن شوید ما نه در ردیف پایین، و یا دیگری ما باید برای کاشی به نظر نمی آید. در اینجا، ما در حال رفتن به نگاهی به سمت چپ خالی کنید تا از در کاشی است. و ما باید به سمت چپ نگاه نمی اگر ما در سمت چپ ترین ستون است. و در اینجا ما قصد داریم به نگاه به حق خالی، و ما باید نیست به سمت راست نگاه کنید اگر ما از ستون سمت راست. بنابراین، اگر هیچ یک از کسانی که همه چیز درست بود، این بدان معناست که کاشی بود مجاور ندارد به خالی و ما می توانیم نادرست بازگشت. این حرکت معتبر نبود. اما اگر یکی از آن درست بود، پس از آن در این نکته، ما می دانیم که tile_i و tile_j به مساوی هستند موقعیت کاشی. و به این ترتیب، ما می توانیم هیئت مدیره در به روز رسانی موقعیت tile_i و tile_j. ما می دانیم که مقدار جدید خواهد بود که خالی و blank_i موقعیت blank_j، که اصلی بود خالی - ما می دانیم که کاشی در حال رفتن به حرکت وجود دارد. توجه داشته باشید که ما در واقع نه مجبور به انجام مبادله واقعی در اینجا، از آنجا که ما می دانیم که ارزش است که باید درج شود به آن موقعیت. ما به طور موقت لازم نیست متغیر در اطراف. در نهایت، ما باید به خاطر داشته باشید که ما باید متغیر های جهانی که پیگیری موقعیت از خالی. بنابراین ما می خواهیم برای به روز رسانی موقعیت خالی می شود که در آن کاشی در اصل بود. در نهایت، ما به راست از حرکت موفقیت آمیز بود. ما با موفقیت مبادله خالی با کاشی. همه حق است، تا آخرین ما نیاز به بررسی به دست آورد. بنابراین، به دست آورد به طور مشابه bool را که در آن درست است که به نشان می دهد که کاربر تا بازی به دست آورد. و نادرست است نشان می دهد که بازی هنوز هم ادامه دارد. کاربر برنده نیست. بنابراین، این است که برای رفتن به تقریبا در مقابل init انجام، که در آن init انجام، به یاد داشته باشید، ما مقداردهی اولیه هیئت مدیره به 15، 14، 13، 12، غیره. در حالی که به دست آورد، ما می خواهیم به بررسی در صورتی که هیئت مدیره 1، 2، 3، 4، 5، و غیره است. بنابراین، ما در حال رفتن به مقداردهی اولیه ما مقابله به 1 از آن چه در بالا است سمت چپ از هیئت مدیره باید باشد. و پس از آن ما در حال رفتن به حلقه کل سایت. اجازه دهید این وضعیت را نادیده گرفت برای یک ثانیه. و این وضعیت فقط رفتن به ورود به هیئت مدیره در این موقعیت است به تعداد فعلی برابر است؟ اگر چنین است، افزایش تعداد دفعات مشاهده شده به طوری که موقعیت بعدی ما در نگاه یک بالاتر از موقعیت ما در حال حاضر می باشد. بنابراین این که چگونه ما می توانید از بالا و چپ باید 1 باشد. افزایش تعداد به 2. در موقعیت بعدی. آیا این 2؟ اگر چنین است، افزایش تعداد به 3. موقعیت بعدی، این 3 است؟ اگر چنین است، افزایش تعداد به 4، و غیره. بنابراین، اگر هر موقعیت در وجود دارد هیئت مدیره است که به حساب ما برابر نیست، پس از آن ما می خواهیم برای بازگشت کاذب از آن به این معنی است برخی از کاشی است که وجود دارد در موقعیت صحیح نیست. بنابراین در اینجا، آنچه که این وضعیت را انجام می دهند؟ خب، به یاد داشته باشید که خالی است قرار برای رفتن در سمت راست پایین. و ارزش خالی را ممکن نمی لزوما برابر با ارزش از مقابله است که رفتن به توان رسید در سمت راست پایین. بنابراین ما به طور خاص می خواهید برای چک کردن من برابر برابر با D منهای 1 و j برابر برابر با D منهای 1 - است که گفت: اگر ما به دنبال در سمت راست پایین هیئت مدیره - پس ما فقط مایل به ادامه. ما می خواهیم به جست و خیز این خاص تکرار از حلقه for. و به این ترتیب، اگر ما را از طریق این دریافت تو در تو حلقه for، که بدان معنی است که هیچ کاشی که در وجود دارد موقعیت نادرست. و ما از حلقه شکستن و آمده در اینجا، که در آن ما می توانیم درست است بازگشت. تمام کاشی در موقعیت درست بود و این بدان معناست که کاربر برنده بازی. و آن نیست. نام من راب Bowden است، و این 15 بود.