āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨

āĻĒā§āĻ°āĻŦā§‡āĻļ

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ†āĻŽāĻŋ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ•ā§‹āĻšāĻ¨ā§‡ āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­āĻžāĻ° āĻ˛āĻŋāĻ–āĻŦāĨ¤ āĻāĻ‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ HabrÊ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒā§‹āĻ¸ā§āĻŸā§‡āĻ° āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ• āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸ā§āĻ•ā§āĻ˛ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ° āĻŦāĻŋāĻœā§āĻžāĻžāĻ¨ āĻĒāĻžāĻ  āĻāĻŦāĻ‚ āĻ°āĻŦāĻžāĻ°ā§āĻŸ āĻ˛āĻžāĻĢā§‹āĻ°ā§‡āĻŸā§‡āĻ° āĻŦāĻ‡ "āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ" āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻŸāĻž āĻ…āĻ§ā§€āĻ¨ā§‡!

āĻāĻ•āĻŸā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻ¨

āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻ‡āĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ° 8 āĻŦāĻŋāĻŸ (ASCII āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚) āĻŦāĻž 16 (āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§‹āĻĄ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚) āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻ†āĻŽāĻ°āĻž ASCII āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ s1 = "SUSIE āĻŦāĻ˛ā§‡ IT IS EASYn"āĨ¤ āĻŽā§‹āĻŸ, āĻ˛āĻžāĻ‡āĻ¨āĻŸāĻŋāĻ¤ā§‡ 22āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ¸ā§āĻĒā§‡āĻ¸ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ…āĻ•ā§āĻˇāĻ° - 'n' āĻ¸āĻšāĨ¤ āĻāĻ‡ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ° āĻ“āĻœāĻ¨ āĻšāĻŦā§‡ 22*8 = 176 āĻŦāĻŋāĻŸāĨ¤ āĻĒā§āĻ°āĻļā§āĻ¨āĻŸāĻŋ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ‰āĻ āĻ›ā§‡: 8āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ° āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ 1 āĻŦāĻŋāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ•āĻŋ āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ¸āĻ™ā§āĻ—āĻ¤? āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ ASCII āĻ…āĻ•ā§āĻˇāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¯āĻĻāĻŋ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ“ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻ˜āĻ¨āĻ˜āĻ¨ āĻ…āĻ•ā§āĻˇāĻ° - S - āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¤āĻŽ āĻ•ā§‹āĻĄ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ†āĻ°āĻ“ āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ¸āĻ™ā§āĻ—āĻ¤ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻŋāĻ°āĻ˛ āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ - T (āĻŦāĻž U, āĻŦāĻž 'n') - āĻ•ā§‹āĻĄāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻ–āĻžāĻāĻŸāĻŋ āĻĻāĻŋāĻ¨āĨ¤ āĻāĻŸāĻŋ āĻšāĻ˛ āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ: āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§‡āĻ°āĻž āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻ“āĻœāĻ¨ā§‡āĻ° āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻŦā§‡āĻļ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ¯ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•ā§‹āĻĄ āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ āĻĨāĻžāĻ•āĻŦā§‡ - āĻāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĨ¤

āĻ•ā§‹āĻĄāĻŋāĻ‚

āĻ•ā§‡āĻ¨ 'S' āĻ…āĻ•ā§āĻˇāĻ°āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻĄ āĻĻā§‡āĻŦā§‡āĻ¨ āĻ¨āĻž, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, 1 āĻŦāĻŋāĻŸ āĻĻā§€āĻ°ā§āĻ˜: 0 āĻŦāĻž 1āĨ¤ āĻāĻŸāĻŋ 1 āĻšāĻ¤ā§‡ āĻĻāĻŋāĻ¨āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻ˜āĻŸā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ…āĻ•ā§āĻˇāĻ° - ' ' (āĻ¸ā§āĻĒā§‡āĻ¸) - āĻ†āĻŽāĻ°āĻž 0 āĻĻā§‡āĻŦāĨ¤ āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨ - āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ s1 - āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ 1 āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¤āĻžāĻ‡, āĻ•āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡: āĻāĻŸāĻŋ āĻ•āĻŋ S āĻ…āĻ•ā§āĻˇāĻ°, āĻ¨āĻžāĻ•āĻŋ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻ…āĻ•ā§āĻˇāĻ°, āĻ¯ā§‡āĻŽāĻ¨ A? āĻ…āĻ¤āĻāĻŦ, āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ:

āĻ•ā§‹āĻ¨ā§‹ āĻ•ā§‹āĻĄ āĻ…āĻ¨ā§āĻ¯ā§‡āĻ° āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž

āĻāĻ‡ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻšāĻžāĻŦāĻŋāĻ•āĻžāĻ āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§‡āĻ° āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ (āĻ¸āĻ‚āĻ˜āĻŸāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž) āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡:

āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻ¸āĻ‚āĻ˜āĻŸāĻ¨ āĻ¸āĻš āĻ…āĻ•ā§āĻˇāĻ°āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ā§ˇ āĻ¸āĻŽā§āĻ­āĻŦ āĻŦāĻŋāĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĨ¤ āĻ†āĻŽāĻŋ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ•ā§‹āĻĄ āĻŸā§‡āĻŦāĻŋāĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻŦ:

āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻŦā§‡:

10 01111 10 110 1111 00 10 010 1110 10 00 110 0110 00 110 10 00 1111 010 10 1110 01110

āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻ•ā§‹āĻĄ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒā§‡āĻ¸ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻ˜āĻŸāĻŦā§‡ āĻ¨āĻž!
āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‰āĻ āĻ›ā§‡: āĻāĻ‡ āĻ°ā§āĻ•āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻĄ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ¸ā§‡āĻ›ā§‡āĻ¨ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻĄ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡āĻ¨? āĻāĻ‡ āĻ¨ā§€āĻšā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻŦā§‡.

āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ—āĻžāĻ› āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ

āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ—āĻžāĻ› āĻ‰āĻĻā§āĻ§āĻžāĻ°ā§‡ āĻ†āĻ¸ā§‡āĨ¤ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž, āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ–āĻžāĻ¨ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨, āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻ—āĻžāĻ›ā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

public class Node {
    private int frequence;
    private char letter;
    private Node leftChild;
    private Node rightChild;
    ...
}

class BinaryTree {
    private Node root;

    public BinaryTree() {
        root = new Node();
    }
    public BinaryTree(Node root) {
        this.root = root;
    }
    ...
}

āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•ā§‹āĻĄ āĻ¨āĻ¯āĻŧ, āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ¨ā§€āĻšā§‡ āĻĨāĻžāĻ•āĻŦā§‡āĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻ› āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ:

  1. āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ (āĻ˛āĻžāĻ‡āĻ¨ s1)āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, 9āĻŸāĻŋ āĻ¨ā§‹āĻĄ (āĻ¨ā§‹āĻĄ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ) āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻĻā§āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ—āĻ āĻŋāĻ¤: āĻĒā§āĻ°āĻ¤ā§€āĻ• āĻāĻŦāĻ‚ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ
  2. āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻ¨ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ°āĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ (āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°ā§€ āĻŸā§āĻ°āĻŋ) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¨ā§‹āĻĄāĻŸāĻŋ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽā§‚āĻ˛ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤
  3. āĻāĻ‡ āĻ—āĻžāĻ›āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĸā§‹āĻ•āĻžāĻ¨āĨ¤ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻ¯āĻ¤ āĻ•āĻŽ, āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¤āĻ¤ āĻŦā§‡āĻļāĻŋāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ¨āĻŋāĻˇā§āĻ•āĻžāĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻ¸āĻš āĻ—āĻžāĻ›āĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻšāĻ•ā§āĻ°āĻžāĻ•āĻžāĻ°ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

  1. āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻžāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻĻā§āĻŸāĻŋ āĻ—āĻžāĻ› āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§‹āĻĄā§‡āĻ° āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ āĻ•āĻ°ā§āĻ¨ (āĻāĻ•āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ° āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ¨ā§‹āĻĄ)āĨ¤ āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§‹āĻĄā§‡āĻ° āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻĻā§āĻŸāĻŋ āĻŦāĻ‚āĻļāĻ§āĻ° āĻ—āĻžāĻ›ā§‡āĻ° āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋāĻ° āĻ¯ā§‹āĻ—āĻĢāĻ˛ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨āĨ¤
  2. āĻāĻ‡ āĻ¨ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ‡ āĻ¨ā§‹āĻĄā§‡ āĻŽā§‚āĻ˛āĻ¯ā§āĻ•ā§āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻ› āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻ‡ āĻ—āĻžāĻ›āĻŸāĻŋāĻ•ā§‡ āĻ†āĻŦāĻžāĻ° āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĸā§‹āĻ•āĻžāĻ¨āĨ¤ (āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ—āĻžāĻ›āĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻŦā§‡)
  3. āĻ§āĻžāĻĒ 1 āĻāĻŦāĻ‚ 2 āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¨ āĻ¯āĻ¤āĻ•ā§āĻˇāĻŖ āĻ¨āĻž āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻ› āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻŦāĻžāĻ•āĻŋ āĻĨāĻžāĻ•ā§‡ - āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ—āĻžāĻ›

āĻ˛āĻžāĻ‡āĻ¨ s1-āĻ āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻŸāĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§āĻ¨:

āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨

āĻāĻ–āĻžāĻ¨ā§‡ "lf" (āĻ˛āĻžāĻ‡āĻ¨āĻĢāĻŋāĻĄ) āĻšāĻŋāĻšā§āĻ¨āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻ‡āĻ¨āĻ•ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧ, "sp" (āĻ¸ā§āĻĒā§‡āĻ¸) āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒā§‡āĻ¸āĨ¤

āĻ†āĻ° āĻ•āĻŋ āĻšāĻŦā§‡?

āĻ†āĻŽāĻ°āĻž āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ—āĻžāĻ› āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡. āĻāĻŦāĻ‚ āĻāĻŸāĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡? āĻ¤āĻžāĻ°āĻž āĻāĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻ¨ā§‡āĻŦā§‡ āĻ¨āĻž āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽā§‚āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ¤āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻĒāĻĨ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤ 0 āĻ˛ā§‡āĻŦā§‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻŽā§āĻŽāĻ¤ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻŦāĻžāĻŽ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ 1 āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻĄāĻžāĻ¨āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ•āĻ ā§‹āĻ°āĻ­āĻžāĻŦā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻ—ā§‡āĻ˛ā§‡, āĻāĻ‡ āĻ¸ā§āĻŦāĻ°āĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡, āĻ…āĻ•ā§āĻˇāĻ° āĻ•ā§‹āĻĄ āĻšāĻ˛ āĻ—āĻžāĻ›ā§‡āĻ° āĻļāĻŋāĻ•āĻĄāĻŧ āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ¤āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ‡ āĻāĻ•āĻ‡ āĻ…āĻ•ā§āĻˇāĻ° āĻ¸āĻŽā§āĻŦāĻ˛āĻŋāĻ¤ āĻĒāĻĨāĨ¤

āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨

āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻ•ā§‹āĻĄ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĒāĻ°āĻŋāĻŖāĻ¤. āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻ¯ā§‡ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŋ āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° "āĻ“āĻœāĻ¨" āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°ā§‡ āĻ†āĻ¸āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ - āĻāĻŸāĻŋ āĻ¤āĻžāĻ° āĻ•ā§‹āĻĄā§‡āĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻ†āĻ•āĻžāĻ°ā§‡, āĻ‰āĻ¤ā§āĻ¸ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ° āĻ“āĻœāĻ¨ āĻšāĻŦā§‡: 2 * 3 + 2 * 4 + 3 * 3 + 6 * 2 + 1 * 4 + 1 * 5 + 2 * 4 + 4 * 2 + 1 * 5 = 65 āĻŦāĻŋāĻŸ . āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻāĻŸāĻŋāĻ° āĻ“āĻœāĻ¨ āĻ›āĻŋāĻ˛ 176 āĻŦāĻŋāĻŸāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ 176/65 = 2.7 āĻ—ā§āĻŖ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ! āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻž āĻāĻ•āĻŸāĻž āĻ‡āĻ‰āĻŸā§‹āĻĒāĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻĒāĻžāĻ¤ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻ•āĻŽāĨ¤ āĻ•ā§‡āĻ¨? āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻāĻ•āĻŸā§ āĻĒāĻ°ā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚

āĻ“āĻ¯āĻŧā§‡āĻ˛, āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸āĻšāĻœ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻŦāĻžāĻ•āĻŋ āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻšāĻ¯āĻŧ. āĻ†āĻŽāĻŋ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ°āĻž āĻ…āĻ¨ā§‡āĻ•ā§‡āĻ‡ āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦ - āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻŦ āĻ¨āĻž! āĻšā§āĻ¯āĻžāĻ, āĻšā§āĻ¯āĻžāĻ, āĻāĻŸāĻŋ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻ†āĻŽāĻžāĻ° āĻĒāĻ•ā§āĻˇā§‡ āĻ•āĻ āĻŋāĻ¨ āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻ‡āĻ˛ table.txt āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

01110
 00
A010
E1111
I110
S10
T0110
U01111
Y1110

'āĻ•ā§āĻ¯āĻžāĻ°ā§‡āĻ•ā§āĻŸāĻžāĻ°' "āĻ•ā§āĻ¯āĻžāĻ°ā§‡āĻ•ā§āĻŸāĻžāĻ° āĻ•ā§‹āĻĄ" āĻĢāĻ°ā§āĻŽā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋāĨ¤ 01110 āĻšāĻŋāĻšā§āĻ¨ āĻ›āĻžāĻĄāĻŧāĻž āĻ•ā§‡āĻ¨? āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§‡āĻ° āĻ¸āĻžāĻĨā§‡, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻœāĻžāĻ­āĻž āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻ¯āĻž āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ¨āĻŋāĻ‰āĻ˛āĻžāĻ‡āĻ¨ āĻ…āĻ•ā§āĻˇāĻ° - 'n' - āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ (āĻāĻŸāĻŋ āĻ¯āĻ¤āĻ‡ āĻŦā§‹āĻ•āĻž āĻ˛āĻžāĻ—ā§āĻ• āĻ¨āĻž āĻ•ā§‡āĻ¨)āĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ–āĻžāĻ˛āĻŋ āĻ˛āĻžāĻ‡āĻ¨āĻŸāĻŋ āĻ•ā§‹āĻĄ 01110-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ•ā§āĻˇāĻ°āĨ¤ āĻ•ā§‹āĻĄ 00-āĻāĻ° āĻœāĻ¨ā§āĻ¯, āĻ…āĻ•ā§āĻˇāĻ°āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒā§‡āĻ¸āĨ¤ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ–āĻ¨āĻ‡ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ–āĻžāĻ¨ āĻ¸āĻšāĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¯ā§ŒāĻ•ā§āĻ¤āĻŋāĻ• āĻŦāĻ˛ā§‡ āĻĻāĻžāĻŦāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§‹āĻāĻž āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻ¸āĻšāĻœāĨ¤ āĻ†āĻŽāĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻļā§āĻ¨āĻ¤ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦā§‡.

āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻāĻŸāĻŋ āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻ–ā§āĻŦ āĻ¸āĻšāĻœāĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ:

āĻ•ā§‹āĻ¨ā§‹ āĻ•ā§‹āĻĄ āĻ…āĻ¨ā§āĻ¯ā§‡āĻ° āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĒāĻžāĻ˛āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻ•ā§āĻ°āĻŽā§‡ āĻŦāĻŋāĻŸ āĻŦāĻŋāĻŸ āĻĒāĻĄāĻŧāĻŋ, āĻāĻŦāĻ‚ āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ d, āĻ°āĻŋāĻĄ āĻŦāĻŋāĻŸ āĻ¸āĻŽāĻ¨ā§āĻŦāĻŋāĻ¤, āĻ…āĻ•ā§āĻˇāĻ° āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‡āĻ˛ā§‡, āĻ†āĻŽāĻ°āĻž āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻœāĻžāĻ¨āĻŋ āĻ¯ā§‡ āĻ…āĻ•ā§āĻˇāĻ° āĻ…āĻ•ā§āĻˇāĻ°āĻŸāĻŋ (āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŸāĻŋ!) āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ (āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ§āĻžāĻ°āĻŖāĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚) āĻ āĻ…āĻ•ā§āĻˇāĻ° āĻ˛āĻŋāĻ–āĻŋ, d āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ†āĻ°āĻ“ āĻĒāĻĄāĻŧāĻŋāĨ¤

āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­āĻžāĻ° āĻ˛āĻŋāĻ–ā§‡ āĻ†āĻŽāĻžāĻ° āĻ•ā§‹āĻĄ āĻ…āĻĒāĻŽāĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ. āĻ†āĻ¸ā§āĻ¨ āĻāĻ•ā§‡ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻ¸āĻžāĻ° āĻŦāĻ˛āĻŋāĨ¤

āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻ°ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°. āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻ°āĻž āĻ¨ā§‹āĻĄ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ˛āĻŋāĻ–āĻŋ:

public class Node {
    private int frequence;//Ņ‡Đ°ŅŅ‚ĐžŅ‚Đ°
    private char letter;//ĐąŅƒĐēва
    private Node leftChild;//ĐģĐĩвŅ‹Đš ĐŋĐžŅ‚ĐžĐŧĐžĐē
    private Node rightChild;//ĐŋŅ€Đ°Đ˛Ņ‹Đš ĐŋĐžŅ‚ĐžĐŧĐžĐē

   

    public Node(char letter, int frequence) { //ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐž, ĐēĐžĐŊŅŅ‚Ņ€ŅƒĐēŅ‚ĐžŅ€
        this.letter = letter;
        this.frequence = frequence;
    }

    public Node() {}//ĐŋĐĩŅ€ĐĩĐŗŅ€ŅƒĐˇĐēĐ° ĐēĐžĐŊŅŅ‚Ņ€ŅƒŅ‚ĐžŅ€Đ° Đ´ĐģŅ ĐąĐĩСŅ‹ĐŧŅĐŊĐŊŅ‹Ņ… ŅƒĐˇĐģОв(ŅĐŧ. вŅ‹ŅˆĐĩ в Ņ€Đ°ĐˇĐ´ĐĩĐģĐĩ Đž ĐŋĐžŅŅ‚Ņ€ĐžĐĩĐŊии Đ´ĐĩŅ€Đĩва ĐĨĐ°Ņ„Ņ„ĐŧĐ°ĐŊĐ°)
    public void addChild(Node newNode) {//дОйавиŅ‚ŅŒ ĐŋĐžŅ‚ĐžĐŧĐēĐ°
        if (leftChild == null)//ĐĩŅĐģи ĐģĐĩвŅ‹Đš ĐŋŅƒŅŅ‚ОК=> ĐŋŅ€Đ°Đ˛Ņ‹Đš Ņ‚ĐžĐļĐĩ=> дОйавĐģŅĐĩĐŧ в ĐģĐĩвŅ‹Đš
            leftChild = newNode;
        else {
            if (leftChild.getFrequence() <= newNode.getFrequence()) //в ОйŅ‰ĐĩĐŧ, ĐģĐĩвŅ‹Đŧ ĐŋĐžŅ‚ĐžĐŧĐēĐžĐŧ
                rightChild = newNode;//ŅŅ‚Đ°ĐŊĐĩŅ‚ Ņ‚ĐžŅ‚, Ņƒ ĐēĐžĐŗĐž ĐŧĐĩĐŊŅŒŅˆĐĩ Ņ‡Đ°ŅŅ‚ĐžŅ‚Đ°
            else {
                rightChild = leftChild;
                leftChild = newNode;
            }
        }

        frequence += newNode.getFrequence();//иŅ‚ĐžĐŗОваŅ Ņ‡Đ°ŅŅ‚ĐžŅ‚Đ°
    }

    public Node getLeftChild() {
        return leftChild;
    }

    public Node getRightChild() {
        return rightChild;
    }

    public int getFrequence() {
        return frequence;
    }

    public char getLetter() {
        return letter;
    }

    public boolean isLeaf() {//ĐŋŅ€ĐžĐ˛ĐĩŅ€ĐēĐ° ĐŊĐ° ĐģиŅŅ‚
        return leftChild == null && rightChild == null;
    }
}

āĻāĻ–āĻ¨ āĻ—āĻžāĻ›:

class BinaryTree {
    private Node root;

    public BinaryTree() {
        root = new Node();
    }

    public BinaryTree(Node root) {
        this.root = root;
    }

    public int getFrequence() {
        return root.getFrequence();
    }

    public Node getRoot() {
        return root;
    }
}

āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻžāĻ°āĻŋ:

import java.util.ArrayList;//Đ´Đ°-Đ´Đ°, ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒ ĐąŅƒĐ´ĐĩŅ‚ ĐŊĐ° йаСĐĩ ŅĐŋиŅĐēĐ°

class PriorityQueue {
    private ArrayList<BinaryTree> data;//ŅĐŋиŅĐžĐē ĐžŅ‡ĐĩŅ€Đĩди
    private int nElems;//ĐēĐžĐģ-вО ŅĐģĐĩĐŧĐĩĐŊŅ‚Ов в ĐžŅ‡ĐĩŅ€Đĩди

    public PriorityQueue() {
        data = new ArrayList<BinaryTree>();
        nElems = 0;
    }

    public void insert(BinaryTree newTree) {//вŅŅ‚авĐēĐ°
        if (nElems == 0)
            data.add(newTree);
        else {
            for (int i = 0; i < nElems; i++) {
                if (data.get(i).getFrequence() > newTree.getFrequence()) {//ĐĩŅĐģи Ņ‡Đ°ŅŅ‚ĐžŅ‚Đ° вŅŅ‚авĐģŅĐĩĐŧĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŧĐĩĐŊŅŒŅˆĐĩ 
                    data.add(i, newTree);//Ņ‡ĐĩĐŧ Ņ‡Đ°ŅŅ‚. Ņ‚ĐĩĐēŅƒŅ‰ĐĩĐŗĐž, Ņ‚Đž cдвиĐŗĐ°ĐĩĐŧ вŅĐĩ Đ´ĐĩŅ€ĐĩвŅŒŅ ĐŊĐ° ĐŋОСиŅ†Đ¸ŅŅ… ŅĐŋŅ€Đ°Đ˛Đ° ĐŊĐ° 1 ŅŅ‡ĐĩĐšĐēŅƒ                   
                    break;//СаŅ‚ĐĩĐŧ ŅŅ‚авиĐŧ ĐŊОвОĐĩ Đ´ĐĩŅ€ĐĩвО ĐŊĐ° ĐŋОСиŅ†Đ¸ŅŽ Ņ‚ĐĩĐēŅƒŅ‰ĐĩĐŗĐž
                }
                if (i == nElems - 1) 
                    data.add(newTree);
            }
        }
        nElems++;//ŅƒĐ˛ĐĩĐģиŅ‡Đ¸Đ˛Đ°ĐĩĐŧ ĐēĐžĐģ-вО ŅĐģĐĩĐŧĐĩĐŊŅ‚Ов ĐŊĐ° 1
    }

    public BinaryTree remove() {//ŅƒĐ´Đ°ĐģĐĩĐŊиĐĩ иС ĐžŅ‡ĐĩŅ€Đĩди
        BinaryTree tmp = data.get(0);//ĐēĐžĐŋиŅ€ŅƒĐĩĐŧ ŅƒĐ´Đ°ĐģŅĐĩĐŧŅ‹Đš ŅĐģĐĩĐŧĐĩĐŊŅ‚
        data.remove(0);//ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐž, ŅƒĐ´Đ°ĐģŅĐĩĐŧ
        nElems--;//ŅƒĐŧĐĩĐŊŅŒŅˆĐ°ĐĩĐŧ ĐēĐžĐģ-вО ŅĐģĐĩĐŧĐĩĐŊŅ‚Ов ĐŊĐ° 1
        return tmp;//вОСвŅ€Đ°Ņ‰Đ°ĐĩĐŧ ŅƒĐ´Đ°ĐģĐĩĐŊĐŊŅ‹Đš ŅĐģĐĩĐŧĐĩĐŊŅ‚(ŅĐģĐĩĐŧĐĩĐŊŅ‚ Ņ ĐŊаиĐŧĐĩĐŊŅŒŅˆĐĩĐš Ņ‡Đ°ŅŅ‚ĐžŅ‚ОК)
    }
}

āĻ¯ā§‡ āĻļā§āĻ°ā§‡āĻŖā§€āĻŸāĻŋ āĻšāĻžāĻĢāĻŽā§āĻ¯āĻžāĻ¨ āĻ—āĻžāĻ› āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡:

public class HuffmanTree {
    private final byte ENCODING_TABLE_SIZE = 127;//Đ´ĐģиĐŊĐ° ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊОК Ņ‚Đ°ĐąĐģиŅ†Ņ‹
    private String myString;//ŅĐžĐžĐąŅ‰ĐĩĐŊиĐĩ
    private BinaryTree huffmanTree;//Đ´ĐĩŅ€ĐĩвО ĐĨĐ°Ņ„Ņ„ĐŧĐ°ĐŊĐ°
    private int[] freqArray;//Ņ‡Đ°ŅŅ‚ĐžŅ‚ĐŊĐ°Ņ Ņ‚Đ°ĐąĐģиŅ†Đ°
    private String[] encodingArray;//ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊĐ°Ņ Ņ‚Đ°ĐąĐģиŅ†Đ°


    //----------------constructor----------------------
    public HuffmanTree(String newString) {
        myString = newString;

        freqArray = new int[ENCODING_TABLE_SIZE];
        fillFrequenceArray();

        huffmanTree = getHuffmanTree();

        encodingArray = new String[ENCODING_TABLE_SIZE];
        fillEncodingArray(huffmanTree.getRoot(), "", "");
    }

    //--------------------frequence array------------------------
    private void fillFrequenceArray() {
        for (int i = 0; i < myString.length(); i++) {
            freqArray[(int)myString.charAt(i)]++;
        }
    }

    public int[] getFrequenceArray() {
        return freqArray;
    }

    //------------------------huffman tree creation------------------
    private BinaryTree getHuffmanTree() {
        PriorityQueue pq = new PriorityQueue();
        //Đ°ĐģĐŗĐžŅ€Đ¸Ņ‚Đŧ ĐžĐŋиŅĐ°ĐŊ вŅ‹ŅˆĐĩ
        for (int i = 0; i < ENCODING_TABLE_SIZE; i++) {
            if (freqArray[i] != 0) {//ĐĩŅĐģи ŅĐ¸ĐŧвОĐģ ŅŅƒŅ‰ĐĩŅŅ‚вŅƒĐĩŅ‚ в ŅŅ‚Ņ€ĐžĐēĐĩ
                Node newNode = new Node((char) i, freqArray[i]);//Ņ‚Đž ŅĐžĐˇĐ´Đ°Ņ‚ŅŒ Đ´ĐģŅ ĐŊĐĩĐŗĐž Node
                BinaryTree newTree = new BinaryTree(newNode);//Đ° Đ´ĐģŅ Node ŅĐžĐˇĐ´Đ°Ņ‚ŅŒ BinaryTree
                pq.insert(newTree);//вŅŅ‚авиŅ‚ŅŒ в ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒ
            }
        }

        while (true) {
            BinaryTree tree1 = pq.remove();//иСвĐģĐĩŅ‡ŅŒ иС ĐžŅ‡ĐĩŅ€Đĩди ĐŋĐĩŅ€Đ˛ĐžĐĩ Đ´ĐĩŅ€ĐĩвО.

            try {
                BinaryTree tree2 = pq.remove();//иСвĐģĐĩŅ‡ŅŒ иС ĐžŅ‡ĐĩŅ€Đĩди вŅ‚ĐžŅ€ĐžĐĩ Đ´ĐĩŅ€ĐĩвО

                Node newNode = new Node();//ŅĐžĐˇĐ´Đ°Ņ‚ŅŒ ĐŊОвŅ‹Đš Node
                newNode.addChild(tree1.getRoot());//ŅĐ´ĐĩĐģĐ°Ņ‚ŅŒ ĐĩĐŗĐž ĐŋĐžŅ‚ĐžĐŧĐēĐ°Đŧи два иСвĐģĐĩŅ‡ĐĩĐŊĐŊŅ‹Ņ… Đ´ĐĩŅ€Đĩва
                newNode.addChild(tree2.getRoot());

                pq.insert(new BinaryTree(newNode);
            } catch (IndexOutOfBoundsException e) {//ĐžŅŅ‚Đ°ĐģĐžŅŅŒ ОдĐŊĐž Đ´ĐĩŅ€ĐĩвО в ĐžŅ‡ĐĩŅ€Đĩди
                return tree1;
            }
        }
    }

    public BinaryTree getTree() {
        return huffmanTree;
    }

    //-------------------encoding array------------------
    void fillEncodingArray(Node node, String codeBefore, String direction) {//СаĐŋĐžĐģĐŊиŅ‚ŅŒ ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊŅƒŅŽ Ņ‚Đ°ĐąĐģиŅ†Ņƒ
        if (node.isLeaf()) {
            encodingArray[(int)node.getLetter()] = codeBefore + direction;
        } else {
            fillEncodingArray(node.getLeftChild(), codeBefore + direction, "0");
            fillEncodingArray(node.getRightChild(), codeBefore + direction, "1");
        }
    }

    String[] getEncodingArray() {
        return encodingArray;
    }

    public void displayEncodingArray() {//Đ´ĐģŅ ĐžŅ‚ĐģĐ°Đ´Đēи
        fillEncodingArray(huffmanTree.getRoot(), "", "");

        System.out.println("======================Encoding table====================");
        for (int i = 0; i < ENCODING_TABLE_SIZE; i++) {
            if (freqArray[i] != 0) {
                System.out.print((char)i + " ");
                System.out.println(encodingArray[i]);
            }
        }
        System.out.println("========================================================");
    }
    //-----------------------------------------------------
    String getOriginalString() {
        return myString;
    }
}

āĻ¯ā§‡ āĻļā§āĻ°ā§‡āĻŖā§€āĻ¤ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ/āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

public class HuffmanOperator {
    private final byte ENCODING_TABLE_SIZE = 127;//Đ´ĐģиĐŊĐ° Ņ‚Đ°ĐąĐģиŅ†Ņ‹
    private HuffmanTree mainHuffmanTree;//Đ´ĐĩŅ€ĐĩвО ĐĨĐ°Ņ„Ņ„ĐŧĐ°ĐŊĐ° (иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ŅĐļĐ°Ņ‚иŅ)
    private String myString;//иŅŅ…ОдĐŊĐžĐĩ ŅĐžĐžĐąŅ‰ĐĩĐŊиĐĩ
    private int[] freqArray;//Ņ‡Đ°ŅŅ‚ĐžŅ‚Đ°ĐŊĐ°Ņ Ņ‚Đ°ĐąĐģиŅ†Đ°
    private String[] encodingArray;//ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊĐ°Ņ Ņ‚Đ°ĐąĐģиŅ†Đ°
    private double ratio;//ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚ ŅĐļĐ°Ņ‚иŅ 


    public HuffmanOperator(HuffmanTree MainHuffmanTree) {//for compress
        this.mainHuffmanTree = MainHuffmanTree;

        myString = mainHuffmanTree.getOriginalString();

        encodingArray = mainHuffmanTree.getEncodingArray();

        freqArray = mainHuffmanTree.getFrequenceArray();
    }

    public HuffmanOperator() {}//for extract;

    //---------------------------------------compression-----------------------------------------------------------
    private String getCompressedString() {
        String compressed = "";
        String intermidiate = "";//ĐŋŅ€ĐžĐŧĐĩĐļŅƒŅ‚ĐžŅ‡ĐŊĐ°Ņ ŅŅ‚Ņ€ĐžĐēĐ°(ĐąĐĩС дОйавОŅ‡ĐŊŅ‹Ņ… ĐŊŅƒĐģĐĩĐš)
        //System.out.println("=============================Compression=======================");
        //displayEncodingArray();
        for (int i = 0; i < myString.length(); i++) {
            intermidiate += encodingArray[myString.charAt(i)];
        }
        //МŅ‹ ĐŊĐĩ ĐŧĐžĐļĐĩĐŧ ĐŋиŅĐ°Ņ‚ŅŒ йиŅ‚ в Ņ„Đ°ĐšĐģ. ПоŅŅ‚ĐžĐŧŅƒ ĐŊŅƒĐļĐŊĐž ŅĐ´ĐĩĐģĐ°Ņ‚ŅŒ Đ´ĐģиĐŊŅƒ ŅĐžĐžĐąŅ‰ĐĩĐŊиŅ ĐēŅ€Đ°Ņ‚ĐŊОК 8=>
        //ĐŊŅƒĐļĐŊĐž дОйавиŅ‚ŅŒ ĐŊŅƒĐģи в ĐēĐžĐŊĐĩŅ†(ĐŧĐžĐļĐŊĐž 1, ĐŊĐĩŅ‚ Ņ€Đ°ĐˇĐŊиŅ†Ņ‹)
        byte counter = 0;//ĐēĐžĐģиŅ‡ĐĩŅŅ‚вО дОйавĐģĐĩĐŊĐŊŅ‹Ņ… в ĐēĐžĐŊĐĩŅ† ĐŊŅƒĐģĐĩĐš (йаКŅ‚Đ° в ĐŋĐžĐģĐŊĐĩ Ņ…ваŅ‚иŅ‚: 0<=counter<8<127)
        for (int length = intermidiate.length(), delta = 8 - length % 8; 
        		counter < delta ; counter++) {//delta - ĐēĐžĐģиŅ‡ĐĩŅŅ‚вО дОйавĐģĐĩĐŊĐŊŅ‹Ņ… ĐŊŅƒĐģĐĩĐš
            intermidiate += "0";
        }
        
        //ŅĐēĐģĐĩиŅ‚ŅŒ ĐēĐžĐģ-вО дОйавОŅ‡ĐŊŅ‹Ņ… ĐŊŅƒĐģĐĩĐš в йиĐŊĐ°Ņ€ĐŊĐžĐŧ ĐŋŅ€ĐĩĐ´Đ°ŅŅ‚вĐģĐĩĐŊии и ĐŋŅ€ĐžĐŧĐĩĐļŅƒŅ‚ĐžŅ‡ĐŊŅƒŅŽ ŅŅ‚Ņ€ĐžĐēŅƒ 
        compressed = String.format("%8s", Integer.toBinaryString(counter & 0xff)).replace(" ", "0") + intermidiate;
        		
        //идĐĩĐ°ĐģиСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚
        setCompressionRatio();
        //System.out.println("===============================================================");
        return compressed;
    }
    
    private void setCompressionRatio() {//ĐŋĐžŅŅ‡Đ¸Ņ‚Đ°Ņ‚ŅŒ идĐĩĐ°ĐģиСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚ 
        double sumA = 0, sumB = 0;//A-the original sum
        for (int i = 0; i < ENCODING_TABLE_SIZE; i++) {
            if (freqArray[i] != 0) {
                sumA += 8 * freqArray[i];
                sumB += encodingArray[i].length() * freqArray[i];
            }
        }
        ratio = sumA / sumB;
    }

    public byte[] getBytedMsg() {//final compression
        StringBuilder compressedString = new StringBuilder(getCompressedString());
        byte[] compressedBytes = new byte[compressedString.length() / 8];
        for (int i = 0; i < compressedBytes.length; i++) {
                compressedBytes[i] = (byte) Integer.parseInt(compressedString.substring(i * 8, (i + 1) * 8), 2);
        }
        return compressedBytes;
    }
    //---------------------------------------end of compression----------------------------------------------------------------
    //------------------------------------------------------------extract-----------------------------------------------------
    public String extract(String compressed, String[] newEncodingArray) {
        String decompressed = "";
        String current = "";
        String delta = "";
        encodingArray = newEncodingArray;
        
        //displayEncodingArray();
        //ĐŋĐžĐģŅƒŅ‡Đ¸Ņ‚ŅŒ ĐēĐžĐģ-вО вŅŅ‚авĐģĐĩĐŊĐŊŅ‹Ņ… ĐŊŅƒĐģĐĩĐš
        for (int i = 0; i < 8; i++) 
        	delta += compressed.charAt(i);
        int ADDED_ZEROES = Integer.parseInt(delta, 2);
       
        for (int i = 8, l = compressed.length() - ADDED_ZEROES; i < l; i++) {
            //i = 8, Ņ‚.Đē. ĐŋĐĩŅ€Đ˛Ņ‹Đŧ йаКŅ‚ĐžĐŧ Ņƒ ĐŊĐ°Ņ идĐĩŅ‚ ĐēĐžĐģ-вО вŅŅ‚авĐģĐĩĐŊĐŊŅ‹Ņ… ĐŊŅƒĐģĐĩĐš
            current += compressed.charAt(i);
            for (int j = 0; j < ENCODING_TABLE_SIZE; j++) {
                if (current.equals(encodingArray[j])) {//ĐĩŅĐģи ŅĐžĐ˛ĐŋĐ°ĐģĐž
                    decompressed += (char)j;//Ņ‚Đž дОйавĐģŅĐĩĐŧ ŅĐģĐĩĐŧĐĩĐŊŅ‚
                    current = "";//и ОйĐŊŅƒĐģŅĐĩĐŧ Ņ‚ĐĩĐēŅƒŅ‰ŅƒŅŽ ŅŅ‚Ņ€ĐžĐēŅƒ
                }
            }
        }

        return decompressed;
    }

    public String getEncodingTable() {
        String enc = "";
    	for (int i = 0; i < encodingArray.length; i++) {
        	if (freqArray[i] != 0) 
        		enc += (char)i + encodingArray[i] + 'n';
        }
    	return enc;
    }

    public double getCompressionRatio() {
        return ratio;
    }


    public void displayEncodingArray() {//Đ´ĐģŅ ĐžŅ‚ĐģĐ°Đ´Đēи
        System.out.println("======================Encoding table====================");
        for (int i = 0; i < ENCODING_TABLE_SIZE; i++) {
            //if (freqArray[i] != 0) {
                System.out.print((char)i + " ");
                System.out.println(encodingArray[i]);
            //}
        }
        System.out.println("========================================================");
    }
    }

āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§‡āĻ¯āĻŧ:

import java.io.File;
import java.io.PrintWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Closeable;

public class FileOutputHelper implements Closeable {
    private File outputFile;
    private FileOutputStream fileOutputStream;

    public FileOutputHelper(File file) throws FileNotFoundException {
        outputFile = file;
        fileOutputStream = new FileOutputStream(outputFile);
    }

    public void writeByte(byte msg) throws IOException {
        fileOutputStream.write(msg);
    }

    public void writeBytes(byte[] msg) throws IOException {
        fileOutputStream.write(msg);
    }

    public void writeString(String msg) {
    	try (PrintWriter pw = new PrintWriter(outputFile)) {
    		pw.write(msg);
    	} catch (FileNotFoundException e) {
    		System.out.println("НĐĩвĐĩŅ€ĐŊŅ‹Đš ĐŋŅƒŅ‚ŅŒ, иĐģи Ņ‚Đ°ĐēĐžĐŗĐž Ņ„Đ°ĐšĐģĐ° ĐŊĐĩ ŅŅƒŅ‰ĐĩŅŅ‚вŅƒĐĩŅ‚!");
    	}
    }

    @Override
    public void close() throws IOException {
        fileOutputStream.close();
    }

    public void finalize() throws IOException {
        close();
    }
}

āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§‡āĻ¯āĻŧ:

import java.io.FileInputStream;
import java.io.EOFException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;

public class FileInputHelper implements Closeable {
	private FileInputStream fileInputStream;
	private BufferedReader fileBufferedReader;
	
	public FileInputHelper(File file) throws IOException {
		fileInputStream = new FileInputStream(file);
		fileBufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
	}
	
	
    public byte readByte() throws IOException {
    	int cur = fileInputStream.read();
    	if (cur == -1)//ĐĩŅĐģи СаĐēĐžĐŊŅ‡Đ¸ĐģŅŅ Ņ„Đ°ĐšĐģ
    		throw new EOFException();
    	return (byte)cur;
    }
    
    public String readLine() throws IOException {
    	return fileBufferedReader.readLine();
    }
    
    @Override
    public void close() throws IOException{
    	fileInputStream.close();
    }
}

āĻ­āĻžāĻ˛, āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¸:

import java.io.File;
import java.nio.charset.MalformedInputException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Paths;
import java.util.List;
import java.io.EOFException;
public class Main {
	private static final byte ENCODING_TABLE_SIZE = 127;
	
    public static void main(String[] args) throws IOException {
        try {//ŅƒĐēаСŅ‹Đ˛Đ°ĐĩĐŧ иĐŊŅŅ‚Ņ€ŅƒĐēŅ†Đ¸ŅŽ Ņ ĐŋĐžĐŧĐžŅ‰ŅŒŅŽ Đ°Ņ€ĐŗŅƒĐŧĐĩĐŊŅ‚Ов ĐēĐžĐŧĐ°ĐŊĐ´ĐŊОК ŅŅ‚Ņ€ĐžĐēи
            if (args[0].equals("--compress") || args[0].equals("-c"))
                compress(args[1]);
            else if ((args[0].equals("--extract") || args[0].equals("-x"))
            		&& (args[2].equals("--table") || args[2].equals("-t"))) {
            	extract(args[1], args[3]);
            }
            else
                throw new IllegalArgumentException();
        } catch (ArrayIndexOutOfBoundsException | IllegalArgumentException e) {
            System.out.println("НĐĩвĐĩŅ€ĐŊŅ‹Đš Ņ„ĐžŅ€ĐŧĐ°Ņ‚ ввОда Đ°Ņ€ĐŗŅƒĐŧĐĩĐŊŅ‚Ов ");
            System.out.println("ЧиŅ‚Đ°ĐšŅ‚Đĩ Readme.txt");
            e.printStackTrace();
        }
    }

	public static void compress(String stringPath) throws IOException {
        List<String> stringList;
        File inputFile = new File(stringPath);
        String s = "";
        File compressedFile, table;
        
        try {
            stringList = Files.readAllLines(Paths.get(inputFile.getAbsolutePath()));
        } catch (NoSuchFileException e) {
            System.out.println("НĐĩвĐĩŅ€ĐŊŅ‹Đš ĐŋŅƒŅ‚ŅŒ, иĐģи Ņ‚Đ°ĐēĐžĐŗĐž Ņ„Đ°ĐšĐģĐ° ĐŊĐĩ ŅŅƒŅ‰ĐĩŅŅ‚вŅƒĐĩŅ‚!");
            return;
        } catch (MalformedInputException e) {
        	System.out.println("ĐĸĐĩĐēŅƒŅ‰Đ°Ņ ĐēОдиŅ€ĐžĐ˛ĐēĐ° Ņ„Đ°ĐšĐģĐ° ĐŊĐĩ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ŅŅ");
        	return;
        }

        for (String item : stringList) {
            s += item;
            s += 'n';
        }

        HuffmanOperator operator = new HuffmanOperator(new HuffmanTree(s));

        compressedFile = new File(inputFile.getAbsolutePath() + ".cpr");
        compressedFile.createNewFile();
        try (FileOutputHelper fo = new FileOutputHelper(compressedFile)) {
        	fo.writeBytes(operator.getBytedMsg());
        }
        //create file with encoding table:
        
        table = new File(inputFile.getAbsolutePath() + ".table.txt");
        table.createNewFile();
        try (FileOutputHelper fo = new FileOutputHelper(table)) {
        	fo.writeString(operator.getEncodingTable());
        }
        
        System.out.println("ПŅƒŅ‚ŅŒ Đē ŅĐļĐ°Ņ‚ĐžĐŧŅƒ Ņ„Đ°ĐšĐģŅƒ: " + compressedFile.getAbsolutePath());
        System.out.println("ПŅƒŅ‚ŅŒ Đē ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊОК Ņ‚Đ°ĐąĐģиŅ†Đĩ " + table.getAbsolutePath());
        System.out.println("БĐĩС Ņ‚Đ°ĐąĐģиŅ†Ņ‹ Ņ„Đ°ĐšĐģ ĐąŅƒĐ´ĐĩŅ‚ ĐŊĐĩвОСĐŧĐžĐļĐŊĐž иСвĐģĐĩŅ‡ŅŒ!");
        
        double idealRatio = Math.round(operator.getCompressionRatio() * 100) / (double) 100;//идĐĩĐ°ĐģиСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚
        double realRatio = Math.round((double) inputFile.length() 
        		/ ((double) compressedFile.length() + (double) table.length()) * 100) / (double)100;//ĐŊĐ°ŅŅ‚ĐžŅŅ‰Đ¸Đš ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚
        
        System.out.println("ИдĐĩĐ°ĐģиСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš ĐēĐžŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚ ŅĐļĐ°Ņ‚иŅ Ņ€Đ°Đ˛ĐĩĐŊ " + idealRatio);
        System.out.println("КоŅŅ„Ņ„иŅ†Đ¸ĐĩĐŊŅ‚ ŅĐļĐ°Ņ‚иŅ Ņ ŅƒŅ‡ĐĩŅ‚ĐžĐŧ ĐēОдиŅ€ĐžĐ˛ĐžŅ‡ĐŊОК Ņ‚Đ°ĐąĐģиŅ†Ņ‹ " + realRatio);
    }

    public static void extract(String filePath, String tablePath) throws FileNotFoundException, IOException {
        HuffmanOperator operator = new HuffmanOperator();
        File compressedFile = new File(filePath),
        	 tableFile = new File(tablePath),
        	 extractedFile = new File(filePath + ".xtr");
        String compressed = "";
        String[] encodingArray = new String[ENCODING_TABLE_SIZE];
        //read compressed file
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!check here:
        try (FileInputHelper fi = new FileInputHelper(compressedFile)) {
        	byte b;
        	while (true) {
        		b = fi.readByte();//method returns EOFException
        		compressed += String.format("%8s", Integer.toBinaryString(b & 0xff)).replace(" ", "0");
        	}
        } catch (EOFException e) {
        	
        }
        
        //--------------------
        
        //read encoding table:
        try (FileInputHelper fi = new FileInputHelper(tableFile)) {
        	fi.readLine();//skip first empty string
        	encodingArray[(byte)'n'] = fi.readLine();//read code for 'n'
        	while (true) {
        		String s = fi.readLine();
        		if (s == null)
        			throw new EOFException();
        		encodingArray[(byte)s.charAt(0)] = s.substring(1, s.length());        		
        	}
        } catch (EOFException ignore) {}
        
        extractedFile.createNewFile();
        //extract:
		try (FileOutputHelper fo = new FileOutputHelper(extractedFile)) {
			fo.writeString(operator.extract(compressed, encodingArray));
		}
		
		System.out.println("ПŅƒŅ‚ŅŒ Đē Ņ€Đ°ŅĐŋĐ°ĐēОваĐŊĐŊĐžĐŧŅƒ Ņ„Đ°ĐšĐģŅƒ " + extractedFile.getAbsolutePath());
    }
}

āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ readme.txt āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ 🙂

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻ†āĻŽāĻŋ āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ¸āĻŦ āĻŦāĻ˛āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨. āĻ•ā§‹āĻĄ, āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ā§‡āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻŽāĻžāĻ° āĻ…āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ•āĻŋāĻ›ā§ āĻŦāĻ˛āĻžāĻ° āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻŦāĻŋāĻ§āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–ā§āĻ¨āĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ›ā§ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ¨āĻž āĻ•āĻ°ā§‡ āĻĨāĻžāĻ•āĻŋ āĻ¤āĻŦā§‡ āĻĻāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ¨āĻ¤ā§‡ āĻšāĻžāĻ‡!

āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯

āĻšā§āĻ¯āĻžāĻ, āĻšā§āĻ¯āĻžāĻ, āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨āĻ“ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻ›āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻŋ āĻ¸āĻšāĻ— āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ­ā§āĻ˛ā§‡ āĻ¯āĻžāĻ‡āĻ¨āĻŋāĨ¤ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ s1-āĻāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ“āĻœāĻ¨ 48 āĻŦāĻžāĻ‡āĻŸ - āĻŽā§‚āĻ˛ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŦā§‡āĻļāĻŋ, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻž āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻļā§‚āĻ¨ā§āĻ¯ā§‡āĻ° āĻ•āĻĨāĻž āĻ­ā§āĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋ (āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻļā§‚āĻ¨ā§āĻ¯ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž 7) => āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ…āĻ¨ā§āĻĒāĻžāĻ¤ āĻāĻ•ā§‡āĻ° āĻ•āĻŽ āĻšāĻŦā§‡: 176 /(65 + 48*8 + 7) = 0.38āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋāĻ“ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŽā§āĻ–ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻ¯āĻŧāĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻāĻ‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ›ā§‹āĻŸ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ…āĻĻāĻ•ā§āĻˇ āĻšāĻŦā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻĄāĻŧ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ•āĻŋ āĻšāĻŦā§‡? āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŦāĻĄāĻŧāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻ¯ā§‡āĻŽāĻ¨ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡! āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‰āĻ¸ā§āĻŸā§‡āĻ° āĻŽāĻ¨ā§‹āĻ˛ā§‹āĻ— āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­āĻžāĻ° 1.46 āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ (āĻ†āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ) āĻ¸āĻšāĻ— āĻĻā§‡āĻ¯āĻŧ - āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻĻā§‡āĻĄāĻŧ āĻ—ā§āĻŖ! āĻāĻŦāĻ‚ āĻšā§āĻ¯āĻžāĻ, āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ‡āĻ‚āĻ°ā§‡āĻœāĻŋāĻ¤ā§‡ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ•āĻĨāĻž āĻ›āĻŋāĻ˛āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨