Asosiy mazmunga o'tish

Algorithms — qiynaladigan joylar

Bu sahifa dars rejasi emas — u darsdan oldin besh daqiqa o’qish uchun. Har qatorda bitta aniq joy va uni ochadigan bitta harakat yozilgan.

Dars Qoqiladigan joy Ochish usuli
1 «Aniq ko’rsatma» mavhum tuyuladi Sendvich mashqini oxirigacha o’tkazing. Robotni o’zingiz o’ynang va ataylab so’zma-so’z bajaring
1 eng = 0 xatosi tabiiy ko’rinadi Manfiy sonli ro’yxatni doskaga yozing va javobni birga hisoblang
2 «To’liq izlash — bu yomon yechim» Aksincha ekanini ayting: u qisman ball beradi va etalon bo’ladi. Bu fikr 15 va 39-darslarda takrorlanadi
3 Devorga urilganda buyruq «bekor bo’ladi» deb o’ylash Shartdagi jumlani ovoz chiqarib o’qing va tanga bilan ko’rsating
4 Murakkablikni formula deb qabul qilish Doskaga formula yozmang. Faqat ikkita ustun: chegara va amal soni
4 10⁸ Python uchun ham deb o’ylash Python’da 10⁷ ekanini alohida ayting. Bu tuzoq darsning o’zida bor
5 p[r] − p[l] va p[r+1] − p[l] farqi Bir elementli oraliqni tekshiring: javob nol chiqsa xato topildi
6 uylar = uylar.sort() print(uylar.sort()) ni ekranda ishlatib ko’rsating: None chiqadi
7 Cheksiz sikl kichik testda ko’rinmaydi Ikki elementli ro’yxatda qo’lda qadamlang: orta qayerga tushadi?
8 «Uch testda ishladi, demak to’g’ri» 1, 3, 4 tizimini darhol ko’rsating. Bu darsning butun mazmuni
Dars Qoqiladigan joy Ochish usuli
9 Ro’yxatdagi in bepul deb o’ylash Kod ikki holatda bir xil ko’rinadi — shuni ta’kidlang. Farq faqat turda
9 To’plamga ro’yxat qo’shishga urinish TypeError ni ekranda ko’rsating va sababini ayting
10 Ikkala ko’rsatkichni birdan surish Arqon mashqida qo’lni surganda «nega bu?» deb so’rang
10 Ichki while ni O(n²) deb hisoblash chap necha qadam yuradi degan savolni bering — javob n
11 Uchni stekdan olganda belgilash Siklli grafda stek shishishini ekranda ko’rsating
12 list.pop(0) va deque.popleft() bir xil deb o’ylash Navbat mashqida «qolganlar bir qadam yursin» qoidasini qo’llang
13 Yo’nalishni teskari qilish Kichik misolda javobni oldindan bilib turib yurgizing
13 «Javobni qidirish» degan fikrga ko’nikmaslik Uch masalani ham o’ting. Bittasi yetmaydi — bu ataylab shunday
14 Boshlanish yoki uzunlik bo’yicha saralash (0,10), (1,2), (3,4) misolini doskaga chizing
15 «500 testdan o’tdi, demak to’g’ri» Generator yasay olmaydigan holatni so’rang: masalan hamma son manfiy
16 Isbotni «tushuntirish» bilan almashtirish Har «demak» so’zining tagida nima yotganini so’rang
Dars Qoqiladigan joy Ochish usuli
17 Matritsa muammosini vaqt deb o’ylash Bu xotira: 10⁵ × 10⁵ nechta katak? Doskada hisoblang
18 Rekursiv DFS ishonchli tuyuladi 100 ming uchli zanjirni yasang va RecursionError ni ko’rsating
18 korilgan ni ichki siklda e’lon qilish Ikki variantni yonma-yon yozing va vaqtini o’lchang
19 BFS va DFS ni chalkashtirish Bitta grafda ikkalasini ham yurgizing va tartibni solishtiring
19 pop(0) bilan BFS Bu xato javobni buzmaydi — shuni ayting, aks holda topilmaydi
20 Chegara tekshiruvining tartibi Manfiy indeks Python’da ishlaydi — buni ekranda ko’rsating
21 Holatni tiklashni unutish n = 8 da javob 92 emas, kichikroq chiqadi. Ikkalasini solishtiring
22 Sikl holatini tekshirmaslik Kiyinish grafiga halqa qo’shing va nima bo’lishini so’rang
23 Teskari tartibni tushunmaslik Uch qavatli daraxtda qo’lda: otani bolalardan oldin hisoblab ko’ring
24 Dijkstra manfiy vaznda ishlaydi deb o’ylash Darsdagi to’rt uchli misolni ekranda yurgizing
Dars Qoqiladigan joy Ochish usuli
25 DP ni formula deb qabul qilish Chaqiruv daraxtini qog’ozda chizdiring. Formula umuman aytilmaydi
25 Memoizatsiya tekshiruvini noto’g’ri joyga qo’yish Chaqiruv hisoblagichini qo’shing: 433 993 va 23
26 Holatni noaniq ta’riflash dp[i] ning ma’nosini gap qilib yozdiring, keyin tekshiring
26 Javobni dp[n-1] deb olish [1, 2, 3, 0] misolini bering
27 Ichki sikl yo’nalishi Bir narsali misolni ikki yo’nalishda yurgizing va jadvalni solishtiring
28 Jadval to’ldirish tartibi «Bu katak hisoblanayotganda qaysilari tayyor bo’lishi kerak?»
29 Mos kelmaganda diagonaldan olish 4 × 4 jadvalni qo’lda to’ldirtiring
30 ota[b] = a (vakil emas) Varaqchalar bilan ko’rsating: butun guruh ajralib qoladi
30 Takroriy birlashtirishni tekshirmaslik Generatorda takror bo’lishi kerakligini ayting
31 n − 1 tekshiruvini unutish Bog’lanmagan graf testini bering
32 qosh(i, x) qiymatni o’rnatadi deb o’ylash Bir marta o’zgartirishdan keyin jadvalni chop etib ko’rsating
32 Nol indeksdan boshlash 0 & (-0) ni ekranda hisoblang: natija nol, sikl to’xtamaydi
Dars Qoqiladigan joy Ochish usuli
33 maska & i bilan bit tekshirish Barcha maskalarni chop etib, qaysi to’plam chiqayotganini ko’rsating
34 Modul ostida bo’lishga urinish (10 // 3) % 7 va 10 * pow(3, 5, 7) % 7 ni solishtiring
34 Elakda p * p o’rniga 2 * p Ikkalasi ham to’g’ri javob beradi — farq faqat tezlikda. Buni ayting
35 «Tartib muhimmi?» savolini bermaslik Har masalada shu savolni birinchi so’rang
35 b > a holatini tekshirmaslik Manfiy indeks natijasini ekranda ko’rsating
36 Og’ish (dy/dx) ishlatish 0.1 + 0.2 == 0.3 ni ekranda yurgizing
36 Vertikal chiziqda nolga bo’lish (0,0), (0,5), (0,9) misolini bering
37 Vaqtdan oshganda darhol C++ ga o’tish Avval kirish-chiqishni tuzatishni so’rang — ko’p holatda yetadi
38 Tanish tuzilmani ko’rib savolni o’qimaslik Intervalli uch xil masalani yonma-yon qo’ying
39 Bitta masalaga tiqilib qolish Sekundomer qo’ying va 15 daqiqada ovoz chiqsin
40 Upsolvingni tahlil o’qish bilan almashtirish «Qabul qilindi» belgisini talab qiling

Bu uchtasi bitta darsga tegishli emas — ular qayta-qayta qaytadi va har safar eslatish kerak.

Chegarani o’qimaslik. Eng qimmat odat. Har masalada birinchi savol: chegara qancha? Uni doskaga yozdiring — og’zaki aytish yetarli emas.

Kichik testda tekshirmaslik. Ko’p xato n = 1 da yoki bir elementli ro’yxatda darhol ko’rinadi. Bu tekshiruvni odatga aylantirish 15-darsning vazifasi, lekin u birinchi darsdan boshlab talab qilinadi.

«Ishladi» so’zi bilan to’xtash. Uch testda ishlagan yechim to’g’ri emas. 16-dars bunga bag’ishlangan, lekin savol har darsda so’raladi: nega ishlaydi?