KursblockungStatic.js 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic = exports.KursblockungStatic = void 0;
  4. const JavaObject_1 = require("../../java/lang/JavaObject");
  5. const KursblockungInputRegel_1 = require("../../core/data/kursblockung/KursblockungInputRegel");
  6. class KursblockungStatic extends JavaObject_1.JavaObject {
  7. constructor() {
  8. super();
  9. }
  10. /**
  11. * Erzeugt ein Array der Größe {@code n}, füllt es mit den Zahlen
  12. * {@code 0 bis n-1} und permutiert das Array dann zufällig.
  13. *
  14. * @param n Die Größe des Arrays.
  15. * @return Eine Array-Referenz.
  16. */
  17. static gibPermutation(n) {
  18. let temp = Array(n).fill(0);
  19. for (let i = 0; i < n; i++) {
  20. temp[i] = i;
  21. }
  22. KursblockungStatic.aktionPermutiere(temp);
  23. return temp;
  24. }
  25. /**
  26. * Permutiert das Array {@code perm} zufällig.
  27. *
  28. * @param perm Das zu permutierende Array.
  29. */
  30. static aktionPermutiere(perm) {
  31. let n = perm.length;
  32. for (let i1 = 0; i1 < n; i1++) {
  33. let i2 = (Math.random() * n);
  34. let s1 = perm[i1];
  35. let s2 = perm[i2];
  36. perm[i1] = s2;
  37. perm[i2] = s1;
  38. }
  39. }
  40. /**
  41. * Erweitert die Eingabedaten {@link KursblockungInput} um eine Regel, welche
  42. * bestimmte Schienen für bestimmte Kursarten sperrt.
  43. *
  44. * @param pInput Das Eingabeojekt, welchem eine neue Regel hinzugefügt wird.
  45. * @param pKursart Eine String-Darstellung der Kursart.
  46. * @param pVon Sperrung aller Schienen von (inklusive, 0-indiziert).
  47. * @param pBis Sperrung aller Schienen bis (inklusive, 0-indiziert).
  48. */
  49. static aktionSperreSchieneFuerKursart(pInput, pKursart, pVon, pBis) {
  50. for (let i = 0; i < pInput.kursarten.size(); i++) {
  51. let kursart = pInput.kursarten.get(i);
  52. if (JavaObject_1.JavaObject.equalsTranspiler(kursart.representation, (pKursart))) {
  53. let r = new KursblockungInputRegel_1.KursblockungInputRegel();
  54. r.id = 1;
  55. r.daten = [kursart.id, pVon, pBis];
  56. pInput.regeln.add(r);
  57. }
  58. }
  59. }
  60. /**
  61. * Erweitert die Eingabedaten {@link KursblockungInput} um Regeln, die bestimmte
  62. * Kurse in einer Schiene fixieren, andere Kurse die Schiene verbieten.
  63. *
  64. * @param pInput Das Eingabeojekt, welchem eine neue Regel hinzugefügt wird.
  65. * @param pKursnamen Die zu fixierenden Kursnamen
  66. * @param pSchiene Die Schiene in der die Kurse (und nur diese) liegen sollen.
  67. */
  68. static aktionFixiereKurseInSchieneSonstNichts(pInput, pKursnamen, pSchiene) {
  69. for (let i = 0; i < pInput.kurse.size(); i++) {
  70. let kurs = pInput.kurse.get(i);
  71. let gefunden = false;
  72. for (let j = 0; j < pKursnamen.length; j++) {
  73. if (JavaObject_1.JavaObject.equalsTranspiler(kurs.representation, (pKursnamen[j]))) {
  74. gefunden = true;
  75. }
  76. }
  77. let r = new KursblockungInputRegel_1.KursblockungInputRegel();
  78. if (gefunden) {
  79. r.id = 2;
  80. r.daten = [kurs.id, pSchiene];
  81. }
  82. else {
  83. r.id = 3;
  84. r.daten = [kurs.id, pSchiene];
  85. }
  86. pInput.regeln.add(r);
  87. }
  88. }
  89. isTranspiledInstanceOf(name) {
  90. return ['de.nrw.schule.svws.core.kursblockung.KursblockungStatic'].includes(name);
  91. }
  92. }
  93. exports.KursblockungStatic = KursblockungStatic;
  94. function cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic(obj) {
  95. return obj;
  96. }
  97. exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic = cast_de_nrw_schule_svws_core_kursblockung_KursblockungStatic;
  98. //# sourceMappingURL=KursblockungStatic.js.map