JavaScript-de kalendaryň amala aşyrylyşyny maslahatlaşmak
Bizim kalendarymyz aýyň soňky gününe çenli 1-den sanlar bilen tablisa şekilinde.
Mesele şonda ýatýar, tablisadaky sanlar birinji hatarda birinji öýjükden başlamaly däldir.
Bu, umuman, aýdyňdyr. Aýdyň bolmadyk bolsa, haýsy öýjükden başlamaly. Geliň oýlanyşalyň.
Hepde duşenbe gününden başlaýar we ol nolünji gün bolsun diýeliň. Bu ýagdaýda, aýyň birinji gününiň hepde gününiň nomeri, onuň öňündäki boş öýjükleriň sanyna gabat gelýär. Mysal üçin, penşenbe günü 3 nomere ege bolup, onuň öňünde 3⁅/n ⁆ sany boş öýjük bolmaly.
Meňzeş meselä tablisanyň ahyrynda-da duşarys. Şol ýerde hem aýyň soňky gününden soň boş öýjükleri goýup gitmeli. Bu ýagdaýda, boş öýjükleriň sany altydan, aýyň soňky gününiň hepde gününiň nomeri aýyrylanda deň bolmaly.
Indi, tablisamyzy nädip düzeris diýip oýlanyşalyň. Aýdyň görnüşde, iň amatly bolmagy, her bir kiçi massiwinde 7⁅/n ⁆ sany element (= hepdäki günleriň sany) bolan iki ölçegli massiwe eýe bolmakdyr. Şol bir wagtyň özünde, birinji we soňky kiçi massiwleriniň bir bölegi boş elementlerden ybarat bolmaly.
Hereketler algoritmi
1⁅/n ⁆-den aýyň soňky gününe çenli sanlar massiwini düzýän funksiýa ýasalyň.
Soňra, massiwiň başyna zerur mukdarda boş elementleri goşýan funksiýa ýasalyň. Şoňa meňzeş funksiýa massiwiň ahyryna boş elementleri goşmaly.
Şondan soň, bizde elementleriň sany 7⁅/n ⁆-e bölünýän bir ölçegli massiw ýüze çykar. Bu massiwi her kiçi massiwde 7⁅/n ⁆ element bolmak şertinde iki ölçegli massiwe öwüremeli.
Soňra, bu iki ölçegli massiwi alyp, aýlawlar bilen gaýtalaýarys we tablisamyzy düzýäris.
Bu hereketler algoritmini indiki sapaklarda bäsleşikli amala aşyrarys.