One possible solution in JavaScript might look like this:
<script type="text/javascript">
function sumXorSubStr(numStr)
{
numStr = parseInt(numStr).toString();
var
results = {},
lastPos = numStr.length -1
;
for(var start=0 ; start <= lastPos ; start++)
for(var op = 0, i = start ; i <= lastPos ; i++)
results[ op ^= numStr[i] ] = 1;
var sum = 0;
for(var i in results)
sum += parseInt(i);
return sum;
}
alert( sumXorSubStr(312) );
</script>
The wrapper function for an I / O loop is a non-optimal way. More performance can be achieved by combining it into one function.
function sumRangeXorSubStr(from, to)
{
var result = 0;
for(var n=from; n<=to; n++)
result += sumXorSubStr(n);
return result;
}
, , ...