pub fn hint_weight(hint: &[u8], max_ones: usize, rows: usize) -> Option { let mut previous = 0usize; let mut total = 0usize; let mut bad = false; let mut i = 0usize; while i < rows { let current = hint[max_ones + i] as usize; if current < previous || current > max_ones { bad = true; } else { let mut j = previous; while j < current { total += hint[j] as usize; j += 1; } previous = current; } i += 1; } if bad { None } else { Some(total) } }