Los postulantes para el área de programación deben poder resolver algunos de los problemas enunciados en esta página.
No es necesario resolver todos los problemas.
Envía la ruta del proyecto para probar tus respuestas al correo que te ha contactado.
Cada problema tiene un puntaje asociado.
Escoge los problemas que llamen tu atención y envía el link de tus soluciones por correo.
Para tus soluciones emplea solo Luau.
En caso de dudas del problema, usa tu mejor criterio y sorprendemos con tu solución. No se dará ninguna aclaración adicional.
Cualquier nota u observación ponla como comentario al inicio de tu código.
Si todo tu código y comentarios están en inglés no problem, it's cool.
Trata de poner todas tus soluciones en un solo proyecto de Roblox Studio, de no ser posible un proyecto por pregunta.
Si un proyecto no corre, será calificado con nota cero. Por favor revisa bien tu proyecto antes de enviarlo.
Si tu código esta desordenado y no es fácil de entender (pero funciona) puede ser penalizado hasta con un 50% del puntaje del problema.
Debes poder compartir tu proyecto para revisar el código y orden del proyecto, no uses código propietario o que no sea tuyo.
Después de aprobar este examen, se te tomará un examen similar en nuestras oficinas, aprobarlo sólo te servirá si lo resuelves personalmente.
Puedes usar cualquier referencia (Wikipedia, libros, blogs, etc) con tal que el código que envíes sea completamente tuyo y puedas explicarlo linea por linea. Si solo copias código generado por la IA sin modificarlo o entenderlo seras baneado indefinidamente.
Desencripta el siguiente mensaje:
Bgc-bfufb tegaedppqna ql aggv zge xof tegaedppfe'l lgjb.
Xof adpf vflqanfe logjbvn'x hf pdwqna d cgebv qn coqro xof tbdkfe ql mjlx d lpdbb tdex. Xof tbdkfe QL XOF HGLL; qx'l kgje vjxk xg fnxfexdqn oqp ge ofe.
Zgrjl ql d pdxxfe gz vfrqvqna codx xoqnal kgj def ngx agqna xg vg.
Xof rglx gz dvvqna d zfdxjef qln'x mjlx xof xqpf qx xdwfl xg rgvf qx. Xof rglx dblg qnrbjvfl xof dvvqxqgn gz dn ghlxdrbf xg zjxjef fstdnlqgn. Xof xeqrw ql xg tqrw xof zfdxjefl xodx vgn'x zqaox fdro gxofe. - Mgon Rdepdrw.
(ccc.adpdljxed.rgp/uqfc/nfcl/234346?utkjpvbjr)
(ccc.hedqnkijgxf.rgp/ijgxfl/djxogel/m/mgon_rdepdrw.oxpb)
Si se sabe que solo se han encriptado las letras del alfabeto (a - z).
Para ello ordena las letras del mensaje encriptado de acuerdo al numero de veces que se repiten (de mayor a menor) y compáralo con la tabla de frecuencia de caracteres del lenguaje en que esta escrito este mensaje, que para este caso es:
freqLang = "TEOAISRHNUCMDLGWFPYKJBVQX" (de mas frecuente a menos frecuente)
Implementar la función: decryptMessage( message, freqLang )
Tu programa debe imprimir el texto desencriptado en un panel de texto o en la ventana de logs.
Mantener las mayúsculas y minúsculas del mensaje, así como los saltos de linea.
(4 PUNTOS)
Crear un generador de laberintos aleatorios de dos dimensiones de tamaño 'n' (n: impar > 3). El punto inicial A siempre se encontrará en la esquina superior izquierda. El punto final B deberá encontrarse al final de la ruta mas larga dentro de tu laberinto generado (que no necesariamente será la esquina superior derecha). El laberinto solo debe tener caminos horizontales y verticales, no diagonales.
Ademas para ir de A a B deberá existir solo un camino posible.
Ejemplo:
n = 11 (* = muro, A = inicio, B = fin)
***********
*A * B*
*** * *****
* * * * *
* * * * * *
* * * *
* *** *** *
* * * *
*** *** * *
* * *
***********
Implementar la función: createMaze2D( n )
No generar cualquier laberinto, recuerda que se pide un laberinto de un solo camino posible entre A y B.
No se considerán soluciones que generen laberintos con múltiples caminos entre A y B.
Mostrar el laberinto en un panel de texto o en la ventana de logs.
(4 PUNTOS)
Cree un simulador para disparar balones circulares. Considerar por simplicidad un cuarto rectangular cerrado y de gravedad G. Las balas son esferas que deben de chocar contra las paredes y entre ellas, luego de un tiempo de estar inmóviles deben desaparecer.
Poner los controles de gravedad, angulo del cañón y velocidad de disparo inicial en una interfaz de usuario para que el player lo pueda modificar.
Implementar la función: shootBall()
(7 PUNTOS)
Implementar un laberinto procedural 3D que permita visualizar y navegar los laberintos generados por el Problema 2 (Reemplazar cada carácter * de la solución por un cubo y asignarle una textura arbitraria).
La solución debe ser interactiva y poder regenerar laberintos de diferentes valores de n.
En caso tuvieras experiencia previa programando juegos puedes considerar agregar funcionalidades para puntaje adicional como movimiento de cámara, colisiones, enemigos navegando el laberinto, objetivo del juego, etc.
Implementar la función: createMaze3D()
(+11 PUNTOS)