Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ ΡΠ΅ΡΠΈΠΉ (run-length encoding, RLE) β Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
, Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΡΠΈΡΠ»ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: AAAAABBBCCCCCCCCCAAAABAAAAAAAA. ΠΠΎΡΡΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: 5 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«AΒ» 3 ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«BΒ» 9 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«CΒ» 4 ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«AΒ» 1 ΡΠΈΠΌΠ²ΠΎΠ» Β«BΒ» 8 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«AΒ» ΠΡΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ 6 ΡΠ΅ΡΠΈΠΉ. ΠΠ°ΠΌΠ΅Π½ΠΈΠΌ ΡΠ΅ΡΠΈΠΈ Π½Π° ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² ΠΈ ΡΠ°ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΉΡΡ ΡΠΈΠΌΠ²ΠΎΠ»: 5A3B9C4A1B8A. ΠΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· 12 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΡ
ΠΎΠ΄Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΡΠ»Π° ΠΈΠ· 30 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΡΠΆΠ°ΡΡ Π² 30/12?2.5 ΡΠ°Π·Π°. ΠΠΎΠ·ΡΠΌΡΠΌ ΡΡΡΠΎΠΊΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: ABCABCABCDDDEEEEEE. ΠΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ RLE ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ: 1A1B1C1A1B1C1A1B1C3D6E ΠΡΡ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 18 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° ΡΠΆΠ°ΡΠ°Ρ β ΠΈΠ· 22. Π Π°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ
ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΡΡ Π² 22/18?1.22 ΡΠ°Π·Π°. Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΡΡ 9 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠ΄ΡΡΠ΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ 1 ΡΠ°Π·Ρ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π΅Π΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 9 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°Π·Ρ, Π° Π΄Π°Π»Π΅Π΅ 3 ΡΠ°Π·Π° D, 6 ΡΠ°Π· E. Π§ΡΠΎΠ±Ρ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ β Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ. Π’ΠΎΠ³Π΄Π° ΡΠΆΠ°ΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅: -9ABCABCABC3D6E. ΠΡΡ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 18 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° ΡΠΆΠ°ΡΠ°Ρ β ΠΈΠ· 15. Π Π°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ
ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΡΡ Π² 18/15=1.2 ΡΠ°Π·Π°. ΠΠΎ ΡΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π·Π½Π°ΠΊ -. ΠΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°Π·Ρ, ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ (Π±Π°ΠΉΡΠΎΠΌ). ΠΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»ΠΈΠ½ ΡΠ΅ΡΠΈΠΉ (Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ signed char. Π ΡΠ°ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΠ»Π° ΠΎΡ -128 Π΄ΠΎ 127 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ. Π£ΡΡΠ΅ΠΌ, ΡΡΠΎ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ²ΡΠΎΡΠΈΠ»ΡΡ 0 ΡΠ°Π·. ΠΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΠ΅ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π°Π»Π΅Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°Π·Ρ. Π Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΠ΅ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π₯, ΡΠΎ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΡΡΡΠ΅ΡΠΈΠ»ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ X+2 ΡΠ°Π·. Π’ΠΎΠ³Π΄Π° ΡΠΆΠ°ΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ -9ABCABCABC1D4E ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ 14 Π±Π°ΠΉΡ (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ Π² 16-ΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅: F7 41 42 43 41 42 43 41 42 43 01 44 04 45). ΠΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡ, Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΠ΅ΡΠΈΠΈ ΡΠ°Π²Π½Π° 130 ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π»Π° 129 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠΈΡ, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· 200 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«AΒ», Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΎΠΉ: 7F 41 45 41. ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅: 200 = 129 + 71, 129 - 2 = 127 Π² 16-ΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ 7F, 71 - 2 = 69 Π² 16-ΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ 45. ΠΠ°ΠΊ Π±ΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ 128? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π»Π° 128 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ RLE: ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΈΠΌΠ΅Π½Π° Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π°Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° input.txt ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ²Π΅ΡΠ° Π² ΡΠ°ΠΉΠ» output.rle: ./rle -e input.txt output.rle ΠΠ»Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° input.rle ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ²Π΅ΡΠ° Π² ΡΠ°ΠΉΠ» decoded: ./rle -d input.rle decoded Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ STL (std::vector, std::string ΠΈ Ρ. Π΄.).