Tidy up structure of briefcase
I had a spare fifteen minutes and decided that I should tidy up my monorepo. The work of tidying up is not finished; this is a small step in the right direction. TL;DR - Created a tools directory - Created a scratch directory (see README.md for more information) - Added README.md to third_party - Renamed delete_dotfile_symlinks -> symlinkManager - Packaged symlinkManager as an executable symlink-mgr using buildGo
This commit is contained in:
		
							parent
							
								
									5ec5a6da8c
								
							
						
					
					
						commit
						fabf1c9334
					
				
					 89 changed files with 53 additions and 41 deletions
				
			
		|  | @ -1,78 +0,0 @@ | |||
| from itertools import product | ||||
| from random import choice | ||||
| from time import sleep | ||||
| from os import system | ||||
| from math import floor | ||||
| from colorama import Back, Fore, Style | ||||
| 
 | ||||
| ################################################################################ | ||||
| # Simulation of Conway's Game of Life. The goal here was to write this with a | ||||
| # small amount of code as a proof-of-concept that could be run in the terminal. | ||||
| # | ||||
| # If you'd like to tinker with the rules, see the conditionals defined in the | ||||
| # `advance/1` function. For other parameters, like the board size and refresh | ||||
| # rate, refer to the while-loop defined at the bottom of this file. | ||||
| ################################################################################ | ||||
| 
 | ||||
| 
 | ||||
| def init_board(n, init_alive_percentage): | ||||
|     """Initialize a board of size `n` by `n`. Supply a percentage, | ||||
|     `init_alive_percentage`, representing the number of cells in the board that | ||||
|     should be alive from the start.""" | ||||
|     alive_count = floor(n * init_alive_percentage) | ||||
|     distribution = [True] * alive_count + [False] * (n - alive_count) | ||||
|     return [[choice(distribution) for _ in range(n)] for _ in range(n)] | ||||
| 
 | ||||
| 
 | ||||
| def neighbors(coord, board): | ||||
|     """Return the neighbors for a given `coord` on a `board`.""" | ||||
|     n = len(board) | ||||
|     row, col = coord | ||||
|     return [ | ||||
|         board[(row + row_d) % n][(col + col_d) % n] | ||||
|         for row_d, col_d in product([-1, 0, 1], [-1, 0, 1]) | ||||
|         if (row_d, col_d) != (0, 0) | ||||
|     ] | ||||
| 
 | ||||
| 
 | ||||
| def advance(board): | ||||
|     """Advance the state of the `board` from T[n] to T[n+1].""" | ||||
|     n = len(board) | ||||
|     new_board = [[False for _ in range(n)] for _ in range(n)] | ||||
|     for row in range(n): | ||||
|         for col in range(n): | ||||
|             alive_count = len([x for x in neighbors((row, col), board) if x]) | ||||
|             # Loneliness | ||||
|             if alive_count == 0: | ||||
|                 new_board[row][col] = False | ||||
|             # Status Quo | ||||
|             elif alive_count == 1: | ||||
|                 new_board[row][col] = board[row][col] | ||||
|             # Cooperation | ||||
|             elif alive_count == 2: | ||||
|                 new_board[row][col] = True | ||||
|             # Resource starvation | ||||
|             elif alive_count >= 3: | ||||
|                 new_board[row][col] = False | ||||
|     return new_board | ||||
| 
 | ||||
| 
 | ||||
| def print_board(board): | ||||
|     """Print the game `board` in a human-readable way.""" | ||||
|     result = '' | ||||
|     for row in board: | ||||
|         for col in row: | ||||
|             if col: | ||||
|                 result += Back.GREEN + '1 ' + Style.RESET_ALL | ||||
|             else: | ||||
|                 result += Back.RED + '0 ' + Style.RESET_ALL | ||||
|         result += '\n' | ||||
|     print(result) | ||||
| 
 | ||||
| 
 | ||||
| board = init_board(100, 0.50) | ||||
| while True: | ||||
|     system('clear') | ||||
|     print_board(board) | ||||
|     sleep(0.15) | ||||
|     board = advance(board) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue