=={{header|Nim}}==
<lang Nim>import random
import math
type
TBoolArrayBoolArray = array[0..30, bool] # an array that is indexed with 0..10
TSymbolsSymbols = tuple[on: char ,= off:array[bool, char]
proc neighbours(map: BoolArray, i: int): int =
if i > 0: inc(result, int(map[i - 1]))
if i + 1 < len(map): inc(result, int(map[i + 1]))
proc print_mapprint(map: TBoolArray BoolArray, symbols: TSymbols Symbols) = ▼
for i in map: write(stdout, symbols[ 1i]) ▼
proc randomMap: BoolArray =
for i in mitems(result): i = rand([true, false])
const
num_turns = 20
symbols symbols:TSymbols = (['#_', '_#')]
T = true
F = false
[F, T, T, T, F, T, T, F, T, F, T, F, T, F, T,
F, F, T, F, F, F, F, F, F, F, F, F, F, F, F]
# map = random_maprandomMap() # uncomment for random start ▼
print_mapprint(map, symbols) ▼
proc `==` (x:TBoolArray,y:TBoolArray): bool =
if len(x) != len(y):
if x[i] != y[i]:
return False
return True
for i_ in 0 .. < num_turns: ▼
proc count_neighbours(map:TBoolArray , tile:int):int =
var resultmap2 = 0map
if tile != len(map)-1 and map[tile+1]:
result += 1
if tile != 0 and map[tile-1]:
result += 1
▲ for i , v in 0..(lenpairs( x)-1map):
▲proc print_map(map:TBoolArray, symbols:TSymbols) =
forif i in mapv:
if neighbours(map, i) in [0, 2]:
map2[i] = write(stdout,symbols[0])false
▲ write(stdout,symbols[1])
proc random_map(): TBoolArray =
if count_neighboursneighbours(map, ji) == 2: ▼
var map = [False,False,False,False,False,False,False,False,False,False,False,
▲ returnmap2[i] False= true
False,False,False,False,False,False,False,False,False,False,False,
False,False,False,False,False,False,False,False,False]
for i in 0..(len(map)-1):
map[i] = bool(random(2))
return map
print_mapprint( mapmap2, symbols) ▼
proc fixed_map(): TBoolArray =
var map = [False,True,True,True,False,True,True,False,True,False,True,
False,True,False,True,False,False,True,False,False,False,False,
False,False,False,False,False,False,False,False,False]
return map
#make the map
map = map2</lang>
var map:TBoolArray
▲#map = random_map() # uncomment for random start
map = fixed_map()
var new_map = map
for j in 0..(len(map)-1):
if map[j]:
if count_neighbours(map, j) == 2 or
count_neighbours(map, j) == 0:
new_map[j] = False
else:
▲ if count_neighbours(map, j) == 2:
new_map[j] = True
if new_map == map:
print_map(map,symbols)
</lang>
{{out}}
<pre>_###_##_#_#_#_#__#_________________________
_#_#####_#_#_#_________________________________
__##___##_#_#___________________________________
__##___###_#_____________________________________
__##___#_##_______________________________________
__##____###_______________________________________
__##____#_#_______________________________________
__##_____#_________________________________________
__##__________________________
__##___________________________
__##_____________________________________________________</pre>
'''Using a string character counting method''':
|