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

Două exemple de reducere/acumulare funcţională

C++11 | Python | javaScript
2015 dec

Funcţiile din libstdc++ (C++ Standard Library) sunt "parametrizate", iar std::__gcd() nu face excepţie, fiind definită pentru un tip de date - denumit _EuclidianRingElement - care permite "împărţirea cu rest" şi binecunoscutul algoritm al lui Euclid...

"Cel mai mare divizor comun" chiar merita scrierea unei funcţii separate gcd(a, b), indicată apoi ca parametru al reducerii; dar acum, operaţia care trebuie implicată în reducerea listei coeficienţilor până la valoarea finală este una extrem de banală - încât o vom modela direct în lista parametrilor reducerii, ca funcţie "anonimă" (sau, "expresie lambda").

Am putut lucra cu diverse tipuri de polinoame, în programul C++11 de mai sus; vedem astfel unele dintre avantajele conferite de conceptele de programare parametrizată specifice pentru C++11. Pe de altă parte însă, în Python calculul cu orice fel de numere (inclusiv cu numere complexe, sau cu întregi mari) este deja "nativ" - nu necesită neapărat demersuri explicite prealabile.

Teorema bisectoarei - obsesii şi dileme

scopurile rezolvării de probleme
2015 nov

În acest mediu, cel mai dificil de prins se dovedesc a fi justificările fireşti ale construcţiilor şi mai general, demonstraţiile unora sau altora dintre diversele proprietăţi geometrice sau algebrice (şi însăşi ideea că ar fi ceva de justificat este neaşteptată şi greu de înghiţit). Această dificultate este cu siguranţă urmarea directă a asimilării "practice" a matematicii la nivel de reţetar, sau de "memorator" - ce nevoie să ai de justificări şi demonstraţii ca să iei BAC-ul?!

Momente ale problemei orarului

perl | randomizare
2015 may

Chiar şi până spre anii 2010, elaborarea şi întreţinerea orarului şcolii era o sarcină manuală dificilă, delegată de obicei vreunui profesor de matematică; dacă-l întărâtai cumva, cel care muncea la orar te apostrofa: "ia fă tu orarul - să vezi şi tu cum vine asta". Prin 1985 a venit şi rândul meu…

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.


Prev
Next
ALL (380 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: