momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Generarea unui orar fără ferestre, sau cu cel mult câte una

GNU as
2015 jan

Subrutină în limbaj de asamblare pentru obţinerea unui orar fără ferestre, sau a unuia în care profesorii au cel mult câte o singură fereastră. În varianta "cel mult câte o singură fereastră" execuţia este foarte rapidă; în varianta cu zero ferestre - execuţia durează între câteva minute şi una-două ore, în funcţie de calităţile şi defectele schemei iniţiale (şi nu pentru orice schemă dată - de repartizare pe ziua respectivă a claselor la profesori - este posibil un orar fără ferestre).

Structura de memorie adecvată generării unui orar fără ferestre

C++11
2014 dec

Avem de pus la dispoziţia unei subrutine în limbaj de asamblare un fişier binar conţinând într-un format unitar cât se poate de compact, datele necesare constituirii orarului pe o zi - rangul profesorului în fişierul text iniţial şi clasele la care trebuie să-i aşezăm orele în acea zi - împreună cu o anumită gamă de octeţi care trebuie astfel gândită încât să ne servească pentru a modela cât mai eficient (folosind direct instrucţiunile microprocesorului) mecanismul bactracking prin care subrutina respectivă să producă un orar fără ferestre.

Actualizarea unui program de elaborare a orarului şcolar

orar şcolar | perl
2014 dec

M-am ocupat mult timp (dar acum vreo 20 de ani) de orarul şcolii, folosind un program propriu. Acest program avea două părţi: mai întâi se obţinea o "schemă" de repartizare a orelor pe zilele săptămânii; apoi - după definitivarea manuală a acestei scheme - se obţineau orarele zilnice.

În ultima versiune (prin anul 2002), obţineam schema de repartizare folosind Perl (beneficiind astfel de "expresii regulate" şi de "tablouri asociative"), sub Linux; dar pentru orarele zilnice foloseam Borland C++3.1 şi o subrutină scrisă în Turbo Assembler - sub DOS/Windows, cu I-486. Astăzi îmi dau seama că această manieră neortodoxă de lucru este "culmea" principiului separării lucrurilor.

Determinarea numărului de ferestre dintr-un orar

javaScript | orar şcolar | regexp
2014 nov

// construieşte o expresie regulată (instanţă de obiect javaScript RegExp()), la fel cum "" construieşte un şir de caractere (instanţă de obiect javaScript String()). Şablonul /\w[-~]\w/ se potriveşte de exemplu cu "C-1" (o potrivire = o fereastră), iar /\w[-~]{2}\w/ s-ar potrivi cu "C-~1" (când o potrivire = două ferestre); modificatorul /…/g ("global") asigură identificarea tuturor potrivirilor (nu numai a primeia), în cadrul şirului respectiv.

O chestiune de organizare a codului

Python | Sphinx | orar şcolar
2014 nov

Avem de organizat şi poate de reformulat codul Python respectiv, pentru a simplifica lucrurile (de exemplu, să fie de lansat un singur script în loc de cinci). Poate fi tentantă complicarea lucrurilor, concepând întâi nişte modele de bază "profesor", "disciplină", "clasă", etc.; dar nu prea este cazul, fiindcă noi preluăm doar formularea finală a orarului (nu avem de "introdus" şi de gândit datele pe baza cărora s-a generat orarul).

Cel mai simplu este să concatenăm într-un singur fişier scripturile respective; iar astfel, fişierele JSON (folosite iniţial pentru a transfera structuri de date de la un script la altul) devin inutile.


Prev
Next
ALL (372 titluri)

vezi Cărţile mele (de programare)

despre acesta ~ Home
(sau https://vlad.bazon.net/

Factoriale | Graficul funcţiilor

PGN browser | chess JS engine

Load

in /slightchess

/slightchess

626 partide analizate cu Crafty

(R) Computer Art | Decoraţiuni

Aplicaţii şcolare (javaScript)

Sinteze: