Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const TS_PACKET_SIZE: usize = 188;
- const EIT_SEGMENT_LIMIT: usize = 4096;
- const ITEMS_1: &[usize] = &[195, 207];
- const RESULT_1: usize = 564;
- const ITEMS_2: &[usize] = &[509, 131];
- const RESULT_2: usize = 752;
- const ITEMS_3: &[usize] = &[
- 189, 380, 1070, 324, 429, 439, 229, 387,
- 933, 741, 582, 229, 203, 643, 582, 1070,
- 380, 508, 459, 1072, 713, 468, 465, 336,
- 459, 1072, 382, 331, 1108, 933, 599, 924,
- 434, 401, 345, 324, 370, 701, 711, 599,
- 468, 243, 1108, 508, 459, 1072, 131, 924,
- 478, 333, 459, 1072, 890, 382, 66, 1089,
- 701, 930, 643, 372, 392, 349, 342, 370,
- 465, 604, 930, 465
- ];
- const RESULT_3: usize = 40984;
- fn calc_ts(value: usize) -> usize {
- if value % TS_PACKET_SIZE > 0 {
- ((value - (TS_PACKET_SIZE - 3))/ (TS_PACKET_SIZE - 4) + 1) * TS_PACKET_SIZE + TS_PACKET_SIZE
- }
- else {
- value
- }
- }
- fn calc(items: &[usize]) -> usize {
- let mut s: usize = 0;
- let mut res: usize = 0;
- for item in items {
- if s + *item > EIT_SEGMENT_LIMIT {
- res += calc_ts(s);
- s = *item;
- }
- else {
- s += *item;
- }
- }
- res += calc_ts(s);
- res
- }
- fn main() {
- assert_eq!(calc(ITEMS_1), RESULT_1);
- assert_eq!(calc(ITEMS_2), RESULT_2);
- assert_eq!(calc(ITEMS_3), RESULT_3);
- println!("Ok");
- }
Add Comment
Please, Sign In to add comment