55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/usr/bin/env python3 | ||
|  | 
 | ||
|  | import os | ||
|  | import random | ||
|  | import sys | ||
|  | 
 | ||
|  | 
 | ||
|  | questions_filepath = f"{os.environ['SCRIPTS']}/writing/character-questions.md" | ||
|  | 
 | ||
|  | 
 | ||
|  | def print_usage(): | ||
|  |     print(f"{sys.argv[0]} COUNT\n\nwhere COUNT is the number of questions to retrieve") | ||
|  | 
 | ||
|  | 
 | ||
|  | def get_question_count() -> int: | ||
|  |     if len(sys.argv) < 2: | ||
|  |         print_usage() | ||
|  |         exit(1) | ||
|  | 
 | ||
|  |     try: | ||
|  |         return int(sys.argv[1]) | ||
|  |     except ValueError: | ||
|  |         print_usage() | ||
|  |         exit(1) | ||
|  | 
 | ||
|  | 
 | ||
|  | def get_question_options(): | ||
|  |     if not os.path.isfile(questions_filepath): | ||
|  |         print(f"questions file not located at expected location: {questions_filepath}") | ||
|  |         exit(1) | ||
|  | 
 | ||
|  |     with open(questions_filepath, "r") as f: | ||
|  |         return [l.strip() for l in f.readlines()] | ||
|  | 
 | ||
|  | 
 | ||
|  | def get_random_questions(): | ||
|  |     count = get_question_count() | ||
|  |     candidates = get_question_options() | ||
|  | 
 | ||
|  |     indices = [] | ||
|  |     while len(indices) < count: | ||
|  |         r = random.randint(0, len(candidates) - 1) | ||
|  | 
 | ||
|  |         if r in indices and not len(candidates) <= count: | ||
|  |             continue | ||
|  | 
 | ||
|  |         indices.append(r) | ||
|  | 
 | ||
|  |     return [candidates[idx] for idx in indices] | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     [print(q) for q in get_random_questions()] | ||
|  | 
 |