// no worky
for (var didx = 0; didx < domains[idx].Count; ++didx) {
var domainValue = domains[idx][didx];
if (value == domainValue || OptMath.Abs(domainValue - value) == OptMath.Abs(current - idx)) {
domains[idx][didx] = -1;
}
}
domains[idx].RemoveAll((x) => x == -1);
// worky
domains[idx] = (
from domainValue in domains[idx]
where domainValue != value
where OptMath.Abs(domainValue - value) != OptMath.Abs(current - idx)
select domainValue
).ToList();
Ly8gbm8gd29ya3kKZm9yICh2YXIgZGlkeCA9IDA7IGRpZHggPCBkb21haW5zW2lkeF0uQ291bnQ7ICsrZGlkeCkgewogICAgdmFyIGRvbWFpblZhbHVlID0gZG9tYWluc1tpZHhdW2RpZHhdOwogICAgaWYgKHZhbHVlID09IGRvbWFpblZhbHVlIHx8IE9wdE1hdGguQWJzKGRvbWFpblZhbHVlIC0gdmFsdWUpID09IE9wdE1hdGguQWJzKGN1cnJlbnQgLSBpZHgpKSB7CiAgICAgICAgZG9tYWluc1tpZHhdW2RpZHhdID0gLTE7CiAgICB9Cn0KZG9tYWluc1tpZHhdLlJlbW92ZUFsbCgoeCkgPT4geCA9PSAtMSk7CgovLyB3b3JreQpkb21haW5zW2lkeF0gPSAoCiAgICBmcm9tIGRvbWFpblZhbHVlIGluIGRvbWFpbnNbaWR4XQogICAgd2hlcmUgZG9tYWluVmFsdWUgIT0gdmFsdWUKICAgIHdoZXJlIE9wdE1hdGguQWJzKGRvbWFpblZhbHVlIC0gdmFsdWUpICE9IE9wdE1hdGguQWJzKGN1cnJlbnQgLSBpZHgpCiAgICBzZWxlY3QgZG9tYWluVmFsdWUKKS5Ub0xpc3QoKTs=