From 21aab46b968bf85fbf906f82f2353c1195327a7e Mon Sep 17 00:00:00 2001 From: Cameron Blankenbuehler Date: Mon, 26 Sep 2022 11:40:34 -0400 Subject: [PATCH] Refactor board_randomizer - Make file read separate and return "dice" or a list of strings from dice handling functions for use in downstream programs --- src/boggler/board_randomizer.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/boggler/board_randomizer.py b/src/boggler/board_randomizer.py index 0377646..9c5ff28 100755 --- a/src/boggler/board_randomizer.py +++ b/src/boggler/board_randomizer.py @@ -4,9 +4,9 @@ from random import randint, shuffle from math import sqrt from os import path -def read_dice_file(path): +def read_dice_file(dice_path: str): '''Return list of die strings from file ignoring all comments (#)''' - with open(path, 'r+', encoding="utf-8") as file: + with open(path.abspath(dice_path), 'r+', encoding="utf-8") as file: return [line.rstrip().split(',') for line in file.readlines() if line[0] != "#"] def roll_die(die: str): @@ -17,20 +17,19 @@ def roll_dice(dice: list[str]): '''Return a random roll for each die''' return [ roll_die(die) for die in dice ] -def get_random_board(dice_path): - dice_strings = read_dice_file(dice_path) - shuffle(dice_strings) - rolls = roll_dice(dice_strings) +def get_random_board(dice: list[str]): + shuffle(dice) + rolls = roll_dice(dice) # Format dice rolls for boards file board_size = int(sqrt(len(rolls))) board = [] - for i in range(0, len(dice_strings), board_size): + for i in range(0, len(dice), board_size): board.append(rolls[i:i+board_size]) return board -def get_random_board_csv(dice_path): - board = get_random_board(dice_path) +def get_random_board_csv(dice: list[str]): + board = get_random_board(dice) board = [",".join(row) for row in board] return board @@ -39,7 +38,8 @@ if __name__ == '__main__': print('Usage: python3 board_randomizer.py ') else: try: - board = get_random_board_csv(path.abspath(argv[1])) + dice = read_dice_file(path.abspath(argv[1])) + board = get_random_board_csv(dice) for row in board: print(row) except Exception as e: