JavaScript-də təqvim realizasiyasının müzakirəsi
Bizim təqvim aydın sonuncu gününə qədər 1-dən
rəqəmləri olan bir cədvəldir.
Problem ondadır ki, cədvəldəki rəqəmlər birinci
sətirdə birinci xanadan başlamamalıdır.
Bu ümumiyyətlə aydındır. Tam olaraq hansı xanadan başlamaq lazım olduğu aydın deyil. Gəlin düşünək.
Tutaq ki, həftə bazar ertəsi ilə başlayır və
o sıfırıncı gündür. Bu halda ayın birinci gününün
həftə günü nömrəsi onun qarşısındakı boş
xanaların sayına uyğun gəlir. Məsələn,
cümə axşamı 3 nömrəsinə sahib olacaq və onun
qarşısında 3 boş xana olacaq.
Oxşar problem bizi cədvəlin sonunda da gözləyir. Orada da ayın son rəqəmindən sonra boş xanalar buraxmaq lazımdır. Bu halda boş xanaların sayı altıdan ayın son gününün həftə günü nömrəsini çıxmaqla əldə ediləcək.
İndi gəlin cədvəlimizi necə formalaşdıracaq
olduğumuzu düşünək. Aydındır ki, ən əlverişlisi
hər bir alt massivdə 7 element (= həftədəki
günlərin sayı) olan iki ölçülü massivə sahib
olmaqdır. Eyni zamanda birinci və sonuncu
alt massivlərdə elementlərin bir hissəsi boş olmalıdır.
Hərəkət alqoritmi
Gəlin 1-dən ayın son gününə qədər rəqəmlər
massivi yaradan bir funksiya edək.
Sonra massivin əvvəlinə lazımi sayda boş
element əlavə edən bir funksiya edək.
Oxşar bir funksiya massivin sonuna boş
elementlər əlavə etməlidir.
Bundan sonra elementlərin sayı 7-ə qat olan
bir ölçülü massiv əldə edəcəyik.
Bu massivi hər alt massivdə 7
element olmaqla iki ölçülüyə çevirək.
Sonra bu iki ölçülü massivi götürək, dövrələrlə keçək və cədvəlimizi formalaşdıraq.
Biz bu hərəkət alqoritmini növbəti dərslərdə mərhələli olaraq yerinə yetirəcəyik.