Add course schedules for ISF and ITZS programs for 2026 and 2024 sessions

- Created new snapshot files for ISF credits and daily schedules for the 26-АРХ and 26-ПГС programs.
- Added summer 2026 and winter 2024 exam schedules for the 23-ИТзс program, detailing lectures, labs, and consultations.
This commit is contained in:
2026-10-19 22:55:28 +03:00
parent 15851b26cd
commit e38c388462
24 changed files with 73775 additions and 70942 deletions

View File

@@ -20,7 +20,7 @@ const MONTHS = [
const DAY_MS = 86400000;
/**
* "6-13н", "1-4,6-11н.", "с 3н.", "со 2 нед.", "1-8,10-17" → [[6, 13]], [[1, 4], [6, 11]], [[3, null]]…
* "6-13н", "1-4,6-11н.", "1-4н.;6-12н.", "с 3н.", "со 2 нед.", "1-8,10-17" → [[6, 13]], [[1, 4], [6, 11]], [[3, null]]…
* Returns null when the text is empty or not a pure week list.
*/
export function parseWeekRanges(condition) {
@@ -28,10 +28,12 @@ export function parseWeekRanges(condition) {
if (!text) return null;
const from = text.match(/^(?:с|со)\s*(\d{1,2})\s*(?:н(?:ед)?)?[.\s]*$/);
if (from) return [[Number(from[1]), null]];
// "с 4-16н" reads as an ordinary range.
// "с 4-16н" reads as an ordinary range; "1-4н.;6-12н." and "2-5 н., 10-17 н." as one list.
text = text
.replace(/^(?:с|со)\s+/, "")
.replace(/\s*н(?:ед)?[.\s]*$/, "")
.replace(/\s*н(?:ед)?\.?\s*(?=[;,])/g, "")
.replace(/\s*;\s*/g, ",")
.trim();
if (!/^\d{1,2}(?:\s*[-–,]\s*\d{1,2})*$/.test(text)) return null;
const ranges = [];