eyros 2.0.0

multi-dimensional interval database
Documentation
pub fn plan (a: &Vec<bool>, b: &Vec<bool>)
-> Vec<(usize,Vec<usize>,Vec<usize>)> {
  let len = a.len().max(b.len());
  let mut out = vec![];
  let mut acc = (0,vec![],vec![]);
  let mut carry = 0;
  for i in 0..(len+1) {
    let xa = if i < a.len() { a[i] as u64 } else { 0 };
    let xb = if i < b.len() { b[i] as u64 } else { 0 };
    let n = xa + xb + carry;
    let bit = n % 2 == 1;

    if xa == 1 { acc.1.push(i) }
    if xb == 1 && !bit { acc.2.push(i) }

    if bit && xb == 0 {
      acc.0 = i;
      out.push(acc);
      acc = (0,vec![],vec![]);
    }
    carry = n / 2;
  }
  out
}