fn halves_sum_equal(n: i64) -> bool {
let s = n.abs().to_string();
if s.len() % 2 != 0 {
return false;
}
let half = s.len() / 2;
let (left, right) = s.split_at(half);
let sum_digits = |part: &str| {
part.chars()
.map(|c| c.to_digit(10).unwrap() as i32)
.sum::<i32>()
};
sum_digits(left) == sum_digits(right)
}
fn main() {
let nums = [123456, 123321, 123123, 123411, 1234321, 12321];
for &n in nums.iter() {
println!("{}: {}", n, halves_sum_equal(n));
}
}
/*
run:
123456: false
123321: true
123123: true
123411: true
1234321: false
12321: false
*/