Skip to content

Commit 94ea750

Browse files
authored
Merge pull request mouredev#5919 from MohamedElderkaoui/main
mouredev#36 - jaava - MohamedElDerkaoui
2 parents 7994572 + 6627c2a commit 94ea750

File tree

1 file changed

+165
-0
lines changed

1 file changed

+165
-0
lines changed
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
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

Comments
 (0)