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.
1-daraja · Bronza
“1-daraja · Bronza” bo'limiga havola| 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 |
2-daraja · Kumush
“2-daraja · Kumush” bo'limiga havola| 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 |
3-daraja · Oltin
“3-daraja · Oltin” bo'limiga havola| 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 |
4-daraja · Platina
“4-daraja · Platina” bo'limiga havola| 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 |
5-daraja · Olimpiada
“5-daraja · Olimpiada” bo'limiga havola| 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 |
Butun modul bo’ylab uchraydigan uchta narsa
“Butun modul bo’ylab uchraydigan uchta narsa” bo'limiga havolaBu 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?
Algorithms modulining boshqa materiallari
“Algorithms modulining boshqa materiallari” bo'limiga havola- Dars rejalari — 45 daqiqalik tuzilma va daraja jadvallari
- Qatlam mezonlari — topshiriqlarni baholash
- Haftalik jang — sinf musobaqasi formati
- Olimpiada yo’li — bosqichlar va kalendar