Skip to content

Commit 7159b72

Browse files
authored
Merge pull request #6005 from redom69/main
#36 - Python
2 parents fc4494f + a7066ab commit 7159b72

File tree

4 files changed

+676
-0
lines changed

4 files changed

+676
-0
lines changed
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
import 'dart:io';
2+
import 'dart:math';
3+
4+
List<String> printQuiz() {
5+
final List<Map<String, dynamic>> preguntas = [
6+
{
7+
"pregunta": "¿Qué es lo que más disfrutas al programar?",
8+
"opciones": [
9+
{"respuesta": "Diseñar interfaces atractivas", "casa": "Frontend"},
10+
{
11+
"respuesta": "Optimizar el rendimiento del servidor",
12+
"casa": "Backend"
13+
},
14+
{"respuesta": "Crear aplicaciones móviles útiles", "casa": "Mobile"},
15+
{"respuesta": "Analizar grandes conjuntos de datos", "casa": "Data"}
16+
]
17+
},
18+
{
19+
"pregunta": "¿Qué tipo de proyecto te atrae más?",
20+
"opciones": [
21+
{"respuesta": "Aplicaciones web con mucho estilo", "casa": "Frontend"},
22+
{
23+
"respuesta": "Sistemas que manejen grandes volúmenes de datos",
24+
"casa": "Backend"
25+
},
26+
{
27+
"respuesta": "Aplicaciones para teléfonos inteligentes",
28+
"casa": "Mobile"
29+
},
30+
{"respuesta": "Dashboards para visualizar información", "casa": "Data"}
31+
]
32+
},
33+
{
34+
"pregunta": "¿Qué herramienta te resulta más interesante?",
35+
"opciones": [
36+
{"respuesta": "HTML, CSS y JavaScript", "casa": "Frontend"},
37+
{"respuesta": "Node.js o Python", "casa": "Backend"},
38+
{"respuesta": "React Native o Swift", "casa": "Mobile"},
39+
{"respuesta": "SQL o Python con Pandas", "casa": "Data"}
40+
]
41+
},
42+
{
43+
"pregunta": "¿Cuál es tu mayor fortaleza como programador?",
44+
"opciones": [
45+
{"respuesta": "Crear interfaces amigables", "casa": "Frontend"},
46+
{
47+
"respuesta": "Solucionar problemas complejos en el servidor",
48+
"casa": "Backend"
49+
},
50+
{"respuesta": "Desarrollar apps funcionales", "casa": "Mobile"},
51+
{"respuesta": "Encontrar patrones en los datos", "casa": "Data"}
52+
]
53+
},
54+
{
55+
"pregunta": "¿Qué prefieres en un equipo de desarrollo?",
56+
"opciones": [
57+
{"respuesta": "Ser quien diseña el look y feel", "casa": "Frontend"},
58+
{
59+
"respuesta": "Ser quien gestiona la arquitectura de la aplicación",
60+
"casa": "Backend"
61+
},
62+
{
63+
"respuesta": "Ser quien se encarga de la versión móvil",
64+
"casa": "Mobile"
65+
},
66+
{
67+
"respuesta": "Ser quien analiza el rendimiento del sistema",
68+
"casa": "Data"
69+
}
70+
]
71+
},
72+
{
73+
"pregunta": "¿En qué te enfocas más cuando trabajas en un proyecto?",
74+
"opciones": [
75+
{
76+
"respuesta": "En el diseño visual y la experiencia de usuario",
77+
"casa": "Frontend"
78+
},
79+
{
80+
"respuesta": "En la estabilidad y escalabilidad del sistema",
81+
"casa": "Backend"
82+
},
83+
{
84+
"respuesta": "En hacer que la app funcione en dispositivos móviles",
85+
"casa": "Mobile"
86+
},
87+
{
88+
"respuesta": "En el análisis y visualización de los datos",
89+
"casa": "Data"
90+
}
91+
]
92+
},
93+
{
94+
"pregunta": "¿Cuál es tu mayor motivación como desarrollador?",
95+
"opciones": [
96+
{
97+
"respuesta": "Crear experiencias de usuario memorables",
98+
"casa": "Frontend"
99+
},
100+
{
101+
"respuesta": "Resolver problemas complejos con eficiencia",
102+
"casa": "Backend"
103+
},
104+
{
105+
"respuesta":
106+
"Desarrollar aplicaciones que la gente use todos los días",
107+
"casa": "Mobile"
108+
},
109+
{"respuesta": "Descubrir patrones ocultos en los datos", "casa": "Data"}
110+
]
111+
},
112+
{
113+
"pregunta": "¿Qué aspecto prefieres de un nuevo proyecto?",
114+
"opciones": [
115+
{
116+
"respuesta": "Hacer que se vea genial y sea fácil de usar",
117+
"casa": "Frontend"
118+
},
119+
{
120+
"respuesta": "Asegurarme de que el servidor funcione sin problemas",
121+
"casa": "Backend"
122+
},
123+
{
124+
"respuesta": "Hacer que funcione bien en dispositivos móviles",
125+
"casa": "Mobile"
126+
},
127+
{
128+
"respuesta": "Organizar y visualizar los datos de forma eficiente",
129+
"casa": "Data"
130+
}
131+
]
132+
},
133+
{
134+
"pregunta": "¿Qué tecnología te emociona más aprender?",
135+
"opciones": [
136+
{
137+
"respuesta": "Frameworks de JavaScript como React o Angular",
138+
"casa": "Frontend"
139+
},
140+
{
141+
"respuesta": "Microservicios o arquitectura en la nube",
142+
"casa": "Backend"
143+
},
144+
{"respuesta": "Desarrollo de aplicaciones móviles", "casa": "Mobile"},
145+
{"respuesta": "Big Data o inteligencia artificial", "casa": "Data"}
146+
]
147+
},
148+
{
149+
"pregunta": "Si pudieras elegir un área de especialización, ¿cuál sería?",
150+
"opciones": [
151+
{"respuesta": "Interfaz y experiencia de usuario", "casa": "Frontend"},
152+
{
153+
"respuesta": "Desarrollo y mantenimiento del servidor",
154+
"casa": "Backend"
155+
},
156+
{"respuesta": "Aplicaciones móviles", "casa": "Mobile"},
157+
{"respuesta": "Ciencia de datos y análisis", "casa": "Data"}
158+
]
159+
}
160+
];
161+
162+
List<String> answers = [];
163+
164+
preguntas.forEach((preguntaObj) {
165+
print(preguntaObj['pregunta']);
166+
List opciones = preguntaObj['opciones'];
167+
168+
// Imprimir las opciones y pedir la respuesta
169+
for (int i = 0; i < opciones.length; i++) {
170+
print("${String.fromCharCode(97 + i)}) ${opciones[i]['respuesta']}");
171+
}
172+
173+
String? answer = stdin.readLineSync();
174+
answers.add(answer!);
175+
});
176+
177+
return answers;
178+
}
179+
180+
String selectHouse(List<String> answers) {
181+
int countFront = answers.where((a) => a == 'a').length;
182+
int countBackend = answers.where((a) => a == 'b').length;
183+
int countMobile = answers.where((a) => a == 'c').length;
184+
int countData = answers.where((a) => a == 'd').length;
185+
186+
Map<String, int> casas = {
187+
"Frontend": countFront,
188+
"Backend": countBackend,
189+
"Mobile": countMobile,
190+
"Data": countData
191+
};
192+
193+
int maxCount = casas.values.reduce(max);
194+
195+
List<String> posiblesCasas =
196+
casas.keys.where((casa) => casas[casa] == maxCount).toList();
197+
198+
if (posiblesCasas.length > 1) {
199+
print("¡Ha sido una decisión complicada!");
200+
return posiblesCasas[Random().nextInt(posiblesCasas.length)];
201+
}
202+
203+
return posiblesCasas[0];
204+
}
205+
206+
void main() {
207+
print("Introduce tu nombre: ");
208+
String? name = stdin.readLineSync();
209+
List<String> answers = printQuiz();
210+
String house = selectHouse(answers);
211+
print("$name, la casa seleccionada es: $house");
212+
}
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
const readline = require('readline');
2+
3+
const rl = readline.createInterface({
4+
input: process.stdin,
5+
output: process.stdout
6+
});
7+
8+
function printQuiz() {
9+
const preguntas = [
10+
{
11+
pregunta: "¿Qué es lo que más disfrutas al programar?",
12+
opciones: [
13+
{ respuesta: "Diseñar interfaces atractivas", casa: "Frontend" },
14+
{ respuesta: "Optimizar el rendimiento del servidor", casa: "Backend" },
15+
{ respuesta: "Crear aplicaciones móviles útiles", casa: "Mobile" },
16+
{ respuesta: "Analizar grandes conjuntos de datos", casa: "Data" }
17+
]
18+
},
19+
{
20+
pregunta: "¿Qué tipo de proyecto te atrae más?",
21+
opciones: [
22+
{ respuesta: "Aplicaciones web con mucho estilo", casa: "Frontend" },
23+
{ respuesta: "Sistemas que manejen grandes volúmenes de datos", casa: "Backend" },
24+
{ respuesta: "Aplicaciones para teléfonos inteligentes", casa: "Mobile" },
25+
{ respuesta: "Dashboards para visualizar información", casa: "Data" }
26+
]
27+
},
28+
{
29+
pregunta: "¿Qué herramienta te resulta más interesante?",
30+
opciones: [
31+
{ respuesta: "HTML, CSS y JavaScript", casa: "Frontend" },
32+
{ respuesta: "Node.js o Python", casa: "Backend" },
33+
{ respuesta: "React Native o Swift", casa: "Mobile" },
34+
{ respuesta: "SQL o Python con Pandas", casa: "Data" }
35+
]
36+
},
37+
{
38+
pregunta: "¿Cuál es tu mayor fortaleza como programador?",
39+
opciones: [
40+
{ respuesta: "Crear interfaces amigables", casa: "Frontend" },
41+
{ respuesta: "Solucionar problemas complejos en el servidor", casa: "Backend" },
42+
{ respuesta: "Desarrollar apps funcionales", casa: "Mobile" },
43+
{ respuesta: "Encontrar patrones en los datos", casa: "Data" }
44+
]
45+
},
46+
{
47+
pregunta: "¿Qué prefieres en un equipo de desarrollo?",
48+
opciones: [
49+
{ respuesta: "Ser quien diseña el look y feel", casa: "Frontend" },
50+
{ respuesta: "Ser quien gestiona la arquitectura de la aplicación", casa: "Backend" },
51+
{ respuesta: "Ser quien se encarga de la versión móvil", casa: "Mobile" },
52+
{ respuesta: "Ser quien analiza el rendimiento del sistema", casa: "Data" }
53+
]
54+
},
55+
{
56+
pregunta: "¿En qué te enfocas más cuando trabajas en un proyecto?",
57+
opciones: [
58+
{ respuesta: "En el diseño visual y la experiencia de usuario", casa: "Frontend" },
59+
{ respuesta: "En la estabilidad y escalabilidad del sistema", casa: "Backend" },
60+
{ respuesta: "En hacer que la app funcione en dispositivos móviles", casa: "Mobile" },
61+
{ respuesta: "En el análisis y visualización de los datos", casa: "Data" }
62+
]
63+
},
64+
{
65+
pregunta: "¿Cuál es tu mayor motivación como desarrollador?",
66+
opciones: [
67+
{ respuesta: "Crear experiencias de usuario memorables", casa: "Frontend" },
68+
{ respuesta: "Resolver problemas complejos con eficiencia", casa: "Backend" },
69+
{ respuesta: "Desarrollar aplicaciones que la gente use todos los días", casa: "Mobile" },
70+
{ respuesta: "Descubrir patrones ocultos en los datos", casa: "Data" }
71+
]
72+
},
73+
{
74+
pregunta: "¿Qué aspecto prefieres de un nuevo proyecto?",
75+
opciones: [
76+
{ respuesta: "Hacer que se vea genial y sea fácil de usar", casa: "Frontend" },
77+
{ respuesta: "Asegurarme de que el servidor funcione sin problemas", casa: "Backend" },
78+
{ respuesta: "Hacer que funcione bien en dispositivos móviles", casa: "Mobile" },
79+
{ respuesta: "Organizar y visualizar los datos de forma eficiente", casa: "Data" }
80+
]
81+
},
82+
{
83+
pregunta: "¿Qué tecnología te emociona más aprender?",
84+
opciones: [
85+
{ respuesta: "Frameworks de JavaScript como React o Angular", casa: "Frontend" },
86+
{ respuesta: "Microservicios o arquitectura en la nube", casa: "Backend" },
87+
{ respuesta: "Desarrollo de aplicaciones móviles", casa: "Mobile" },
88+
{ respuesta: "Big Data o inteligencia artificial", casa: "Data" }
89+
]
90+
},
91+
{
92+
pregunta: "Si pudieras elegir un área de especialización, ¿cuál sería?",
93+
opciones: [
94+
{ respuesta: "Interfaz y experiencia de usuario", casa: "Frontend" },
95+
{ respuesta: "Desarrollo y mantenimiento del servidor", casa: "Backend" },
96+
{ respuesta: "Aplicaciones móviles", casa: "Mobile" },
97+
{ respuesta: "Ciencia de datos y análisis", casa: "Data" }
98+
]
99+
}
100+
];
101+
102+
const answers = [];
103+
104+
const askQuestion = (index) => {
105+
if (index < preguntas.length) {
106+
console.log(preguntas[index].pregunta);
107+
preguntas[index].opciones.forEach((opcion, idx) => {
108+
console.log(`${String.fromCharCode(97 + idx)}: ${opcion.respuesta}`);
109+
});
110+
rl.question('Selecciona una opción: ', (answer) => {
111+
answers.push(answer);
112+
askQuestion(index + 1);
113+
});
114+
} else {
115+
rl.close();
116+
const house = selectHouse(answers);
117+
console.log(`La casa seleccionada es: ${house}`);
118+
}
119+
};
120+
121+
askQuestion(0);
122+
}
123+
124+
function selectHouse(answers) {
125+
const countFront = answers.filter((a) => a === 'a').length;
126+
const countBackend = answers.filter((a) => a === 'b').length;
127+
const countMobile = answers.filter((a) => a === 'c').length;
128+
const countData = answers.filter((a) => a === 'd').length;
129+
130+
const casas = { Frontend: countFront, Backend: countBackend, Mobile: countMobile, Data: countData };
131+
const maxCount = Math.max(...Object.values(casas));
132+
133+
const posiblesCasas = Object.keys(casas).filter(casa => casas[casa] === maxCount);
134+
135+
if (posiblesCasas.length > 1) {
136+
console.log("¡Ha sido una decisión complicada!");
137+
return posiblesCasas[Math.floor(Math.random() * posiblesCasas.length)];
138+
}
139+
140+
return posiblesCasas[0];
141+
}
142+
143+
function main() {
144+
rl.question('Introduce tu nombre: ', (name) => {
145+
printQuiz();
146+
});
147+
}
148+
149+
main();

0 commit comments

Comments
 (0)