Reputation: 4853
I have an array of integers from [0 .. 255].
I'd like to modify the array so that there are still 256 numbers, but the numbers start from 100 and move up to 255. This means that many integers will be repeating (i.e. [100,100,101,101,102 ...])
Any ideas as to how I can do this? Sorry, I know this is probably a simple problem, but it's really boggling my mind right now...
Thanks!
Note: a solution provided in python, pseudo-code, or javascript would be nice. =)
Upvotes: 0
Views: 2346
Reputation: 28608
Here's one way:
n = 256
nf = float(n - 1)
xs = range(n)
(min, max) = (100, 255)
[min + int(i / nf * (max - min)) for i in xs]
gives:
[100, 100, 101, 101, 102, 103, 103, 104, 104, 105, 106, 106, 107, 107, 108, 109, 109, 110, 110, 111, 112, 112, 113, 113, 114, 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, 121, 121, 122, 123, 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 132, 133, 134, 134, 135, 135, 136, 137, 137, 138, 138, 139, 140, 140, 141, 141, 142, 143, 143, 144, 144, 145, 146, 146, 147, 148, 148, 149, 149, 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, 156, 157, 157, 158, 158, 159, 160, 160, 161, 162, 162, 163, 163, 164, 165, 165, 166, 166, 167, 168, 168, 169, 169, 170, 171, 171, 172, 172, 173, 174, 174, 175, 175, 176, 177, 177, 178, 179, 179, 180, 180, 181, 182, 182, 183, 183, 184, 185, 185, 186, 186, 187, 188, 188, 189, 189, 190, 191, 191, 192, 193, 193, 194, 194, 195, 196, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, 203, 203, 204, 205, 205, 206, 206, 207, 208, 208, 209, 210, 210, 211, 211, 212, 213, 213, 214, 214, 215, 216, 216, 217, 217, 218, 219, 219, 220, 220, 221, 222, 222, 223, 224, 224, 225, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 231, 232, 233, 233, 234, 234, 235, 236, 236, 237, 237, 238, 239, 239, 240, 241, 241, 242, 242, 243, 244, 244, 245, 245, 246, 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, 253, 253, 254, 255]
Upvotes: 0
Reputation: 375634
If you know exactly the numbers you want, why do you need to modify an existing array, why not just make the array you want? Actual Python:
nums = [int(i*156.0/256+100) for i in range(256)]
Upvotes: 3
Reputation: 19037
Python:
RANGE_SIZE = 255-100
for index in range(256):
array[index] = 100 + int( RANGE_SIZE * float(index) / 255.0 )
Sanity check:
This is linear interpolation. The multiply and divide essentially convert the index range into a linear ramp from 0.0 to 1.0. This is applied as a scale to the desired range width of values, and added to the minimum value.
Upvotes: 1