Ich habe vor kurzem implementiert für Spaß Conways Spiel des Lebens in Javascript (tatsächlich aber Coffee gleiche Sache). Da Javascript als funktionale Sprache verwendet werden kann, habe ich versucht, an diesem Ende des Spektrums zu bleiben. Ich war mit meinen Ergebnissen nicht zufrieden. Ich bin ein ziemlich guter OO-Programmierer, und meine Lösung steckt voller Gleichaltriger. So lange Frage kurz: Was ist der (Pseudocode-) Funktionsstil dafür?
Hier ist Pseudocode für meinen Versuch:
class Node
update: (board) ->
get number_of_alive_neighbors from board
get this_is_alive from board
if this_is_alive and number_of_alive_neighbors < 2 then die
if this_is_alive and number_of_alive_neighbors > 3 then die
if not this_is_alive and number_of_alive_neighbors == 3 then alive
class NodeLocations
at: (x, y) -> return node value at x,y
of: (node) -> return x,y of node
class Board
getNeighbors: (node) ->
use node_locations to check 8 neighbors
around node and return count
nodes = for 1..100 new Node
state = new NodeState(nodes)
locations = new NodeLocations(nodes)
board = new Board(locations, state)
executeRound:
state = clone state
accumulated_changes = for n in nodes n.update(board)
apply accumulated_changes to state
board = new Board(locations, state)