Cette question vient de faire l'objet d'une révision de code et je me suis dit que vous pourriez l'aimer comme un défi de codegolf:
Vous obtenez une liste non vide de x maisons représentées comme des booléens. Chaque jour, les maisons rivalisent avec les maisons adjacentes. 1 représente une maison "active" et 0 représente une maison "inactive". Si les voisins des deux côtés d'une maison donnée sont tous deux actifs ou inactifs, cette maison devient inactive le lendemain. Sinon, il devient actif.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Par exemple, si nous avions un groupe de voisins [0, 1, 0], la maison à [1] deviendrait 0 car la maison à gauche et à droite sont toutes les deux inactives. Les cellules aux deux extrémités vérifient également le côté opposé, de sorte que les voisins à l'index 0 sont à l'index length-1
et à l'index n1 et vice versa. Même après la mise à jour de la cellule, vous devez tenir compte de son état antérieur lors de la mise à jour des autres afin que les informations d'état de chaque cellule soient mises à jour simultanément.
La fonction prend le tableau des états et un certain nombre d'étapes et doit afficher l'état des maisons après le nombre d'étapes donné.
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]
Suivez la liste et les étapes comme vous le souhaitez et sortez la liste résultante via les E / S par défaut . Les failles standard sont interdites. Ceci est codegolf, la réponse la plus courte en octets gagne!
[0, 1, 0, 0, 1, 0, 1, 1]
?Réponses:
05AB1E ,
14131096 octetsBasé sur la solution Japt de Shaggy
Essayez-le en ligne!
Solution inutilement intelligente de 9 octets:
Essayez-le en ligne!
la source
Python 2 , 72 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 31 octets
Essayez-le en ligne!
CellularAutomaton
suppose que la liste d'entrée est cyclique.la source
JavaScript (ES6), 57 octets
Prend l'entrée comme
(steps)(array)
.Essayez-le en ligne!
la source
Japt
-mh
,11109 octetsE / S d'états en tant que tableaux 2D singleton.
Essayez-le
la source
Rétine , 51 octets
Essayez-le en ligne! Prend le nombre d'étapes sur la première ligne et une chaîne de
0
s et1
s sur la deuxième ligne. Explication:Supprimez le nombre d'étapes de l'entrée.
Répétez ce nombre de fois.
Copiez les chiffres de fin aux autres extrémités pour simuler l'habillage.
Effectuez l'opération XOR.
la source
APL (Dyalog Extended) , 12 octets SBCS
Programme complet. Demande à stdin le tableau des états, puis le nombre d'étapes. Imprime à stdout.
Essayez-le en ligne!
⎕
obtenir une entrée évaluée à partir de la console (tableau d'états)⊢
là-dessus, appliquez…1(
…)⍣⎕
La fonction tacite suivante, entrée le nombre de fois, à chaque fois avec1
comme argument de gauche:⌽⍢⌽
faire pivoter l'argument de droite d'un pas vers la gauche tout en étant inversé (c'est-à-dire faire pivoter d'un pas vers la droite)⌽≠
XOR avec l'argument tourné d'un pas vers la gauchela source
Python 2 , 71 octets
Essayez-le en ligne!
la source
Gelée , 7 octets
Essayez-le en ligne!
Programme complet. Une sortie singleton est représentée comme
x
au lieu de[x]
.la source
Pyth , 24 octets
Essayez-le en ligne!
la source
Rubis , 59 octets
Essayez-le en ligne!
la source