The challenge
Return a new array consisting of elements which are multiple of their own index in input array (length > 1).
Examples:
[22, -6, 32, 82, 9, 25] => [-6, 32, 25]
[68, -1, 1, -7, 10, 10] => [-1, 10]
[-56,-85,72,-26,-14,76,-27,72,35,-21,-67,87,0,21,59,27,-92,68] => [-85, 72, 0, 68]
The solution in Python code
Option 1:
def multiple_of_index(l):
return [l[i] for i in range(1, len(l)) if l[i] % i == 0]
Option 2:
def multiple_of_index(arr):
i = 1
rst = []
while i < len(arr):
if arr[i] % i == 0:
print(i)
rst.append(arr[i])
i += 1
return rst
Option 3:
def multiple_of_index(arr):
return [n for i,n in enumerate(arr[1:], 1) if n%i==0]
Test cases to validate our solution
import test
from solution import multiple_of_index
@test.describe("Fixed Tests")
def fixed_tests():
@test.it('Basic Test Cases')
def basic_test_cases():
test.assert_equals(multiple_of_index([22, -6, 32, 82, 9, 25]), [-6, 32, 25])
test.assert_equals(multiple_of_index([68, -1, 1, -7, 10, 10]), [-1, 10])
test.assert_equals(multiple_of_index([11, -11]), [-11])
test.assert_equals(multiple_of_index([-56,-85,72,-26,-14,76,-27,72,35,-21,-67,87,0,21,59,27,-92,68]), [-85, 72, 0, 68])
test.assert_equals(multiple_of_index([28,38,-44,-99,-13,-54,77,-51]), [38, -44, -99])
test.assert_equals(multiple_of_index([-1,-49,-1,67,8,-60,39,35]), [-49, 8, -60, 35])