Guest User

Untitled

a guest
Jan 20th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. const TS_PACKET_SIZE: usize = 188;
  2. const EIT_SEGMENT_LIMIT: usize = 4096;
  3.  
  4. const ITEMS_1: &[usize] = &[195, 207];
  5. const RESULT_1: usize = 564;
  6.  
  7. const ITEMS_2: &[usize] = &[509, 131];
  8. const RESULT_2: usize = 752;
  9.  
  10. const ITEMS_3: &[usize] = &[
  11. 189, 380, 1070, 324, 429, 439, 229, 387,
  12. 933, 741, 582, 229, 203, 643, 582, 1070,
  13. 380, 508, 459, 1072, 713, 468, 465, 336,
  14. 459, 1072, 382, 331, 1108, 933, 599, 924,
  15. 434, 401, 345, 324, 370, 701, 711, 599,
  16. 468, 243, 1108, 508, 459, 1072, 131, 924,
  17. 478, 333, 459, 1072, 890, 382, 66, 1089,
  18. 701, 930, 643, 372, 392, 349, 342, 370,
  19. 465, 604, 930, 465
  20. ];
  21. const RESULT_3: usize = 40984;
  22.  
  23. fn calc_ts(value: usize) -> usize {
  24. if value % TS_PACKET_SIZE > 0 {
  25. ((value - (TS_PACKET_SIZE - 3))/ (TS_PACKET_SIZE - 4) + 1) * TS_PACKET_SIZE + TS_PACKET_SIZE
  26. }
  27. else {
  28. value
  29. }
  30. }
  31.  
  32. fn calc(items: &[usize]) -> usize {
  33. let mut s: usize = 0;
  34. let mut res: usize = 0;
  35. for item in items {
  36. if s + *item > EIT_SEGMENT_LIMIT {
  37. res += calc_ts(s);
  38. s = *item;
  39. }
  40. else {
  41. s += *item;
  42. }
  43. }
  44. res += calc_ts(s);
  45. res
  46. }
  47.  
  48. fn main() {
  49. assert_eq!(calc(ITEMS_1), RESULT_1);
  50. assert_eq!(calc(ITEMS_2), RESULT_2);
  51. assert_eq!(calc(ITEMS_3), RESULT_3);
  52. println!("Ok");
  53. }
Add Comment
Please, Sign In to add comment