Цель алгоритма:
ссылка на фотографии, которые я сделал во время интервью амазонки:
[https://boards.wetransfer.com/board/shl7w5z1e62os7nwv20190618224258/latest][pictures]
Восемь домов, представленных клетками, расположены по прямой линии. Каждый день каждая клетка конкурирует со своими соседними клетками (соседями). Целочисленное значение 1 представляет активную ячейку, а значение 0 представляет неактивную ячейку. Если соседи по обе стороны ячейки активны или неактивны, ячейка становится неактивной на следующий день, в противном случае ячейка становится активной. Две ячейки на каждом конце имеют одну соседнюю ячейку, поэтому предположим, что незанятое пространство на противоположной стороне является неактивной ячейкой. Даже после обновления состояния ячейки учитывайте его предыдущее состояние при обновлении состояния других ячеек. Информация о состоянии всех ячеек должна обновляться одновременно.
Создать алгоритм для вывода состояния ячеек по истечении заданного количества дней.
Введите:
Входные данные для функции / метода состоят из двух аргументов:
states
, список целых чисел, представляющих текущее состояние ячеек,
days
, целое число, представляющее количество дней.
Выход:
Возвращает список целых чисел, представляющих состояние ячеек по истечении заданного количества дней
Примечание:
Элементы списка состояний содержат только 0 и 1
TestCase 1:
Ввод: [1,0,0,0,0,1,0,0] , 1
Ожидаемое возвращаемое значение: 0 1 0 0 1 0 1 0
TestCase 2:
Ввод: [1,1,1,0,1,1,1,1] , 2
Ожидаемое возвращаемое значение: 0 0 0 0 0 1 1 0
Что я пробовал:
def cellCompete(states, days):
# WRITE YOUR CODE HERE
il = 0;
tl = len(states);
intialvalue = states
results = []
states = []
for i in range(days):
#first range
if(intialvalue[il] != intialvalue[il+1]):
print('value of index 0 is : ',reverse(intialvalue[il]))
results.append(reverse(intialvalue[il]))
else:
print('value of index 0 is :', intialvalue[il])
results.append(intialvalue[il])
print("-------------------")
#range middle
while il < tl-2:
if(intialvalue[il] != intialvalue[il+1] or intialvalue[il+1] != intialvalue[il+2]):
print('value of index',il+1,'is : ',reverse(intialvalue[il+1]))
results.append(reverse(intialvalue[il+1]))
else:
print('value of index', il+1,'is :', intialvalue[il+1])
results.append(intialvalue[il+1])
print("-------------------")
il += 1
#range last
if(intialvalue[tl-2] != intialvalue[tl-1]):
print('value of index',tl-1,'is : ',reverse(intialvalue[tl-1]))
results.append(reverse(intialvalue[tl-1]))
else:
print('value of index',tl-1,'is :', intialvalue[tl-1])
results.append(intialvalue[tl-1])
print("-------------------")
print('Input: ',intialvalue)
print('Results: ',results)
initialvalue = results
def reverse(val):
if(val == 0):
return 1
elif(val == 1):
return 0
print("-------------------------Test case 1--------------------")
cellCompete([1,0,0,0,0,1,0,0],1)
print("-------------------------Test case 2--------------------")
cellCompete([1,1,1,0,1,1,1,1],2)
Я относительно новичок в python и не смог завершить этот алгоритм для второго случая на этом питоне