이 질문 은 코드 검토에서 유행했으며 코드 골프 도전에 적합하다고 생각했습니다.
부울로 표시되는 x 개의 주택이 비어 있지 않은 목록이 제공됩니다. 매일 주택은 인접한 주택과 경쟁합니다. 1은 "활성"주택을 나타내고 0은 "비활성"주택을 나타냅니다. 주어진 집의 양쪽에있는 이웃이 모두 활동 중이거나 둘 다 비활성이면 다음 날에 그 집이 비활성화됩니다. 그렇지 않으면 활성화됩니다.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
예를 들어, 이웃 [0, 1, 0] 그룹이있는 경우 [1]의 집은 왼쪽과 오른쪽의 집이 모두 비활성화되므로 0이됩니다. 양쪽 끝의 셀도 반대쪽을 확인하므로 인덱스 0의 이웃은 인덱스 length-1
와 인덱스 n1에 있으며 그 반대도 마찬가지입니다. 셀을 업데이트 한 후에도 각 셀의 상태 정보가 동시에 업데이트되도록 다른 셀을 업데이트 할 때 이전 상태를 고려해야합니다.
이 함수는 상태의 배열과 여러 단계를 취하며 주어진 단계 수 후에 주택의 상태를 출력해야합니다.
input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1
output should be [0, 1, 0, 0, 1, 0, 1, 1]
input: states = [1, 1, 1, 0, 1, 1, 1, 1], steps = 2
intermediate state= [0, 0, 1, 0, 1, 0, 0, 0]
output should be [0, 1, 0, 0, 0, 1, 0, 0]
input: states = [1], steps=1
output: states= [0]
그러나 원하는대로 목록과 단계를 수행하고 기본 I / O 를 통해 결과 목록을 출력하십시오 . 표준 허점은 금지되어 있습니다. 이것은 codegolf이며 바이트 단위의 최단 답변입니다!
[0, 1, 0, 0, 1, 0, 1, 1]
?