Title: Explore and Interactively Adjust a Daily Distribution of Lessons
Version: 0.1.0
Description: A set of functions to see and interactively adjust a distribution of lessons by day, aiming at homogenizing individual distributions (for each class and teacher).
License: MIT + file LICENSE
Encoding: UTF-8
Language: ro
RoxygenNote: 7.3.2
Depends: R (≥ 3.5.0)
LazyData: true
Imports: dplyr, magrittr, purrr, rlang, stats
Suggests: knitr, rmarkdown
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2025-05-15 14:50:31 UTC; vb
Author: Vlad Bazon [aut, cre]
Maintainer: Vlad Bazon <vlad.bazon@gmail.com>
Repository: CRAN
Date/Publication: 2025-05-19 13:40:02 UTC

recastlessons: Explore and Interactively Adjust a Daily Distribution of Lessons

Description

A set of functions to see and interactively adjust a distribution of lessons by day, aiming at homogenizing individual distributions (for each class and teacher).

Author(s)

Maintainer: Vlad Bazon vlad.bazon@gmail.com


Pipe operator

Description

See magrittr::%>% for details.

Usage

lhs %>% rhs

Arguments

lhs

A value or the magrittr placeholder.

rhs

A function call using the magrittr semantics.

Value

The result of calling rhs(lhs).


Repartizarea finală pe zile (plecând de la 'R123' și 'TPL')

Description

A vedea 'vignette(package="spysetlessons")'

Usage

DZ

Format

prof

Profesorii și cuplajele

cls

Clasa la care profesorul are de făcut o lecție

zl

Ziua în care a fost re-alocată lecția


O repartizare pe zile a lecțiilor de desfășurat într-o școală pe parcursul unei săptămâni (în "format lung")

Description

Set de 928 lecții prof | cls | zl (repartizate deja pe zile). Repartiția respectivă este într-o anumită măsură, echilibrată: numărul de ore/zi la fiecare clasă este cuprins între 5 și 7; fiecare profesor are nu mai mult de 7 ore/zi; poate cu unele excepții (când este omogenă), distribuția pe zile a lecțiilor profesorului este cvasi-omogenă (diferind cu cel mult două ore, de la o zi la alta).

Usage

R123

Format

prof

Cod de 3 sau 6 caractere, reprezentând un profesor, respectiv un cuplaj (doi profesori, pe grupe ale unei clase); primele două litere abreviază disciplina pe care este încadrat profesorul, iar cifra care urmează indexează profesorii de pe aceeași disciplină

cls

Clasa (două sau trei caractere) la care profesorul are de făcut o lecție

zl

Ziua în care a fost alocată lecția


Lecții tuplate: perechi sau triplete de lecții prof|cls care trebuie să rămână în câte o aceeași zi

Description

Set conținând 27 de tuplaje asociate setului 'R123'. Un tuplaj va angaja într-un același moment (zi și oră), doi (sau trei) profesori și două (respectiv, trei) clase (după anumite criterii, elevii reuniți ai claselor respective sunt redistribuiți ad-hoc în noi "clase", în locul și cu numele celor inițiale). De separat cu câte un spațiu, profesorii, respectiv clasele tuplajului (respectiv, zilele alocate).

Usage

TPL

Format

prof

Profesorii care trebuie să intre în același moment, la câte una dintre clasele respective

cls

Clasele la care profesorii din tuplaj au de făcut câte o lecție, în câte o aceeași zi (și oră)

zl

Ziua sau zilele alocate tuplajului în setul 'R123'


Zilele de lucru

Description

Factor prin care denumim zilele în care sunt alocate lecțiile.

Usage

Zile

Format

Zile

Abrevieri pe câte două litere, ale zilelor de lucru.


Pe repartiția pe zile curentă, schimbă într-o altă zi, lecția indicată

Description

După ce se investighează (prin 'prof_2days()', 'prof_swap()', etc.) distribuția lecțiilor unui profesor în cadrul repartiției curente, se poate decide schimbarea zilei alocate lui la o anumită clasă.

Usage

change_day(DZ, P, Q, Z, new_zl)

Arguments

DZ

Distribuția curentă a lecțiilor, pe zile.

P, Q, Z

Profesorul, clasa și ziua (din 'Zile') curent alocată.

new_zl

Ziua (din 'Zile') cu care trebuie înlocuită cea existentă.

Value

Distribuția rezultată după realocarea lecției.


La care clase și zile intră profesorul, singur sau în cuplaje

Description

Între altele, vom putea sesiza situația defectuoasă în care un profesor a căpătat în total (cumulând orele proprii cu cele din cuplaje) 6 sau 7 ore pe o zi, dar niciuna dintre clasele implicate nu ajunge în ziua respectivă, la a 6-a respectiv, a 7-a oră.

Usage

cls2prof(DZ, P)

Arguments

DZ

Repartiția curentă pe zile

P

Profesorul, sau un vector de profesori

Value

Tabel conținând pe zile, clasele repartizate profesorului

Examples

# clasele repartizate pe zile lui 'Fz1', respectiv la doi profesori 'Gr*'
Fz <- cls2prof(R123, "Fz1")
Gr <- cls2prof(R123, paste0("Gr", 1:2))


Distribuția numărului de ore pe două zile, la anumite clase

Description

Sunt de vizat clasele care în prima zi au mai multe ore, decât în a doua zi (urmând să echilibrăm, prin mutarea unei ore din prima, în a doua zi).

Usage

cls_2days(DZ, z1, z2)

Arguments

DZ

Distribuția curentă pe zile a tuturor lecțiilor

z1, z2

elemente din vectorul 'Zile'

Value

Matricea distribuțiilor pentru clasele cu mai multe ore în prima, ca în a doua zi


Distribuția numărului de ore/zi la o clasă

Description

Pentru a vedea dacă la o anumită clasă, putem muta o lecție într-o altă zi, fără ca prin aceasta să afectăm omogenitatea distribuției lecțiilor ei.

Usage

cls_dis(DZ, K)

Arguments

DZ

Distribuția curentă a tuturor lecțiilor

K

Clasa

Value

Distribuția pe zile a numărului de lecții ale clasei


Existența vreunei clase care să ajungă la a 6-a sau a 7-a oră a unei zile, pentru un membru al unor cuplaje

Description

Cumulând orele proprii cu cele din cuplajele în care este implicat, profesorul poate ajunge în vreo zi, la 6 sau 7 ore; dar se poate ca niciuna dintre clasele sale din ziua respectivă, să nu aibă pe acea zi, decât numai 5, respectiv numai 6 ore...

Usage

cls_last(DZ, P)

Arguments

DZ

Distribuția curentă pe zile, a lecțiilor

P

Profesorul, dintre cei cu ore proprii și implicați în cuplaje

Value

TRUE dacă pentru oricare zi, există clase la care 'P' să poată intra
     în ultima oră din zi.
Alfel, zilele în care lecțiile alocate lui 'P' nu încap la clasele
     respective și distribuțiile pe zile pentru aceste clase

Distribuția numărului de ore/zi la clase, cu o anumită diferență între zile

Description

Avem de urmărit ca lecțiile fiecărei clase să fie distribuite omogen, (și nu cvasi-omogen) pe zile.

Usage

cls_quasihom(DZ, d = 2)

Arguments

DZ

Distribuția curentă pe zile, a tuturor lecțiilor

d

Diferența între cel mai mare și cel mai mic număr de ore/zi

Value

Matrice în care pe fiecare linie avem distribuția numărului de ore/zi pentru câte o clasă, dacă există diferențe de 'd' ore între o zi și alta ('NULL' dacă nu există astfel de clase).


Distribuția pe zile a lecțiilor cuplajelor și membrilor acestora

Description

Cumulând (de pe liniile unde apare), putem constata cât este de omogenă distribuția pe zile a fiecărui profesor angajat în cuplaje.

Usage

coupled_dis(DZ)

Arguments

DZ

Distribuția curentă a tuturor lecțiilor

Value

Matricea distribuțiilor lecțiilor cuplate


Distribuțiile pe zile, pentru membrii cuplajelor

Description

Pentru fiecare membru al unor cuplaje (care are și ore proprii) se înscrie într-o listă matricea distribuțiilor acestuia. Consultând aceste matrice se pot stabili re-alocări de zile prin care să se echilibreze distribuțiile respective.

Usage

coupled_list(DZ)

Arguments

DZ

Distribuția curentă a tuturor lecțiilor

Value

Lista matricelor distribuțiilor fiecărui membru cu ore proprii care este angajat în cuplaje (și suma cumulată de ore/zi)


Distribuția pe zile curentă trebuie să păstreze alocarea tuplajelor

Description

Tuplajele (dacă există) vizează lecțiile care au fost fixate în prealabi, pe anumite zile; în principiu, trebuie evitată modificarea acestor alocări.

Usage

keep_toupled(DZ, TP)

Arguments

DZ

Distribuția lecțiilor pe zile (curentă)

TP

Setul tuplajelor (repartizate din start pe zile)

Value

TRUE dacă repartiția tuplajelor n-a fost modificată, sau primul tuplaj la care distribuția inițială nu coincide cu cea curentă


Profesorii (și distribuțiile de lecții) care la o anumită clasă au ore într-o anumită zi și nu au ore într-o altă anumită zi.

Description

Dacă o clasă apare în ambele zile la un profesor, atunci clasa respectivă nu ar trebui mutată din prima zi în a doua (în principiu, la fiecare disciplină trebuie să avem câte cel mult o singură oră/zi).

Usage

prof_2days(DZ, K, z1, z2)

Arguments

DZ

Distribuția de lecții pe care se investighează.

K

Clasă.

z1, z2

Cele două zile (neapărat, elemente din vectorul 'Zile')

Value

Tabelul distribuțiilor profesorilor care au ore la clasa 'Cls' în ziua 'z1' dar nu și în ziua 'z2'.


Profesorii din afara cuplajelor, cărora le-au rămas distribuții neomogene

Description

Exluzând (după apelul funcției interne 'set_prof1_tw1()') profesorii angajați în cuplaje și toate cuplajele din care fac parte, găsim pe cei din afara cuplajelor și dintre aceștia, selectăm pe cei care au mai mult de 'at_least' ore, distribuite cvasi-omogen pe zile.

Usage

prof_bad_dis(DZ, at_least = 8)

Arguments

DZ

Distribuția curentă a lecțiilor, pe zile

at_least

Vizează numai distribuțiile individuale care au în total, peste un anumit număr de ore (implicit 8)

Value

Setul distribuțiilor neomogene (cvasi-omogene)


mapează 'cls2prof()' pe lista acelor profesori P1 din afara cuplajelor cu care profesorul indicat ar putea schimba o clasă și o zi, fără ca prin aceasta distribuția lui P1 să fie "degradată" (să devină neomogenă)

Description

Pentru interschimbare, este de ales o clasă la care cei doi profesori au oră numai în una, dintre cele două zile și astfel încât măcar una dintre distribuții să devină omogenă (cealaltă poate să rămână cvasi-omogenă).

Usage

prof_swap(DZ, P, z1, z2)

Arguments

DZ

Distribuția curentă a lecțiilor, pe zile

P

Profesorul căruia am vrea să-i omogenizăm distribuția

z1, z2

Zilele (în termenii din 'Zile') între care am schimba

Value

Lista distribuțiilor profesorilor cu care se poate interschimba


Formatul TSV a unui (sub)set de lecții repartizate pe zile

Description

Vizualizează lecțiile distribuite în fiecare zi unui grup de profesori.

Usage

tidy2tsv(D)

Arguments

D

Distribuția pe zile a unor lecții în "format lung" (prof | cls |zl); de exemplu, a lecțiilor unei clase, discipline, etc.

Value

Setul liniilor (numite după profesori) conținând pe fiecare zi, clasele repartizate profesorilor pentru ziua respectivă


Distribuția pe zile a numărului de lecții ale celor angajați în tuplaje

Description

Pentru un profesor implicat în tuplaje, putem să-i omogenizăm distribuția lecțiilor mutând într-o altă zi una sau alta dintre acele clase ale sale, care nu sunt indicate în tuplajele din care face parte acel profesor.

Usage

toupled_dis(DZ, TP)

Arguments

DZ

Distribuția curentă a tuturor lecțiilor

TP

Setul de tuplaje

Value

Matricea cu distribuțiile membrilor tuplajelor (incluzând și lecțiile acestora din afara tuplajelor)