DEV Community

Discussion on: The Holey Array Problem

Collapse
 
voodooattack profile image
Abdullah Ali • Edited

The solution is to guard against unbounded inputs when writing to arrays.

You can use if statements to check if the value is within bounds, and throw an error otherwise.

Alternatively, a very simple solution is to use the % modulo operator to constrain the index like this:

array[input % array.length] = value; // will never go out of bounds
Enter fullscreen mode Exit fullscreen mode

With the method above, any out-of-bounds input will be "wrapped around" in the range of 0:N.

For example, if the length of the array is 20 and you supply 10: 10 % 20 = 10, so nothing really changes when the supplied input is within bounds.

But if you supply an out-of-bounds index, say 25: 25 % 20 = 5, and it remains within bounds.

It's worthy to note that this approach also guards against negative inputs, because -25 % 20 equals 15.

Edit: Fixed my numbers. Still waiting on my coffee, sorry.