Package {hours2lessons}


Title: Alocă Pe Ore Lecțiile Zilei
Version: 1.0.0
Description: Lecțiile prof/cls trebuie completate cu un câmp "ora", astfel ca oricare două lecții prof/cls/ora să nu se suprapună într-o aceeași oră. The prof/cls lessons must be completed with a "hour" field ('ora), so that any two prof/cls/ora lessons do not overlap in the same hour. https://vlad.bazon.net/.
License: MIT + file LICENSE
Encoding: UTF-8
Language: ro
Imports: dplyr, igraph, magrittr, purrr, rlang, stats, tidyr
Depends: R (≥ 3.5.0)
LazyData: true
Suggests: knitr, rmarkdown
VignetteBuilder: knitr
Config/roxygen2/version: 8.1.0
NeedsCompilation: no
Packaged: 2026-09-10 07:20:27 UTC; vb
Author: Vlad Bazon [aut, cre]
Maintainer: Vlad Bazon <vlad.bazon@gmail.com>
Repository: CRAN
Date/Publication: 2026-09-10 15:30:24 UTC

hours2lessons: Alocă Pe Ore Lecțiile Zilei

Description

Lecțiile prof/cls trebuie completate cu un câmp "ora", astfel ca oricare două lecții prof/cls/ora să nu se suprapună într-o aceeași oră. The prof/cls lessons must be completed with a "hour" field ('ora), so that any two prof/cls/ora lessons do not overlap in the same hour. https://vlad.bazon.net/.

Author(s)

Maintainer: Vlad Bazon vlad.bazon@gmail.com

Authors:


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).


Exemplu de lecții, cu 64 profesori (între care, patru cuplaje dintre care două fac parte din tuplaje) și 34 clase

Description

set de 205 lecții prof|cls, care trebuie să se desfășoare în orele 1:7 ale unei zile. Fiecare profesor are cel puțin una și cel mult 7 ore (lecții); fiecare clasă are cel puțin 5 și cel mult 7 ore. Unele lecții (indicate în setul "dayTuples") trebuie să cadă într-o aceeași oră a zilei.

Usage

dayLessons

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 va intra profesorul/cuplajul în ziua respectivă


Exemplu de tuplaje

Description

set de 4 tuplaje asociate setului "LSS". Un tuplaj va angaja într-o aceeași oră, mai mulți profesori și mai multe clase, dar un tuplaj corect trebuie să aibă același număr de profesori ca și de clase. Dacă numărul de profesori este totuși mai mare decât al claselor din tuplaj, utilizatorul va ști cel mai bine care dintre profesorii respectiv trebuie cuplați, încât tuplajul să devină corect.

Usage

dayTuples

Format

prof

Profesorii (eventual, cuplați doi pe o aceeași clasă) care trebuie să intre într-o aceeași oră a zilei la câte una dintre clasele respective (separați printr-un spațiu).

cls

Clasele care trebuie tuplate (separate printr-un spațiu).


Depistează cuplajele și dependențele de alocare pe ore, induse de acestea

Description

Lecțiile cuplajelor trebuie să nu se suprapună (într-o aceeași oră) cu lecțiile membrilor acestora.

Usage

get_twins(LSS)

Arguments

LSS

data.frame cu lecțiile prof|cls

Value

NULL dacă nu există cuplaje; altfel, lista care indică bilateral, pe fiecare membru al unui cuplaj și pe fiecare cuplaj, profesorii și cuplajele de care depinde alocarea pe ore a lecțiilor sale.


Transformă prof|cls|ora în matricea profesorilor pe orele 1:7

Description

"Matricea-orar" are liniile numite după profesori, fiecare linie conținând clasele la care intră profesorul respectiv, în orele 1:7. Fiecare clasă apare câte o singură dată pe fiecare coloană de rang mai mic sau egal cu numărul de ore al clasei respective.

Usage

long2matrix(ORR)

Arguments

ORR

data.frame prof|cls|ora (format lung)

Value

matricea orară a lecțiilor: clasele alocate pe ore fiecărui profesor

Examples


    LM <- long2matrix(as.data.frame(mount_hours(dayLessons, dayTuples)))


Adaugă 'ora' încât oricare două lecții prof|cls|ora să nu se suprapună, iar lecțiile dintr-un același tuplaj să cadă într-o aceeași oră 1:7

Description

Adaugă 'ora' încât oricare două lecții prof|cls|ora să nu se suprapună, iar lecțiile dintr-un același tuplaj să cadă într-o aceeași oră 1:7

Usage

mount_hours(LSS, TPL = NULL)

Arguments

LSS

data.frame cu lecțiile prof|cls, unde 'prof' este un profesor propriu-zis, sau unul fictiv (cuplaj de doi/clasă)

TPL

data.frame pentru tuplaje, dacă este cazul Un tuplaj conține 2 sau mai mulți profesori, pe 2 sau mai multe clase (numărul de profesori fiind egal cu al claselor)

Details

'PERM' is a list of permutations for 4:7 elements. 'h2bin' is a vector of integers 2^(h-1) for the hours h=1:7. 'cnt_holes()' gives the current number of gaps in an individual schedule.

Value

Un orar 'prof|cls|ora' pentru ziua respectivă

Examples


    STP <- as.data.frame(mount_hours(dayLessons, dayTuples)) %>% 
           dplyr::arrange(cls, ora)


Scalează profesorii (clasele) după numărul de clase (profesori) în comun

Description

Clasele vor fi parcurse (pentru a monta ore 1:7 pe lecțiile fiecăreia) în ordinea crescătoare a coeficienților "betweenness" din graful în care două clase sunt adiacente după numărul de profesori comuni lor.

Usage

scale_prof_cls(LSS)

Arguments

LSS

data.frame cu lecțiile prof|cls

Value

lista de coeficienți betweenness pentru profesori și clase


Verifică matricea-orar

Description

Fiecare clasă trebuie să apară cel mult o singură dată, pe fiecare coloană.

Usage

verify_matrix(MP)

Arguments

MP

Matricea-orar

Value

TRUE dacă fiecare clasă apare cel mult o dată, pe fiecare coloană (FALSE în caz contrar)