در این مطلب، ویدئو حل سودوکو در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:19:21
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:04,230 –> 00:00:09,120
[موسیقی]
2
00:00:09,120 –> 00:00:10,719
بچه ها به چه اتفاقی می افتد خوش آمدید در
3
00:00:10,719 –> 00:00:12,480
ویدیوی امروز ما قصد داریم یک
4
00:00:12,480 –> 00:00:15,200
نقره سودوکو ساده با استفاده از بک
5
00:00:15,200 –> 00:00:16,800
ترک بسازیم، پس بیایید به درستی وارد
6
00:00:16,800 –> 00:00:18,000
آن شویم تا یک
7
00:00:18,000 –> 00:00:20,400
حل کننده سودوکو ساده در پایتون بسازیم و ما
8
00:00:20,400 –> 00:00:22,080
اکنون میخواهیم از Backtracking برای آن استفاده
9
00:00:22,080 –> 00:00:23,439
کنیم، قبل از اینکه وارد کدنویسی شویم، بیایید در
10
00:00:23,439 –> 00:00:25,680
مورد اینکه عقبگردی واقعاً
11
00:00:25,680 –> 00:00:27,359
چیست صحبت کنیم الگوریتمی است که پیادهسازی آن در
12
00:00:27,359 –> 00:00:28,880
واقع بسیار ساده است،
13
00:00:28,880 –> 00:00:31,199
اما شاید درک آن کمی
14
00:00:31,199 –> 00:00:33,040
دشوارتر باشد، به خصوص
15
00:00:33,040 –> 00:00:35,040
اگر با بازگشت آشنا نباشید.
16
00:00:35,040 –> 00:00:36,800
اگر قبلاً با Recursion کار نکرده اید،
17
00:00:36,800 –> 00:00:37,440
18
00:00:37,440 –> 00:00:39,440
شدیداً به شما توصیه می کنم که
19
00:00:39,440 –> 00:00:40,879
خود را با مفهوم آشنا کنید، فکر می کنم
20
00:00:40,879 –> 00:00:42,559
باید یک ویدیو در مورد بازگشت در این
21
00:00:42,559 –> 00:00:43,360
کانال
22
00:00:43,360 –> 00:00:45,520
در لیست میانی پایتون خود داشته باشم،
23
00:00:45,520 –> 00:00:46,800
اگر در قسمت نظرات به من اطلاع دهید که می
24
00:00:46,800 –> 00:00:48,079
خواهم ایجاد کنم. یک
25
00:00:48,079 –> 00:00:50,480
ام اما بازگشت در اصل به معنای یک
26
00:00:50,480 –> 00:00:52,239
تابع است که خود را فراخوانی می کند، بنابراین فرض کنید من
27
00:00:52,239 –> 00:00:54,800
تابعی دارم که می گوید
28
00:00:54,800 –> 00:00:56,640
یک عدد را چاپ کنید و آن عدد
29
00:00:56,640 –> 00:00:58,719
را 1 کاهش دهید و سپس آن عدد را چاپ کنید.
30
00:00:58,719 –> 00:01:00,960
31
00:01:00,960 –> 00:01:02,640
بیایید فقط یک مثال در اینجا ایجاد کنیم، فرض کنیم
32
00:01:02,640 –> 00:01:04,559
چاپ
33
00:01:04,559 –> 00:01:07,520
چاپ و کاهش تابع خواهد بود
34
00:01:07,520 –> 00:01:08,320
و سپس من
35
00:01:08,320 –> 00:01:11,200
یک عدد دارم و کاری که می توانم انجام دهم این است که می توانم
36
00:01:11,200 –> 00:01:12,240
یک عدد را چاپ
37
00:01:12,240 –> 00:01:14,000
کنم و می توانم تابع print را صدا بزنم و
38
00:01:14,000 –> 00:01:16,159
دوباره
39
00:01:16,159 –> 00:01:20,159
روی عدد -1 کاهش دهم. و میتوانم بگویم خوب است اگر
40
00:01:20,159 –> 00:01:22,640
41
00:01:22,640 –> 00:01:27,200
عدد 0 باشد، ما فقط میخواهیم به
42
00:01:27,200 –> 00:01:30,320
عنوان مثال اوم را برگردانیم
43
00:01:30,320 –> 00:01:32,159
و اگر اشتباهی مرتکب نشدم
44
00:01:32,159 –> 00:01:33,920
باید فقط چاپ کنم
45
00:01:33,920 –> 00:01:36,960
یا مثلاً 10 را چاپ و کاهش
46
00:01:36,960 –> 00:01:40,000
دهیم، این اعداد 10 9
47
00:01:40,000 –> 00:01:42,000
8 را چاپ میکند و بنابراین همانطور که می بینید این کار را انجام می دهد، بنابراین
48
00:01:42,000 –> 00:01:43,439
این یک تابع بازگشتی است، ما در اینجا
49
00:01:43,439 –> 00:01:44,960
زیاد در مورد بازگشت صحبت نمی
50
00:01:44,960 –> 00:01:45,360
کنیم،
51
00:01:45,360 –> 00:01:46,960
اما این مفهومی است که شما باید
52
00:01:46,960 –> 00:01:48,720
در مورد آن بدانید تا بفهمید که
53
00:01:48,720 –> 00:01:50,000
چه چیزی را در برنامه امروز پیاده سازی می کنیم.
54
00:01:50,000 –> 00:01:51,840
ویدیویی که در حال عقب نشینی است،
55
00:01:51,840 –> 00:01:54,399
بنابراین اساساً ما
56
00:01:54,399 –> 00:01:54,960
هر زمان
57
00:01:54,960 –> 00:01:57,439
که یک سری تصمیمات می گیریم که می تواند
58
00:01:57,439 –> 00:01:59,600
منجر به نتیجه شود از عقب نشینی استفاده می کنیم، بنابراین در سودوکو به
59
00:01:59,600 –> 00:02:00,719
عنوان مثال
60
00:02:00,719 –> 00:02:02,479
ما یکسری اعداد داده شده داریم، شما
61
00:02:02,479 –> 00:02:04,799
باید قوانین سودوکو را نیز بدانید،
62
00:02:04,799 –> 00:02:06,079
ما قصد توضیح آن را نداریم. قوانین
63
00:02:06,079 –> 00:02:08,720
سودوکو در اینجا، اما شما آن
64
00:02:08,720 –> 00:02:10,560
اعدادی را دارید که در سلول های جداگانه داده شده
65
00:02:10,560 –> 00:02:12,319
اند و باید
66
00:02:12,319 –> 00:02:14,000
موقعیت اعداد باقی مانده را پیدا کنید،
67
00:02:14,000 –> 00:02:15,200
بنابراین باید بدانید که
68
00:02:15,200 –> 00:02:16,160
1 کجاست که
69
00:02:16,160 –> 00:02:19,440
در سلول های فردی 2 است و غیره و به همین ترتیب
70
00:02:19,440 –> 00:02:22,160
یک عدد را انتخاب کنید. برای
71
00:02:22,160 –> 00:02:22,560
72
00:02:22,560 –> 00:02:24,400
یک سلول خاص تصمیمی است که شما می توانید اتخاذ کنید، به
73
00:02:24,400 –> 00:02:26,239
عنوان مثال اجازه دهید من فقط
74
00:02:26,239 –> 00:02:28,480
شبکه ای را که برای این ویدیو دارم کپی کنم،
75
00:02:28,480 –> 00:02:30,319
این خیلی جالب نیست، این فقط یک
76
00:02:30,319 –> 00:02:31,200
لیست است در اینجا
77
00:02:31,200 –> 00:02:33,599
، لیستی از لیست ها در واقع بنابراین ما
78
00:02:33,599 –> 00:02:35,440
این فیلد سودوکو را داریم اینجا پس این یک
79
00:02:35,440 –> 00:02:36,000
80
00:02:36,000 –> 00:02:39,040
سلول سه در سه است اینجا اوه می توانم این کار را با اوه
81
00:02:39,040 –> 00:02:39,920
نه
82
00:02:39,920 –> 00:02:41,760
بیا اوه اوه مهم نیست
83
00:02:41,760 –> 00:02:44,480
مثل آن صفر صفر صفر صفر صفر
84
00:02:44,480 –> 00:02:45,599
صفر سه در نه
85
00:02:45,599 –> 00:02:47,519
این یک فیلد سه در سه در
86
00:02:47,519 –> 00:02:49,440
بالا سمت چپ است سپس ما سطرها را نیز
87
00:02:49,440 –> 00:02:50,720
داریم و باید
88
00:02:50,720 –> 00:02:53,519
اعداد um خاصی را برای موقعیتهای فردی پیدا کنیم،
89
00:02:53,519 –> 00:02:55,120
بنابراین صفر به معنای
90
00:02:55,120 –> 00:02:57,280
تعریفنشده در این زمینه اشتباه است، زیرا
91
00:02:57,280 –> 00:02:58,560
ما یک تا نه داریم،
92
00:02:58,560 –> 00:03:01,360
اوه، بنابراین اگر من این را انتخاب کنم که این پنج باشد،
93
00:03:01,360 –> 00:03:03,440
این یک تصمیم است که من میگیرم
94
00:03:03,440 –> 00:03:06,319
و این تصمیم میتواند منجر شود به
95
00:03:06,319 –> 00:03:07,040
راه حل
96
00:03:07,040 –> 00:03:09,440
و آنچه که عقب نشینی انجام می دهد این است که
97
00:03:09,440 –> 00:03:12,000
همه راه های ممکن را به صورت بی رحمانه اعمال می کند،
98
00:03:12,000 –> 00:03:14,400
بنابراین می بیند که خوب است این یک صفر است، بنابراین
99
00:03:14,400 –> 00:03:16,319
بیایید سعی کنیم آن را روی یک تنظیم کنیم، اجازه دهید
100
00:03:16,319 –> 00:03:18,959
بپذیریم که یکی راه حل درستی است،
101
00:03:18,959 –> 00:03:20,800
در این مورد نیز کار می کند زیرا یک
102
00:03:20,800 –> 00:03:21,840
در این ردیف نیست،
103
00:03:21,840 –> 00:03:24,000
اوه در این ستون، یکی در این
104
00:03:24,000 –> 00:03:26,239
ردیف نیست و یکی نیز در این فیلد نیست، بنابراین امتحان
105
00:03:26,239 –> 00:03:27,680
کردن یک
106
00:03:27,680 –> 00:03:29,840
چیز معتبر است، سپس می توانیم به اینجا برویم و
107
00:03:29,840 –> 00:03:30,799
بگوییم خوب
108
00:03:30,799 –> 00:03:33,760
، نمی تواند یک باشد، آیا می شود دو
109
00:03:33,760 –> 00:03:35,920
نمی تواند دو باشد زیرا ما یک دو در اینجا
110
00:03:35,920 –> 00:03:37,440
و غیره داریم و
111
00:03:37,440 –> 00:03:39,599
همه فیلدها را مرور می کنیم تا زمانی که متوجه
112
00:03:39,599 –> 00:03:42,239
شویم برای یک سلول خاص نمی
113
00:03:42,239 –> 00:03:44,799
توانیم یک عدد را پیدا کنیم، بنابراین بیایید بگوییم
114
00:03:44,799 –> 00:03:47,920
اوم یک اینجا را امتحان می کنم و
115
00:03:47,920 –> 00:03:50,159
یک را نمی کنم یک پنج اینجا شاید و غیره بدانید
116
00:03:50,159 –> 00:03:52,080
و همه چیز خوب پیش می رود، اما دیر
117
00:03:52,080 –> 00:03:54,000
یا زود شاید در این زمینه می بینم که
118
00:03:54,000 –> 00:03:55,360
نمی توانم یکی را انتخاب
119
00:03:55,360 –> 00:03:58,319
کنم، نه دو، نه سه، نه چهار، هیچ
120
00:03:58,319 –> 00:03:59,360
عددی در اینجا مناسب
121
00:03:59,360 –> 00:04:02,400
نیست، بنابراین اوه آنوقت می دانم که
122
00:04:02,400 –> 00:04:04,080
مشکلی پیش آمده است. من قصد دارم به false برگردم
123
00:04:04,080 –> 00:04:05,519
و ما قصد داریم چیز دیگری را امتحان کنیم
124
00:04:05,519 –> 00:04:07,120
ایده اصلی قبل از اینکه
125
00:04:07,120 –> 00:04:08,879
در اینجا خیلی پیچیده شویم و خیلی عمیق به
126
00:04:08,879 –> 00:04:09,840
127
00:04:09,840 –> 00:04:12,000
توضیح بپردازیم، ایده اصلی عقب نشینی این است که
128
00:04:12,000 –> 00:04:13,760
ما فقط به دنبال آن هستیم، ما
129
00:04:13,760 –> 00:04:14,080
فقط
130
00:04:14,080 –> 00:04:16,478
چیزی را امتحان می کنیم که
131
00:04:16,478 –> 00:04:17,120
حداقل برای او
132
00:04:17,120 –> 00:04:19,358
در حال حاضر منطقی باشد و ما. دوباره از
133
00:04:19,358 –> 00:04:21,440
سوراخ خرگوش پایین می رویم تا زمانی که ببینیم این
134
00:04:21,440 –> 00:04:23,199
شاخه از تصمیمات
135
00:04:23,199 –> 00:04:25,040
کار نمی کند، به یک
136
00:04:25,040 –> 00:04:26,639
نتیجه منتهی نمی شود زیرا سودوکو یک
137
00:04:26,639 –> 00:04:28,400
نتیجه صحیح دارد و
138
00:04:28,400 –> 00:04:30,479
اگر به آن نتیجه نرسیم این
139
00:04:30,479 –> 00:04:32,479
راه حل است. اشتباه است، بنابراین ما
140
00:04:32,479 –> 00:04:34,160
چیز دیگری را امتحان می کنیم، بنابراین اساساً
141
00:04:34,160 –> 00:04:35,440
142
00:04:35,440 –> 00:04:38,080
همه سناریوهای ممکن را به زور تمام
143
00:04:38,080 –> 00:04:39,840
تصمیمات را مجبور می کنیم و دیر یا
144
00:04:39,840 –> 00:04:42,240
زود یک تصمیم را پیدا می کنیم
145
00:04:42,240 –> 00:04:44,639
، زنجیره تصمیمی که منجر به
146
00:04:44,639 –> 00:04:45,840
سودوکوی حل شده می شود.
147
00:04:45,840 –> 00:04:47,840
و اگر آن را پیدا نکردیم،
148
00:04:47,840 –> 00:04:49,520
سودوکو هیچ راه حلی ندارد، بنابراین این همان کاری است که
149
00:04:49,520 –> 00:04:51,680
امروز می خواهیم انجام دهیم،
150
00:04:51,680 –> 00:04:53,199
پس بیایید با پیاده سازی شروع کنیم،
151
00:04:53,199 –> 00:04:54,720
اول از همه شما به
152
00:04:54,720 –> 00:04:55,600
یک شبکه
153
00:04:55,600 –> 00:04:57,360
نیاز دارید، برای مثال این یکی است. شبکه ای که می
154
00:04:57,360 –> 00:04:59,440
توانید داشته باشید اساسا شما فقط می گویید شبکه
155
00:04:59,440 –> 00:05:02,160
برابر است و سپس شما یک لیست از لیست ها
156
00:05:02,160 –> 00:05:02,880
دارید و شما
157
00:05:02,880 –> 00:05:04,880
9 لیست در داخل آن لیست دارید زیرا
158
00:05:04,880 –> 00:05:06,400
آن ها ردیف ها هستند
159
00:05:06,400 –> 00:05:09,280
و در داخل آن ردیف ها شما 9
160
00:05:09,280 –> 00:05:10,080
عدد دارید
161
00:05:10,080 –> 00:05:12,800
که ستون ها هستند بنابراین اوه این اساساً
162
00:05:12,800 –> 00:05:14,800
فقط یک فیلد سودوکو است البته ما نداریم. در
163
00:05:14,800 –> 00:05:15,600
164
00:05:15,600 –> 00:05:18,160
اینجا خطوطی را داشته باشید که
165
00:05:18,160 –> 00:05:20,080
هر سه بلوک را از هم جدا
166
00:05:20,080 –> 00:05:21,360
می کنند، اما می توانید تصور کنید که
167
00:05:21,360 –> 00:05:22,800
اوه و البته لازم نیست از
168
00:05:22,800 –> 00:05:24,560
این فیلد سودوکو استفاده کنید، فقط می توانید
169
00:05:24,560 –> 00:05:26,479
از هر فیلد سودوکو که
170
00:05:26,479 –> 00:05:28,479
آنلاین یا در آن پیدا می کنید استفاده کنید.
171
00:05:28,479 –> 00:05:31,360
یک روزنامه که من نمی دانم و شما فقط می
172
00:05:31,360 –> 00:05:32,240
173
00:05:32,240 –> 00:05:34,560
توانید اعداد 0 را وارد کنید یعنی هیچ شماره ای
174
00:05:34,560 –> 00:05:35,440
وجود ندارد
175
00:05:35,440 –> 00:05:37,039
و بقیه اعداد فقط پر
176
00:05:37,039 –> 00:05:38,479
شده اند بنابراین این چیزی است که ما با آن کار خواهیم
177
00:05:38,479 –> 00:05:40,400
کرد این فقط یک شبکه
178
00:05:40,400 –> 00:05:42,800
است و اولین چیزی که ما در
179
00:05:42,800 –> 00:05:43,840
اینجا پیادهسازی میکنیم یک
180
00:05:43,840 –> 00:05:45,520
تابع کمکی است که به آن نیاز داریم،
181
00:05:45,520 –> 00:05:47,199
زیرا البته به چیزی
182
00:05:47,199 –> 00:05:48,960
که گفتم فکر کنید، ما نمیخواهیم همه ترکیبها را امتحان کنیم
183
00:05:48,960 –> 00:05:50,720
چرا میخواهید
184
00:05:50,720 –> 00:05:52,479
از سوراخ خرگوش پایین بیایید.
185
00:05:52,479 –> 00:05:55,520
حتی برای یک امتحان معتبر هم بررسی
186
00:05:55,520 –> 00:05:57,199
نکنید به عنوان مثال، اگر من
187
00:05:57,199 –> 00:06:00,080
یک 3 را در اینجا بپذیرم، این کار نمی کند
188
00:06:00,080 –> 00:06:01,840
زیرا باید ببینم که
189
00:06:01,840 –> 00:06:04,000
یک 3 در حال حاضر در این ستون و همچنین
190
00:06:04,000 –> 00:06:05,520
در این
191
00:06:05,520 –> 00:06:07,600
بلوک 3×3 در اینجا وجود دارد، بنابراین نمی توانم از یک سه در
192
00:06:07,600 –> 00:06:08,720
این موقعیت استفاده کنم
193
00:06:08,720 –> 00:06:10,800
و البته به معیارهایی نیز نیاز دارم.
194
00:06:10,800 –> 00:06:12,479
برای گفتن خوب، هیچ راه حل ممکنی وجود ندارد،
195
00:06:12,479 –> 00:06:14,400
بنابراین باید یک
196
00:06:14,400 –> 00:06:15,199
تابع اعتبارسنجی داشته
197
00:06:15,199 –> 00:06:18,000
باشیم که بررسی کند آیا تلاش خاصی معتبر است یا
198
00:06:18,000 –> 00:06:18,400
نه،
199
00:06:18,400 –> 00:06:21,280
آیا میتوانیم این حرکتی را که
200
00:06:21,280 –> 00:06:22,160
میخواهیم انجام دهیم،
201
00:06:22,160 –> 00:06:25,440
بنابراین میخواهیم بگوییم حرکت def معتبر است یا خیر.
202
00:06:25,440 –> 00:06:28,080
و ما آن
203
00:06:28,080 –> 00:06:29,759
تابع را به کل شبکه
204
00:06:29,759 –> 00:06:32,720
منتقل می کنیم، ردیف ستون و عدد را پاس می
205
00:06:32,720 –> 00:06:35,039
کنیم، بنابراین می خواهیم
206
00:06:35,039 –> 00:06:38,240
اساساً در این شبکه در این
207
00:06:38,240 –> 00:06:40,639
موقعیت، این عدد یک حرکت معتبر است و اگر
208
00:06:40,639 –> 00:06:41,440
اینطور نیست،
209
00:06:41,440 –> 00:06:43,520
ما من این کار را انجام نمی دهم، بنابراین اول از همه
210
00:06:43,520 –> 00:06:45,520
اجازه دهید من از شر آن خلاص شوم،
211
00:06:45,520 –> 00:06:47,680
زیرا بعداً آن را وارد می
212
00:06:47,680 –> 00:06:48,720
کنیم، اوه، می خواهیم بگوییم که
213
00:06:48,720 –> 00:06:52,319
آیا معتبر است حرکت اوم،
214
00:06:52,319 –> 00:06:53,039
ابتدا بررسی کنیم
215
00:06:53,039 –> 00:06:55,520
که آیا چیزی وجود دارد در همان ردیف
216
00:06:55,520 –> 00:06:57,199
چیزی در همان ستون
217
00:06:57,199 –> 00:06:59,520
وجود دارد و آیا چیزی در همان بلوک
218
00:06:59,520 –> 00:07:02,000
وجود دارد که این مقدار را دارد بنابراین
219
00:07:02,000 –> 00:07:03,199
ما میخواهیم بگوییم
220
00:07:03,199 –> 00:07:06,560
uh چهار x در محدوده
221
00:07:06,560 –> 00:07:09,360
نه، بنابراین برای هر نه سطر یا
222
00:07:09,360 –> 00:07:10,560
ستون هر
223
00:07:10,560 –> 00:07:14,240
چه میخواهیم بگوییم اگر شبکه
224
00:07:14,240 –> 00:07:18,160
در آن سطر خاص برای هر x در آن
225
00:07:18,160 –> 00:07:18,639
سطر
226
00:07:18,639 –> 00:07:22,960
اگر um یک عدد باشد،
227
00:07:22,960 –> 00:07:25,360
پس ما false را برمی گردانیم زیرا
228
00:07:25,360 –> 00:07:27,440
بدیهی است که
229
00:07:27,440 –> 00:07:29,520
اگر در همان ردیف این عدد دقیق را داشته باشیم،
230
00:07:29,520 –> 00:07:32,400
این نمی تواند یک حرکت معتبر باشد
231
00:07:32,400 –> 00:07:34,960
و البته من فقط می توانم آن را اینجا کپی کنم
232
00:07:34,960 –> 00:07:35,759
و
233
00:07:35,759 –> 00:07:40,160
متاسفم می توانم آن را اینجا کپی کنم و
234
00:07:40,160 –> 00:07:43,199
همان کار را با ستون انجام دهم بنابراین
235
00:07:43,199 –> 00:07:46,720
x اینجا و ستون اینجا um،
236
00:07:46,720 –> 00:07:48,240
بنابراین اگر همان عدد را در
237
00:07:48,240 –> 00:07:50,000
همان ستون داشته باشیم، البته
238
00:07:50,000 –> 00:07:50,960
حرکت معتبری نیست
239
00:07:50,960 –> 00:07:52,560
و اکنون برای حرکت بعدی باید
240
00:07:52,560 –> 00:07:54,080
کمی بیشتر انجام دهیم، باید
241
00:07:54,080 –> 00:07:55,520
گوشه را پیدا کنیم، بنابراین
242
00:07:55,520 –> 00:07:59,360
می گوییم سطر گوشه سطر منهای
243
00:07:59,360 –> 00:08:02,879
سطر مدول 3 خواهد بود به طوری
244
00:08:02,879 –> 00:08:06,560
که ردیف بالا سمت چپ
245
00:08:06,560 –> 00:08:09,599
را از این کادر 3×3 می
246
00:08:09,599 –> 00:08:11,759
یابیم پس گوشه و همچنین ستون ها را می یابیم بنابراین می
247
00:08:11,759 –> 00:08:14,800
گوییم ستون گوشه ستون
248
00:08:14,800 –> 00:08:18,720
منهای خواهد بود. ستون uh مدول 3 و سپس می گوییم
249
00:08:18,720 –> 00:08:22,960
4x در محدوده 3
250
00:08:22,960 –> 00:08:27,840
برای y در محدوده 3
251
00:08:27,840 –> 00:08:30,400
ما فقط می گوییم خوب است اگر i h ave
252
00:08:30,400 –> 00:08:32,159
در
253
00:08:32,159 –> 00:08:37,599
ردیف گوشه شبکه به اضافه x ستون گوشه به اضافه y
254
00:08:37,599 –> 00:08:40,000
اگر من یک عدد در داخل آن
255
00:08:40,000 –> 00:08:41,599
فیلد سه در سه
256
00:08:41,599 –> 00:08:44,240
داشته باشم، false را نیز برمی گردانیم و اگر تا کنون false را برنگردانده باشم،
257
00:08:44,240 –> 00:08:46,480
258
00:08:46,480 –> 00:08:47,360
259
00:08:47,360 –> 00:08:49,600
باید درست باشد پس این باید یک
260
00:08:49,600 –> 00:08:51,519
حرکت معتبر باشد، بنابراین فقط true را برگردانید،
261
00:08:51,519 –> 00:08:53,200
این یک تابع کمکی بسیار ساده
262
00:08:53,200 –> 00:08:55,040
است، تنها کاری که انجام می دهد این است که در اصل فقط
263
00:08:55,040 –> 00:08:56,800
به دنبال وجود همان
264
00:08:56,800 –> 00:08:58,240
عدد در همان سطر
265
00:08:58,240 –> 00:09:00,720
در همان ستون یا در همان سه
266
00:09:00,720 –> 00:09:02,720
در سه فیلد است، بنابراین فقط یک تابع کمکی،
267
00:09:02,720 –> 00:09:04,320
این عقب نشینی
268
00:09:04,320 –> 00:09:05,120
نیست، اما
269
00:09:05,120 –> 00:09:07,519
حالا ردیابی تابع بک
270
00:09:07,519 –> 00:09:08,880
ترک فقط حل نامیده می شود،
271
00:09:08,880 –> 00:09:10,240
زیرا تمام
272
00:09:10,240 –> 00:09:12,880
حل ها را انجام می دهد و واقعاً پیچیده
273
00:09:12,880 –> 00:09:14,480
نیست، در واقع اجرای آن بسیار پیش پا افتاده است،
274
00:09:14,480 –> 00:09:16,000
بنابراین ما نمی خواهیم داشتن
275
00:09:16,000 –> 00:09:17,600
کدهای زیادی برای نوشتن در
276
00:09:17,600 –> 00:09:19,360
اینجا، نکته دشوار این است که بفهمیم چه
277
00:09:19,360 –> 00:09:21,680
اتفاقی در حال رخ دادن است، زیرا بازگشت ممکن
278
00:09:21,680 –> 00:09:23,440
است برای مبتدیان کمی گیج کننده باشد، بنابراین
279
00:09:23,440 –> 00:09:24,880
ما با گفتن
280
00:09:24,880 –> 00:09:28,08