freq_pair.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // package freq_pair -- наиболее частотная пара
  2. package freq_pair
  3. import (
  4. "fmt"
  5. )
  6. // ЧастПара -- самая частотная пара
  7. type ЧастотПара struct {
  8. val1, val2 int // Самые частотные значения
  9. key0, key1 uint32 // Самый частотные ключи
  10. strCombo string // Самая выгодная комбинация для сжатия(11, 12, 21, 22)
  11. }
  12. // SetVal1 -- устанавливает значения частотных пар
  13. func (сам *ЧастотПара) SetVal1(key uint32, val int) {
  14. if val > сам.val2 {
  15. сам.val1 = сам.val2
  16. сам.key0 = сам.key1
  17. сам.val2 = val
  18. сам.key1 = key
  19. return
  20. }
  21. сам.val1 = val
  22. сам.key0 = key
  23. }
  24. // String -- строковое представление частотных пар
  25. func (сам *ЧастотПара) String() string {
  26. str := fmt.Sprintf("{key1:%v val1:%v; key2:%v val2:%v; combo:%q}",
  27. сам.key0,
  28. сам.val1,
  29. сам.key1,
  30. сам.val2,
  31. сам.strCombo,
  32. )
  33. return str
  34. }
  35. // SetKeys -- устанавливает ключи замен
  36. func (сам *ЧастотПара) SetKeys(key0, key1 uint32) {
  37. сам.key0 = key0
  38. сам.key1 = key1
  39. }
  40. // Key0 -- самый частотный ключ 0
  41. func (сам *ЧастотПара) Key0() uint32 {
  42. return сам.key0
  43. }
  44. // Key1 -- самый частотный ключ 1
  45. func (сам *ЧастотПара) Key1() uint32 {
  46. return сам.key1
  47. }