Gần đây tôi đã triển khai cho Trò chơi cuộc sống vui nhộn của Conway trong Javascript (thực ra là cà phê nhưng điều tương tự). Vì javascript có thể được sử dụng như một ngôn ngữ chức năng, tôi đã cố gắng duy trì đến cuối phổ. Tôi không hài lòng với kết quả của mình. Tôi là một lập trình viên OO khá giỏi và giải pháp của tôi không giống với người cũ. Vì vậy, câu hỏi dài ngắn: phong cách chức năng (pseudocode) để làm điều đó là gì?
Đây là Pseudocode cho nỗ lực của tôi:
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)