freq_pair.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. Combo_ 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. сам.Combo_,
  32. )
  33. return str
  34. }
  35. // SetKeys -- устанавливает ключи замен
  36. func (сам *ЧастотПара) SetKeys(key0, key1 uint32) {
  37. сам.Key0_ = key0
  38. сам.Key1_ = key1
  39. }