This answers the Problem of the Week from May 8, 2012. The identity of this well-known computer science function is the binary search. The following is the same code from before with the variables more properly named:
var binarySearch = (function(internal) { function search(array, item, temp1, temp2) { array = array[temp1 = parseInt((temp2 = array.length) / 2)] == item ? temp1 : temp1 > 0 && array[temp1] > item ? +search.call(internal, array.slice(0, temp1), item) : temp1 < temp2 - 1 && array[temp1] < item ? temp1 + 1 + search.call(internal, array.slice(temp1 + 1), item) : internal; return this !== internal && isNaN(array) ? -1 : array; } return search; })({});
To tell you the truth, after using the real names in the function definition, I realized that the code could be shortened a little more without changing the execution by doing the following:
var binarySearch = (function(internal) { return function(array, item, temp1, temp2) { array = array[temp1 = parseInt((temp2 = array.length) / 2)] == item ? temp1 : temp1 > 0 && array[temp1] > item ? +binarySearch.call(internal, array.slice(0, temp1), item) : temp1 < temp2 - 1 && array[temp1] < item ? temp1 + 1 + binarySearch.call(internal, array.slice(temp1 + 1), item) : internal; return this !== internal && isNaN(array) ? -1 : array; }; })({});
1 Comment
POW – Unnamed Function #2 | Chris West's Blog · August 16, 2012 at 1:21 PM
[…] this Problem of the Week will be posted a week from today on Wednesday, August 15, 2012 was posted here. This entry was posted in Blog, JavaScript, JScript, Problem of the Week and tagged Array, […]