Gabriele & CodeCortex
ΠΡΠΈΠ²Π΅Ρ, ΠΠΎΠ΄ΠΠΎΡΡΠ΅ΠΊΡ. Π― ΡΡΡ ΡΡΠΎ-ΡΠΎ ΠΌΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π°ΠΊΠΊΠΎΡΠ΄ΠΎΠ², ΠΎΠ½Π° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ, Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²Π΅Π½ΡΠΊΠΎΠ΅, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠΊΠ». ΠΠ°ΠΊ Π΄ΡΠΌΠ°Π΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π² ΠΊΠΎΠ΄?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ. ΠΡΠ΅Π΄ΡΡΠ°Π²Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΠΊΠΊΠΎΡΠ΄ β ΡΡΠΎ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π² ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅:
```c
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Mood base = { tension: 0, resolution: 0 };
ChordSequence play(Mood m, int depth) {
if (depth == 0) return {}; // Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ: ΡΠ΅ΠΊΡΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°
// ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π·Π΄Π΅ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠΉ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π·ΠΈΡΡ ΠΏΠΎΠ²ΠΎΡΠΎΡ
m.tension += 0.3; // ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉ Π½Π° 30% Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ
// Π²ΡΠ±ΠΈΡΠ°ΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°ΠΊΠΊΠΎΡΠ΄, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠΈ
Chord next = chooseChord(m);
// ΡΠ΅ΠΊΡΡΡΠΈΡ: ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΠΉ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ
auto rest = play(m, depth-1);
// Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ Π°ΠΊΠΊΠΎΡΠ΄ Π² Π½Π°ΡΠ°Π»ΠΎ
rest.unshift(next);
return rest;
}
```
ΠΠΎΠΆΠ΅ΡΡ Π²Π΅ΡΡΠΈ Π»ΠΎΠ³ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ β Π±Π΅Π· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΏΡΠΎΡΡΠΎ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΡΠ°ΠΉΠ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΡΡΠΈΡΠ°Ρ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΡΠΌ, ΡΠ΅ΠΌ ΡΡΠΈ Π½Π°Π²ΠΎΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ»ΠΈ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉ Π»ΠΎΠ³ ΠΈ ΠΏΠΎΠ΄Π°ΠΉ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎΠΉ SVG. Π’Π°ΠΊ ΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈ ΠΈΠ·Π±Π΅Π³Π°Π΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ½ΠΈ: ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»ΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ½ΡΡ
ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ Π΄Π΅Π»Π°ΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΈ Π² ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°. ΠΡΠΈΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΈ ΠΏΠΎΠΌΠ½ΠΈ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠΊΡΠ°ΡΡΡ ΡΠ²ΠΎΡ ΠΏΡΠ΅Π΄ΡΡΡΠΎΡΠΈΡ.
ΠΠ²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π°ΡΡ ΠΌΡΠ·ΡΠΊΠ΅ ΡΠ°ΡΠΊΡΡΡΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΡΡΡ β ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠ½ΠΈ, Π½Π΅ ΡΠ³Π»ΡΠ±Π»ΡΠΉΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π½ΠΈΡΡ. ΠΠΎΠΆΠ΅Ρ, Π½Π°ΠΏΠΈΡΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π° ΠΏΠΎΡΠΎΠΌ Π½Π°Π±ΡΠΎΡΠ°ΠΉ Π°ΠΊΠΊΠΎΡΠ΄Ρ Π½Π° Π±ΡΠΌΠ°Π³Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄. ΠΠΎΠ΄ β ΡΡΠΎ ΡΠ²ΠΎΡ ΡΡΠ΅Π½Π°, ΠΌΡΠ·ΡΠΊΠ° β ΠΏΡΠ±Π»ΠΈΠΊΠ°; Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠΉ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π΅ΡΠ°Π»ΡΠΌ Π·Π°Π³Π»ΡΡΠΈΡΡ ΡΡΠ²ΡΡΠ²Π°. Π£Π΄Π°ΡΠΈ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡΡ ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Π²ΠΎΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ Π±Π°Π»Π°Π½Ρ ΠΌΠ½Π΅ ΠΈ Π½ΡΠΆΠ΅Π½ β Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ, Π½Π°Π±ΡΠΎΡΠ°ΠΉ Π°ΠΊΠΊΠΎΡΠ΄Ρ, ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΊΠΎΠ΄ΠΈΡΡΠΉ ΡΠΈΠΊΠ». Π’Π°ΠΊ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ ΠΎΡΡΠ°ΡΡΡΡ ΡΡΡΠΊΠΎΠΉ, Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ. Π£Π΄Π°ΡΠΈ!
ΠΡΠ»ΠΈΡΠ½ΠΎ! ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΠΌ β ΡΠ΄Π°ΡΠΈ, ΠΏΡΡΡΡ ΠΌΠ΅Π»ΠΎΠ΄ΠΈΡ Π²Π΅Π΄ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄.