"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic = exports.KursblockungStatic = void 0; const JavaObject_1 = require("../../java/lang/JavaObject"); const KursblockungInputRegel_1 = require("../../core/data/kursblockung/KursblockungInputRegel"); class KursblockungStatic extends JavaObject_1.JavaObject { constructor() { super(); } /** * Erzeugt ein Array der Größe {@code n}, füllt es mit den Zahlen * {@code 0 bis n-1} und permutiert das Array dann zufällig. * * @param n Die Größe des Arrays. * @return Eine Array-Referenz. */ static gibPermutation(n) { let temp = Array(n).fill(0); for (let i = 0; i < n; i++) { temp[i] = i; } KursblockungStatic.aktionPermutiere(temp); return temp; } /** * Permutiert das Array {@code perm} zufällig. * * @param perm Das zu permutierende Array. */ static aktionPermutiere(perm) { let n = perm.length; for (let i1 = 0; i1 < n; i1++) { let i2 = (Math.random() * n); let s1 = perm[i1]; let s2 = perm[i2]; perm[i1] = s2; perm[i2] = s1; } } /** * Erweitert die Eingabedaten {@link KursblockungInput} um eine Regel, welche * bestimmte Schienen für bestimmte Kursarten sperrt. * * @param pInput Das Eingabeojekt, welchem eine neue Regel hinzugefügt wird. * @param pKursart Eine String-Darstellung der Kursart. * @param pVon Sperrung aller Schienen von (inklusive, 0-indiziert). * @param pBis Sperrung aller Schienen bis (inklusive, 0-indiziert). */ static aktionSperreSchieneFuerKursart(pInput, pKursart, pVon, pBis) { for (let i = 0; i < pInput.kursarten.size(); i++) { let kursart = pInput.kursarten.get(i); if (JavaObject_1.JavaObject.equalsTranspiler(kursart.representation, (pKursart))) { let r = new KursblockungInputRegel_1.KursblockungInputRegel(); r.id = 1; r.daten = [kursart.id, pVon, pBis]; pInput.regeln.add(r); } } } /** * Erweitert die Eingabedaten {@link KursblockungInput} um Regeln, die bestimmte * Kurse in einer Schiene fixieren, andere Kurse die Schiene verbieten. * * @param pInput Das Eingabeojekt, welchem eine neue Regel hinzugefügt wird. * @param pKursnamen Die zu fixierenden Kursnamen * @param pSchiene Die Schiene in der die Kurse (und nur diese) liegen sollen. */ static aktionFixiereKurseInSchieneSonstNichts(pInput, pKursnamen, pSchiene) { for (let i = 0; i < pInput.kurse.size(); i++) { let kurs = pInput.kurse.get(i); let gefunden = false; for (let j = 0; j < pKursnamen.length; j++) { if (JavaObject_1.JavaObject.equalsTranspiler(kurs.representation, (pKursnamen[j]))) { gefunden = true; } } let r = new KursblockungInputRegel_1.KursblockungInputRegel(); if (gefunden) { r.id = 2; r.daten = [kurs.id, pSchiene]; } else { r.id = 3; r.daten = [kurs.id, pSchiene]; } pInput.regeln.add(r); } } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.kursblockung.KursblockungStatic'].includes(name); } } exports.KursblockungStatic = KursblockungStatic; function cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic = cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic; //# sourceMappingURL=KursblockungStatic.js.map