JavaScript-da kalendar amalga oshirishni muhokama qilish
Bizning kalendarimiz oyning oxirgi kunigacha
1 dan boshlanadigan raqamlardan iborat jadvaldir.
Muammo shundaki, jadvaldagi raqamlar birinchi
qatorda birinchi katakdan boshlanmasligi kerak.
Bu umuman olganda aniq. Qaysi aniq katakdan boshlash kerakligi aniq emas. Keling, o'ylab ko'raylik.
Faraz qilaylik, hafta dushanbadan boshlansin va
u nolinchi kun. Bu holda oyning birinchi kuni
hafta kunining raqami uning oldidagi
bo'sh kataklar soniga to'g'ri keladi. Masalan,
payshanba 3 raqamiga ega bo'ladi va uning
oldida 3 ta bo'sh katak bo'ladi.
Shu o'xshash muammo bizni jadvalning oxirida ham kutadi. U yerda ham oyning oxirgi raqamidan keyin bo'sh kataklarni qoldirish kerak. Bu holda bo'sh kataklar soni oltidan oyning oxirgi kunining hafta kun raqamini ayirishga teng bo'ladi.
Keling, endi jadvalimizni qanday shakllantirishimiz
haqida o'ylaymiz. Aniqki, qulayroq usul
ikki o'lchamli massivga ega bo'lish bo'lib, unda har bir ichki massivda
7 ta element bo'ladi (= haftadagi kunlar soni).
Bunda birinchi va oxirgi ichki massivlarning bir qismi bo'sh bo'lishi kerak.
Amallar algoritmi
Keling, 1 dan oyning oxirgi kunigacha bo'lgan raqamlar massivini
yaratadigan funksiya yarataylik.
Keyin massiv boshiga kerakli miqdorda bo'sh
elementlarni qo'shadigan funksiya yarataylik.
Shu o'xshash funksiya massiv oxiriga
bo'sh elementlarni qo'shishi kerak.
Shundan so'ng bizda elementlari soni 7 ga
karrali bo'lgan bir o'lchamli massiv hosil bo'ladi.
Ushbu massivni 7 ta
elementli ichki massivlarga ega ikki o'lchamli massivga aylantiramiz.
Keyin bu ikki o'lchamli massivni olamiz, tsikllar bilan qayta ishlaymiz va jadvalimizni shakllantiramiz.
Ushbu amallar algoritmini bosqichma-bosqich keyingi darslarda bajaramiz.