{"ScriptPreparationCode":"function randomIntFromInterval(min, max) { // min and max included \r\n return Math.floor(Math.random() * (max - min \u002B 1) \u002B min)\r\n}\r\nvar rows = [];\r\nfor(let i = 0; i\u003C10000;i\u002B\u002B) {\r\n rows.push(i * randomIntFromInterval(16,50));\r\n}\r\nfunction filterBinary(arr,min,max){\r\n var len = arr.length\r\n ,up = -1\r\n ,down = len\r\n ,rrange= []\r\n ,mid = Math.floor(len/2) \r\n ;\r\n while (up\u002B\u002B\u003Cmid \u0026\u0026 down--\u003Emid){\r\n if (arr[up]\u003E=max || arr[down]\u003C=min){break;}\r\n if (arr[up]\u003E=min){\r\n rrange.push(arr[up]);\r\n }\r\n if (arr[down]\u003C=max){\r\n rrange.push(arr[down]);\r\n }\r\n }\r\n return rrange; \r\n}\r\n Array.prototype.sliceRange = function(min, max) {\r\n if (min \u003E max) return this.sliceRange(max, min);\r\n var l = 0,\r\n r = this.length;\r\n rough: {\r\n while (l \u003C r) {\r\n var m = ~~(l \u002B (r - l) / 2);\r\n if (this[m] \u003C min)\r\n l = m \u002B 1;\r\n else if (this[m] \u003E max)\r\n r = m;\r\n else\r\n break rough;\r\n }\r\n return [];\r\n }\r\n var lr = m,\r\n rl = m;\r\n while (l \u003C lr) {\r\n m = ~~(l \u002B (lr - l) / 2);\r\n if (this[m] \u003C min)\r\n l = m \u002B 1;\r\n else\r\n lr = m;\r\n }\r\n while (rl \u003C r) {\r\n m = ~~(rl \u002B (r - rl) / 2);\r\n if (this[m] \u003E max)\r\n r = m;\r\n else\r\n rl = m \u002B 1;\r\n }\r\n return this.slice(l, r);\r\n}\r\n function getDatesBetweenRange(dates, min, max) {\r\n var subArray = [];\r\n var value, iCntr;\r\n var start, end;\r\n\r\n var low = 0, high = dates.length - 1;\r\n while (high - low \u003E 1) {\r\n centre = Math.floor((high \u002B low) / 2);\r\n if (dates[centre] \u003C min)\r\n low = centre;\r\n else \r\n high = centre;\r\n }\r\n start = low;\r\n high = dates.length - 1\r\n while (high - low \u003E 1) {\r\n centre = Math.floor((high \u002B low) / 2);\r\n if (dates[centre] \u003E max)\r\n high = centre;\r\n else \r\n low = centre;\r\n }\r\n end = high;\r\n\r\n for (var i = start; i \u003C end; i\u002B\u002B) {\r\n value = dates[i];\r\n if (value \u003C min) {\r\n continue;\r\n }\r\n if (value \u003E max) {\r\n break;\r\n }\r\n subArray.push(value);\r\n }\r\n return subArray;\r\n}","TestCases":[{"Name":"filterBinary","Code":"filterBinary(rows, 70000, 70400)","IsDeferred":false},{"Name":"sliceRange","Code":"rows.sliceRange(70000, 70400)","IsDeferred":false},{"Name":"getDatesBetweenRange","Code":"getDatesBetweenRange(rows,70000, 70400)","IsDeferred":false}]}