curriculum/challenges/english/blocks/daily-coding-challenges-python/68c1a929005bf54d342aa8d5.md
In day four of Space Week, you are given a matrix of numbers (an array of arrays), representing potential landing spots for your rover. Find the safest landing spot based on the following rules:
0-9, inclusive.0 represents a potential landing spot.0 is too dangerous to land. The higher the number, the more dangerous.0 cell whose surrounding cells (up to 4 neighbors, ignore diagonals) have the lowest total danger.For instance, given:
[
[1, 0],
[2, 0]
]
Return [0, 1], the indices for the 0 in the first array.
find_landing_spot([[1, 0], [2, 0]]) should return [0, 1].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(find_landing_spot([[1, 0], [2, 0]]), [0, 1])`)
}})
find_landing_spot([[9, 0, 3], [7, 0, 4], [8, 0, 5]]) should return [1, 1].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(find_landing_spot([[9, 0, 3], [7, 0, 4], [8, 0, 5]]), [1, 1])`)
}})
find_landing_spot([[1, 2, 1], [0, 0, 2], [3, 0, 0]]) should return [2, 2].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(find_landing_spot([[1, 2, 1], [0, 0, 2], [3, 0, 0]]), [2, 2])`)
}})
find_landing_spot([[9, 6, 0, 8], [7, 1, 1, 0], [3, 0, 3, 9], [8, 6, 0, 9]]) should return [2, 1].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(find_landing_spot([[9, 6, 0, 8], [7, 1, 1, 0], [3, 0, 3, 9], [8, 6, 0, 9]]), [2, 1])`)
}})
def find_landing_spot(matrix):
return matrix
def find_landing_spot(matrix):
best_spot = None
lowest_neighbor_sum = float('inf')
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] == 0:
current_neighbor_sum = 0
if i > 0:
current_neighbor_sum += matrix[i - 1][j]
if j < len(matrix[i]) - 1:
current_neighbor_sum += matrix[i][j + 1]
if i < len(matrix) - 1:
current_neighbor_sum += matrix[i + 1][j]
if j > 0:
current_neighbor_sum += matrix[i][j - 1]
if current_neighbor_sum < lowest_neighbor_sum:
lowest_neighbor_sum = current_neighbor_sum
best_spot = [i, j]
return best_spot