== include(page="template/taskheader" task_id="partitura") ==
Amadeus este un mic geniu muzical. El se uită pe o partitură cu note și își dă seama instantaneu de proprietățile ei. Tatăl său este, însă, un om foarte strict și vrea să îl verifice, drept care vă roagă pe voi să îl ajutați.
Amadeus este un mic geniu muzical. El se uită pe o partitură cu note și își dă seama instantaneu de *înălțimea* partiturii, de *fugă* și *gamă*. Tatăl său este, însă, un om foarte strict și vrea să îl verifice, drept care vă roagă pe voi să îl ajutați.
O *partitură* o reprezintă ca pe un șir de numere, unde notele sînt numere diferite de unu, iar pauzele sînt note egale cu unu. De exemplu partitura *2 3 5 %{color:red}1% 5 3 2 8 %{color:red}1% 2* are 8 note separate de două pauze.
Dar înainte de aceasta să definim termenii muzicali:
Proprietățile pe care le află Amadeus sînt:
* *Partitura* este un șir de note și pauze. Notele sînt numere naturale strict mai mari ca unu, iar pauzele sînt reprezentate cu numărul unu. De exemplu partitura *4 7 9 12 9 5 %{color:red}1% 4 6 2 1 2* are 10 note separate de pauze.
* *Înălțimea* partiturii, care este suma tuturor notelor. De exemplu, în partitura anterioară, suma notelor este 30 (pauzele nu se adună).
* *Înălțimea* partiturii este suma tuturor notelor. De exemplu, în partitura anterioară, suma notelor este 60 (pauzele nu se adună).
* *Fuga*, care reprezintă diferența dintre suma creșterilor și a descreșterilor în valoare absolută. De pildă, în exemplul nostru vom avea două creșteri și o descreștere:
** 2 3 5 are creșterea (3-2) + (5-3) = 3
** 2 8 are creșterea (8-2) = 6
** 5 3 2 cu descreșterea (5-3) + (3-2) = 3
* *Fuga* se calculează astfel: pornind de la prima notă, cîtă vreme notele cresc, vom aduna diferențele între note consecutive în secvență, obținînd o sumă C. Apoi partitura descrește și vom aduna iar diferențele între note consecutive în secvență obținînd o sumă D. Fuga este diferența dintre suma creșterilor și a descreșterilor, în valoare absolută: I = abs( [C[~1~] + C[~2~] + ... + C[~k~]] - [D[~1~] + D[~2~] + ... + D[~m~]] ). Pe exemplul nostru vom avea două creșteri și două descreșteri:
** 4 7 9 12 are creșterea (7-4) + (9-7) + (12-9) = 8
** 4 6 are creșterea (6-4) = 2
** 12 9 5 cu descreșterea (12-9) + (9-5) = 7
** 6 2 cu descreșterea (6-2) = 4
Deoarece suma creșterilor este mai mare decît suma descreșterilor *fuga* partiturii este (6+3) - 3 = 6.
Deoarece suma descreșterilor este mai mare decît suma creșterilor *fuga* partiturii este suma descreșterilor minus suma creșterilor: (7+4) - (8+2) = 1. În caz contrar am fi scăzut creșterile din descreșteri.
* *Gama* partiturii este dată de numerele de acorduri majore și minore. Un *acord major* este o secvență de trei note la rînd (A B C) cu proprietățile că A + 3 = B și B + 2 = C. Similar, un *acord minor* este o secvență de trei note la rînd (A B C) cu proprietățile că A + 2 = B și B + 3 = C. De exemplu, în partitura *4 7 9 12 9 5 %{color:red}1% 4 6 2 %{color:red}1% 2* vom avea un acord major, (4 7 9) și un acord minor, (7 9 12).
* *Gama* partiturii este dată de numerele de acorduri majore și minore. Un *acord major* este o secvență de trei note la rînd (A B C) cu proprietățile că A + 3 = B și B + 2 = C. Similar, un *acord minor* este o secvență de trei note la rînd (A B C) cu proprietățile că A + 2 = B și B + 3 = C. În exemplul nostru vom avea un acord major, (4 7 9) și un acord minor, (7 9 12).
h2. Cerință