|
| 1 | +import java.util.*; |
| 2 | + |
| 3 | +public class MohamedElderkaoui { |
| 4 | + |
| 5 | + static class House { |
| 6 | + String name; |
| 7 | + int score; |
| 8 | + |
| 9 | + House(String name) { |
| 10 | + this.name = name; |
| 11 | + this.score = 0; |
| 12 | + } |
| 13 | + } |
| 14 | + |
| 15 | + public static void main(String[] args) { |
| 16 | + Scanner scanner = new Scanner(System.in); |
| 17 | + Random random = new Random(); |
| 18 | + |
| 19 | + // Initial setup of houses |
| 20 | + List<House> houses = Arrays.asList( |
| 21 | + new House("Frontend"), |
| 22 | + new House("Backend"), |
| 23 | + new House("Mobile"), |
| 24 | + new House("Data") |
| 25 | + ); |
| 26 | + |
| 27 | + // Collect student information |
| 28 | + System.out.print("¡Bienvenido! ¿Cuál es tu nombre? "); |
| 29 | + String name = scanner.nextLine(); |
| 30 | + System.out.print("¿Qué edad tienes? "); |
| 31 | + int age = scanner.nextInt(); |
| 32 | + scanner.nextLine(); // Consume the newline |
| 33 | + System.out.print("¿Qué experiencia tienes en programación? (novato, intermedio, avanzado): "); |
| 34 | + String experience = scanner.nextLine().toLowerCase(); |
| 35 | + |
| 36 | + // Personalized question sets based on experience |
| 37 | + String[][] questions = generateQuestions(experience); |
| 38 | + |
| 39 | + // Ask the questions with weights |
| 40 | + for (int i = 0; i < questions.length; i++) { |
| 41 | + System.out.println("\n" + questions[i][0]); |
| 42 | + for (int j = 1; j <= 4; j++) { |
| 43 | + System.out.println(j + ") " + questions[i][j]); |
| 44 | + } |
| 45 | + System.out.print("Elige una opción (1-4): "); |
| 46 | + int answer = scanner.nextInt(); |
| 47 | + |
| 48 | + // Add weighted score to corresponding house |
| 49 | + addWeightedScore(houses, answer, i + 1); |
| 50 | + } |
| 51 | + |
| 52 | + // Determine the house with the highest score |
| 53 | + House selectedHouse = determineHouse(houses, random, age, experience); |
| 54 | + |
| 55 | + // Display final result with personalized feedback |
| 56 | + displayResult(name, selectedHouse); |
| 57 | + scanner.close(); |
| 58 | + } |
| 59 | + |
| 60 | + |
| 61 | + private static String[][] generateQuestions(String experience) { |
| 62 | + if (experience.compareToIgnoreCase("novato")==0) { |
| 63 | + return new String[][] { |
| 64 | + {"¿Qué te gustaría aprender primero?", "HTML/CSS", "Bases de datos", "Desarrollo móvil básico", "Manipulación de datos"}, |
| 65 | + {"¿Qué tipo de proyectos te motivan?", "Sitios web", "Sistemas pequeños", "Apps sencillas", "Análisis simple"}, |
| 66 | + {"¿Cuál es tu entorno de aprendizaje preferido?", "Tutoriales en línea", "Cursos estructurados", "Aplicaciones de aprendizaje", "Proyectos con datos"}, |
| 67 | + {"¿Cómo prefieres trabajar?", "Diseñando interfaces", "Organizando datos", "Construyendo aplicaciones", "Analizando información"}, |
| 68 | + {"¿Qué lenguaje de programación te gustaría aprender primero?", "JavaScript", "SQL", "Kotlin", "Python"}, |
| 69 | + {"¿Qué te parece más interesante?", "Crear páginas web", "Gestionar bases de datos", "Desarrollar apps", "Analizar datos"}, |
| 70 | + {"¿En qué tipo de empresa te ves trabajando?", "Agencia digital", "Empresa de software", "Startup móvil", "Consultoría de datos"}, |
| 71 | + {"¿Qué prefieres en términos de desafíos?", "Diseñar una web atractiva", "Optimizar consultas", "Mejorar la usabilidad móvil", "Descubrir patrones en datos"}, |
| 72 | + {"¿Cuál sería tu rol/es ideal en un equipo?", "Diseñador web", "Administrador de bases de datos", "Desarrollador de apps", "Analista de datos"}, |
| 73 | + {"¿Cómo prefieres aprender?", "Con ejercicios prácticos", "Resolviendo problemas lógicos", "Desarrollando apps pequeñas", "Trabajando con datasets simples"} |
| 74 | + }; |
| 75 | + |
| 76 | + } else if (experience.compareToIgnoreCase("intermedio")==0) { |
| 77 | + return new String[][] { |
| 78 | + {"¿Qué disfrutas optimizar?", "Experiencia visual", "Rendimiento del servidor", "Usabilidad móvil", "Procesos de datos"}, |
| 79 | + {"¿Qué es lo más importante en un proyecto?", "Usabilidad", "Eficiencia", "Compatibilidad", "Precisión de datos"}, |
| 80 | + {"¿Cómo abordas la resolución de problemas?", "Con creatividad", "Con análisis profundo", "Con prototipos rápidos", "Con datos empíricos"}, |
| 81 | + {"¿Qué prefieres en un entorno de desarrollo?", "Herramientas de diseño", "Depuradores avanzados", "Simuladores móviles", "Entornos de análisis de datos"}, |
| 82 | + {"¿Qué te impulsa en un proyecto?", "La estética", "La lógica", "La innovación", "Los resultados basados en datos"}, |
| 83 | + {"¿Cómo manejas el trabajo en equipo?", "Como líder de frontend", "Como arquitecto de backend", "Como desarrollador principal", "Como analista senior"}, |
| 84 | + {"¿Qué tendencia tecnológica te atrae?", "WebAssembly", "Serverless computing", "Realidad aumentada", "Machine learning"}, |
| 85 | + {"¿Qué lenguaje consideras esencial?", "JavaScript/TypeScript", "Go/Rust", "Swift/Java", "Python/R"}, |
| 86 | + {"¿Qué prefieres hacer en tu tiempo libre?", "Prototipar diseños", "Contribuir a proyectos open-source", "Desarrollar apps personales", "Trabajar en proyectos de análisis de datos"}, |
| 87 | + {"¿Cuál es tu objetivo a largo plazo?", "Ser un maestro de la experiencia de usuario", "Liderar la infraestructura de sistemas", "Crear apps de referencia", "Ser un gurú de los datos"} |
| 88 | + }; |
| 89 | + |
| 90 | + } else { |
| 91 | + return new String[][] { |
| 92 | + {"¿Qué disfrutas optimizar?", "Experiencia visual", "Rendimiento del servidor", "Usabilidad móvil", "Procesos de datos"}, |
| 93 | + {"¿Qué es lo más importante en un proyecto?", "Usabilidad", "Eficiencia", "Compatibilidad", "Precisión de datos"}, |
| 94 | + {"¿Cómo abordas la resolución de problemas?", "Con creatividad", "Con análisis profundo", "Con prototipos rápidos", "Con datos empíricos"}, |
| 95 | + {"¿Qué prefieres en un entorno de desarrollo?", "Herramientas de diseño", "Depuradores avanzados", "Simuladores móviles", "Entornos de análisis de datos"}, |
| 96 | + {"¿Qué te impulsa en un proyecto?", "La estética", "La lógica", "La innovación", "Los resultados basados en datos"}, |
| 97 | + {"¿Cómo manejas el trabajo en equipo?", "Como líder de frontend", "Como arquitecto de backend", "Como desarrollador principal", "Como analista senior"}, |
| 98 | + {"¿Qué tendencia tecnológica te atrae?", "WebAssembly", "Serverless computing", "Realidad aumentada", "Machine learning"}, |
| 99 | + {"¿Qué lenguaje consideras esencial?", "JavaScript/TypeScript", "Go/Rust", "Swift/Java", "Python/R"}, |
| 100 | + {"¿Qué prefieres hacer en tu tiempo libre?", "Prototipar diseños", "Contribuir a proyectos open-source", "Desarrollar apps personales", "Trabajar en proyectos de análisis de datos"}, |
| 101 | + {"¿Cuál es tu objetivo a largo plazo?", "Ser un maestro de la experiencia de usuario", "Liderar la infraestructura de sistemas", "Crear apps de referencia", "Ser un gurú de los datos"} |
| 102 | + }; |
| 103 | + |
| 104 | + } |
| 105 | + } |
| 106 | + |
| 107 | + // Method to add weighted score to the corresponding house |
| 108 | + private static void addWeightedScore(List<House> houses, int answer, int questionNumber) { |
| 109 | + int weight = questionNumber; // More weight for later questions |
| 110 | + houses.get(answer - 1).score += weight; |
| 111 | + } |
| 112 | + |
| 113 | + // Method to determine the house with the highest score and handle ties |
| 114 | + private static House determineHouse(List<House> houses, Random random, int age, String experience) { |
| 115 | + houses.sort((h1, h2) -> h2.score - h1.score); |
| 116 | + List<House> topHouses = new ArrayList<>(); |
| 117 | + int maxScore = houses.get(0).score; |
| 118 | + |
| 119 | + for (House house : houses) { |
| 120 | + if (house.score == maxScore) { |
| 121 | + topHouses.add(house); |
| 122 | + } |
| 123 | + } |
| 124 | + |
| 125 | + // Consider age and experience as tie-breaker criteria |
| 126 | + if (topHouses.size() > 1) { |
| 127 | + System.out.println("\n¡Fue una decisión difícil! Considerando tu edad y experiencia..."); |
| 128 | + if (age < 20 && experience.equals("novato")) { |
| 129 | + return randomHouseSelection(topHouses, random, "Frontend"); |
| 130 | + } else if (age >= 20 && experience.equals("avanzado")) { |
| 131 | + return randomHouseSelection(topHouses, random, "Backend"); |
| 132 | + } else { |
| 133 | + return topHouses.get(random.nextInt(topHouses.size())); |
| 134 | + } |
| 135 | + } |
| 136 | + |
| 137 | + return topHouses.get(0); |
| 138 | + } |
| 139 | + |
| 140 | + // Method to randomly select a house, with preference based on certain conditions |
| 141 | + private static House randomHouseSelection(List<House> topHouses, Random random, String preferredHouse) { |
| 142 | + for (House house : topHouses) { |
| 143 | + if (house.name.equals(preferredHouse)) { |
| 144 | + return house; |
| 145 | + } |
| 146 | + } |
| 147 | + return topHouses.get(random.nextInt(topHouses.size())); |
| 148 | + } |
| 149 | + |
| 150 | + // Method to display the final result with personalized feedback |
| 151 | + private static void displayResult(String name, House selectedHouse) { |
| 152 | + System.out.println("\n¡Felicidades " + name + "! Has sido seleccionado para la casa " + selectedHouse.name + "!"); |
| 153 | + System.out.println("Tu afinidad por la " + selectedHouse.name + " se refleja en tus respuestas."); |
| 154 | + if (selectedHouse.name.equals("Frontend")) { |
| 155 | + System.out.println("Eres una persona creativa, te encanta construir interfaces y mejorar la experiencia del usuario."); |
| 156 | + } else if (selectedHouse.name.equals("Backend")) { |
| 157 | + System.out.println("Disfrutas diseñar la lógica del servidor y crear sistemas eficientes y escalables."); |
| 158 | + } else if (selectedHouse.name.equals("Mobile")) { |
| 159 | + System.out.println("Te apasiona el desarrollo móvil y crear aplicaciones que lleguen a las manos de millones de usuarios."); |
| 160 | + } else if (selectedHouse.name.equals("Data")) { |
| 161 | + System.out.println("Te gusta analizar datos, encontrar patrones y dar sentido a la información compleja."); |
| 162 | + } |
| 163 | + } |
| 164 | + |
| 165 | +} |
0 commit comments