Skip to content

Commit 3da33bd

Browse files
authored
Merge pull request mouredev#7222 from Hequebo/hequebo36
mouredev#36 - C#
2 parents 6a46521 + d2e95c1 commit 3da33bd

File tree

1 file changed

+215
-0
lines changed
  • Roadmap/36 - EL SOMBRERO SELECCIONADOR/c#

1 file changed

+215
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
class Question
2+
{
3+
public string _Question { get; set; }
4+
public Dictionary<int, string> Options { get; set; }
5+
6+
public Question(string question, Dictionary<int, string> options)
7+
{
8+
_Question = question;
9+
Options = options;
10+
}
11+
}
12+
class QuestionService
13+
{
14+
private List<Question> _questions;
15+
private Dictionary<string, int> _houses = new Dictionary<string, int>
16+
{
17+
{"Frontend", 0 },
18+
{"Backend", 0 },
19+
{"Mobile", 0 },
20+
{"Data", 0 }
21+
};
22+
23+
public List<Question> Questions { get { return _questions; } }
24+
25+
public QuestionService()
26+
{
27+
_questions = new List<Question>();
28+
}
29+
public void AddQuestion(Question question) => _questions.Add(question);
30+
public void Answer(int question, int option)
31+
{
32+
33+
switch (option)
34+
{
35+
case 1:
36+
_houses["Frontend"]++;
37+
break;
38+
case 2:
39+
_houses["Backend"]++;
40+
break;
41+
case 3:
42+
_houses["Mobile"]++;
43+
break;
44+
case 4:
45+
_houses["Data"]++;
46+
break;
47+
default:
48+
Console.WriteLine("Opción no válida...");
49+
break;
50+
}
51+
}
52+
public void ShowResults()
53+
{
54+
int maxScore = _houses.Values.Max();
55+
var maxScoreHouses = _houses.Where(h => h.Value == maxScore);
56+
KeyValuePair<string, int> selectedHouse;
57+
if (maxScoreHouses.Count() == 1)
58+
{
59+
selectedHouse = maxScoreHouses.First();
60+
Console.WriteLine($"El sombrero seleccionador te ha envíado a la casa: {selectedHouse.Key}");
61+
}
62+
else
63+
{
64+
Random random = new Random();
65+
selectedHouse = maxScoreHouses.ElementAt(random.Next(maxScoreHouses.Count()));
66+
Console.WriteLine($"Ha sido una decisión díficil, pero el sombrero seleccionador ha " +
67+
$"decido enviarte a la casa : {selectedHouse.Key}");
68+
}
69+
}
70+
}
71+
class Program
72+
{
73+
static void Main(string[] args)
74+
{
75+
QuestionService questionService = new QuestionService();
76+
questionService.AddQuestion(
77+
new Question(
78+
"¿Qué tipo de proyectos te interesa más desarrollar?",
79+
new Dictionary<int, string>(){
80+
{3, "1.- Aplicaciones móviles nativas para múltiples plataformas."},
81+
{1, "2.- Interfaces visualmente atractivas y responsivas."},
82+
{4, "3.- Procesamiento y análisis de grandes volúmenes de datos."},
83+
{2, "4- Sistemas robustos y optimización de rendimiento del servidor."}
84+
85+
}
86+
)
87+
);
88+
questionService.AddQuestion(
89+
new Question(
90+
"¿Qué aspecto del desarrollo disfrutas más?",
91+
new Dictionary<int, string>(){
92+
{2, "1.- Resolver problemas complejos de lógica y escalabilidad."},
93+
{4, "2.- Analizar datos para tomar decisiones basadas en estadísticas."},
94+
{3, "3.- Crear aplicaciones móviles eficientes y funcionales."},
95+
{1, "4.- Trabajar en el diseño y la experiencia de usuario."}
96+
97+
}
98+
)
99+
);
100+
questionService.AddQuestion(
101+
new Question(
102+
"¿Qué herramienta prefieres usar en tu día a día?",
103+
new Dictionary<int, string>(){
104+
{3, "1.- Kotlin o Swift para desarrollar apps móviles nativas."},
105+
{4, "2.- Python o R para análisis de datos."},
106+
{1, "3.- Frameworks como React o Angular."},
107+
{2, "4.- Lenguajes como Node.js o Python para la gestión de servidores."}
108+
109+
}
110+
)
111+
);
112+
questionService.AddQuestion(
113+
new Question(
114+
"¿Cómo te ves en un equipo de desarrollo?",
115+
new Dictionary<int, string>(){
116+
{4, "1.- Modelando datos y construyendo dashboards de análisis."},
117+
{2, "2.- Encargado de la lógica del servidor y las APIs."},
118+
{3, "3.- Desarrollando la interfaz y funcionalidad de una app móvil."},
119+
{1, "4.- Diseñando las interacciones y los componentes visuales."}
120+
121+
}
122+
)
123+
);
124+
questionService.AddQuestion(
125+
new Question(
126+
"¿Qué te motiva más al trabajar en un proyecto?",
127+
new Dictionary<int, string>(){
128+
{1, "1.- Ver cómo el diseño cobra vida en la pantalla."},
129+
{4, "2.- Descubrir insights a partir del análisis de datos."},
130+
{2, "3.- Optimizar el rendimiento y escalabilidad del sistema."},
131+
{3, "4.- Lograr que una aplicación móvil funcione perfectamente en cualquier dispositivo."}
132+
}
133+
)
134+
);
135+
questionService.AddQuestion(
136+
new Question(
137+
"¿Cuál es tu enfoque al aprender nuevas tecnologías?",
138+
new Dictionary<int, string>(){
139+
{4, "1.- Explorar técnicas avanzadas de análisis de datos y machine learning."},
140+
{2, "2.- Aprender sobre nuevas arquitecturas y lenguajes de servidor."},
141+
{3, "3.- Probar nuevas plataformas y herramientas para desarrollo móvil."},
142+
{1, "4.- Experimentar con nuevas librerías y frameworks de interfaz de usuario."}
143+
}
144+
)
145+
);
146+
questionService.AddQuestion(
147+
new Question(
148+
"¿Qué tipo de desafíos disfrutas más resolver?",
149+
new Dictionary<int, string>(){
150+
{2, "1.- Solución de problemas de concurrencia y carga en servidores."},
151+
{1, "2.- Optimización de interfaces para que se vean bien en cualquier dispositivo."},
152+
{4, "3.- Análisis de grandes volúmenes de datos para detectar patrones ocultos."},
153+
{3, "4.- Creación de experiencias de usuario fluídas en dispositivos móviles."}
154+
}
155+
)
156+
);
157+
questionService.AddQuestion(
158+
new Question(
159+
"¿Cómo te gusta medir el éxito de tu trabajo?",
160+
new Dictionary<int, string>(){
161+
{2, "1.- Por la estabilidad y rapidez del sistema bajo carga."},
162+
{1, "2.- Mediante la satisfacción del usuario con la interfaz visual."},
163+
{3, "3.- Por la fluidez y buen rendimiento de la app móvil en diferentes dispositivos."},
164+
{4, "4.- Por la precisión y relevancia de los resultados obtenidos en el análisis de datos."}
165+
}
166+
)
167+
);
168+
questionService.AddQuestion(
169+
new Question(
170+
"¿Qué te resulta más interesante al trabajar con tecnologías emergentes?",
171+
new Dictionary<int, string>(){
172+
{4, "1.- Trabajar con tecnologías de big data o inteligencia artificial."},
173+
{2, "2.- Explorar nuevas arquitecturas para mejorar el rendimiento del servidor."},
174+
{1, "3.- Probar nuevas herramientas y metodologías para mejorar el diseño y la UX."},
175+
{3, "4.- Desarrollar apps móviles que aprovechen nuevas capacidades de hardware."}
176+
}
177+
)
178+
);
179+
questionService.AddQuestion(
180+
new Question(
181+
"¿Cómo te enfrentas a un nuevo problema en un proyecto?",
182+
new Dictionary<int, string>(){
183+
{4, "1.- Buscando patrones y soluciones basadas en análisis de datos."},
184+
{1, "2.- Replanteando la estructura visual y funcional de la interfaz."},
185+
{3, "3.- Explorando cómo mejorar la experiencia del usuario en dispositivos móviles."},
186+
{2, "4.- Analizando la estructura de datos y la lógica del backend."}
187+
}
188+
)
189+
);
190+
191+
Console.WriteLine("---Sistema del sombrero seleccionador de Hogwarts---");
192+
Console.WriteLine("¿Cuál es tu nombre?");
193+
string name = Console.ReadLine();
194+
Console.WriteLine($"!Bienvenido {name}! a continuación te haremos una serie de " +
195+
$"preguntas para determinar cuál será tu casa");
196+
197+
int questionId = 0;
198+
foreach (Question question in questionService.Questions)
199+
{
200+
Console.WriteLine(question._Question);
201+
foreach (var option in question.Options)
202+
{
203+
Console.WriteLine(option.Value);
204+
}
205+
Console.WriteLine("Elige una respuesta...");
206+
int answer = 0;
207+
int.TryParse(Console.ReadLine(), out answer);
208+
var selection = question.Options.FirstOrDefault(o => o.Value.Contains(answer.ToString()));
209+
questionService.Answer(questionId, selection.Key);
210+
questionId++;
211+
}
212+
questionService.ShowResults();
213+
214+
}
215+
}

0 commit comments

Comments
 (0)