From 8dcefdded0522c8659c2ffbb4bd8966605747660 Mon Sep 17 00:00:00 2001 From: Tony Bark Date: Sun, 27 Apr 2025 06:10:00 -0400 Subject: [PATCH] Allocate from a budget of 25 - Newly generated algorithm thanks to GPT - Somehow I thought the budget was 50 --- SimPersonalityGenerator/Program.cs | 121 +++++------------- .../SimsPersonalityGenerator.csproj | 2 +- 2 files changed, 34 insertions(+), 89 deletions(-) diff --git a/SimPersonalityGenerator/Program.cs b/SimPersonalityGenerator/Program.cs index 9ab6960..fd494bd 100644 --- a/SimPersonalityGenerator/Program.cs +++ b/SimPersonalityGenerator/Program.cs @@ -1,101 +1,46 @@ -using PersonalityGenerator; +var rng = new Random(); -var isFinishedSession = false; +int totalPoints = 25; +int[] points = new int[5]; // To store the personality points for Outgoing, Nice, Playful, Neat, and Active +string[] personalities = { "Outgoing", "Nice", "Playful", "Neat", "Active" }; -void GenerateTraits() +// Function to randomly allocate points +void AllocatePoints() { - // Prompt the user to enter traits they want to prioritize. - Console.WriteLine("You can prioritize one or more traits to be above 8 by entering them."); - Console.Write("Enter traits separated by commas (e.g., Outgoing, Nice), or press Enter to generate a random personality: "); - - // Read the user input and trim any leading or trailing whitespace. - var prioritizedTraitsInput = Console.ReadLine()?.Trim(); - - // Initialize a dictionary with predefined traits and their initial values set to 0. - var traits = new Dictionary - { - { "Outgoing", 0 }, - { "Nice", 0 }, - { "Playful", 0 }, - { "Neat", 0 }, - { "Active", 0 } - }; + int remainingPoints = totalPoints; - // Process the prioritized traits input: - // 1. Split the input string by commas. - // 2. Trim whitespace from each resulting trait. - // 3. Filter out any empty or invalid traits (traits that are not in the predefined list). - var prioritizedTraits = new HashSet(prioritizedTraitsInput.Split(',') - .Select(t => t.Trim()).Where(t => !string.IsNullOrEmpty(t) && traits.ContainsKey(t))); - - // Check if there are any prioritized traits provided by the user. - if (prioritizedTraits.Count > 0) + // First, allocate points to each personality. + for (int i = 0; i < points.Length; i++) { - // Assign values to the prioritized traits. - TraitGenerator.AssignPrioritizedTraits(traits, prioritizedTraits); - } - else - { - // If no prioritized traits are provided, assign random values to all traits. - TraitGenerator.AssignRandomTraits(traits); + points[i] = rng.Next(0, 11); // Assign 0-10 points to each personality + remainingPoints -= points[i]; } - // Display the generated personality traits. - TraitGenerator.DisplayPersonality(traits); - - // Mark the session as finished. - isFinishedSession = true; - - // Re-enter the session manager to allow for another session or to exit. - SessionManager(); -} - -// Retrieves user input from the console with a given prompt. -string? GetUserInput(string prompt) -{ - Console.WriteLine(prompt); - var input = Console.ReadLine(); - - return input; -} - -// Manages the personality generator session. It checks if a previous session is finished -// and prompts the user to either generate a new personality or exit the application. -void SessionManager() -{ - // Greet the user at the start of a new session only if the previous session wasn't finished. - if (!isFinishedSession) - Console.WriteLine("Welcome to the Sim Personality Generator!"); - - // Define a message to prompt the user about generating a personality. - // The message differs slightly if a previous session was already finished. - var message = "Would you like to generate a random personality? [y/n]"; - if (isFinishedSession) - message = "Would you like to generate a new personality? [y/n]"; - - // Retrieve the user's input through a prompt specified by 'message'. - var input = GetUserInput(message); - - // Convert the input to lowercase to handle user input in a case-insensitive manner. - switch (input?.ToLower()) + // Adjust the remaining points + for (int i = 0; i < points.Length; i++) { - case "y": - // Reset the session status if the previous session was finished. - if (isFinishedSession) - isFinishedSession = false; + if (remainingPoints == 0) break; - // Clear the console to provide a clean interface for generating a new personality. - Console.Clear(); + int adjustment = Math.Min(rng.Next(0, 3), remainingPoints); // Small adjustment within range + points[i] += adjustment; + remainingPoints -= adjustment; - // Generate a new set of personality traits - GenerateTraits(); - break; - - default: - // If the user enters anything other than 'y', terminate the application gracefully. - Environment.Exit(Environment.ExitCode); - break; + if (points[i] > 10) // Ensure no personality gets more than 10 points + { + int excess = points[i] - 10; + points[i] = 10; + remainingPoints += excess; // Return excess points to the pool + } } + + // Print the final personality points + for (int i = 0; i < points.Length; i++) + { + Console.WriteLine($"{personalities[i]}: {points[i]} points"); + } + + Console.WriteLine($"Total remaining points in the pool: {remainingPoints}"); } -SessionManager(); \ No newline at end of file +// Generate the points and print the result +AllocatePoints(); diff --git a/SimPersonalityGenerator/SimsPersonalityGenerator.csproj b/SimPersonalityGenerator/SimsPersonalityGenerator.csproj index 37541e7..4e4d80e 100644 --- a/SimPersonalityGenerator/SimsPersonalityGenerator.csproj +++ b/SimPersonalityGenerator/SimsPersonalityGenerator.csproj @@ -3,7 +3,7 @@ Exe 0.1.100 - net9.0 + net8.0 enable enable