Esta pregunta solo pasó a la revisión de código y pensé que te gustaría adaptarla como un desafío de codegolf:
Se le da una lista no vacía de x casas representadas como booleanos. Cada día, las casas compiten con las adyacentes. 1 representa una casa "activa" y 0 representa una casa "inactiva". Si los vecinos de ambos lados de una casa determinada están activos o ambos inactivos, esa casa se vuelve inactiva al día siguiente. De lo contrario, se vuelve activo.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Por ejemplo, si tuviéramos un grupo de vecinos [0, 1, 0] entonces la casa en [1] se convertiría en 0 ya que tanto la casa a su izquierda como a la derecha están inactivas. Las celdas en ambos extremos verifican también el lado opuesto, por lo que los vecinos en el índice 0 están en index length-1
e indexn1 y viceversa. Incluso después de actualizar la celda, debe tener en cuenta su estado anterior al actualizar las demás para que la información de estado de cada celda se actualice simultáneamente.
La función toma la matriz de estados y una cantidad de pasos y debería generar el estado de las casas después del número de pasos dado.
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]
Tome la lista y los pasos como desee y envíe la lista resultante a través de E / S predeterminada . Las lagunas estándar están prohibidas. ¡Esto es codegolf, la respuesta más corta en bytes gana!
[0, 1, 0, 0, 1, 0, 1, 1]
?Respuestas:
05AB1E ,
14131096 bytesBasado en la solución Japt de Shaggy
Pruébalo en línea!
Solución innecesariamente inteligente de 9 bytes:
Pruébalo en línea!
fuente
Python 2 , 72 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 31 bytes
Pruébalo en línea!
CellularAutomaton
asume que la lista de entrada es cíclica.fuente
JavaScript (ES6), 57 bytes
Toma entrada como
(steps)(array)
.Pruébalo en línea!
fuente
Japt
-mh
,11109 bytesE / S de estados como matrices 2D singleton.
Intentalo
fuente
Retina , 51 bytes
Pruébalo en línea! Toma el número de pasos en la primera línea y una serie de
0
s y1
s en la segunda línea. Explicación:Eliminar el número de pasos de la entrada.
Repite ese número veces.
Copie los dígitos finales a los otros extremos para simular el ajuste.
Realice la operación XOR.
fuente
APL (Dyalog Extended) , SBCS de 12 bytes
Programa completo Solicita stdin para la matriz de estados y luego para el número de pasos. Imprime en stdout.
Pruébalo en línea!
⎕
obtener entrada evaluada desde la consola (matriz de estados)⊢
sobre eso, aplique ...1(
...)⍣⎕
la siguiente función tácita, ingrese el número de veces, cada vez con el1
argumento izquierdo:⌽⍢⌽
gire el argumento derecho 1 paso hacia la izquierda mientras está invertido (es decir, gire un paso hacia la derecha)⌽≠
XOR con el argumento girado 1 paso a la izquierdafuente
Python 2 , 71 bytes
Pruébalo en línea!
fuente
Jalea , 7 bytes
Pruébalo en línea!
Programa completo Una salida singleton se representa como en
x
lugar de[x]
.fuente
Pyth , 24 bytes
Pruébalo en línea!
fuente
Ruby , 59 bytes
Pruébalo en línea!
fuente