Desafío 1 - Partido de Fútbol

Capacidades a valorar

El objetivo de esta prueba es valorar tus capacidades para diseñar software en términos de calidad de código; creación de módulos, cohesión, acoplamiento o codificación entre los más importantes.

Descripción

Este desafío consiste en crear parte de un juego de fútbol, concretamente, la parte encargada de gestionar las habilidades y atributos de los jugadores.

Los jugadores tiene una serie de atributos, representados por valores enteros que van de 1 a 99. La lista de atributos incluye: Resistencia, Velocidad, Pase, Tiro, Defensa, Capacidad de Reacción y Técnica. Adicionalmente cada jugador tiene un Nombre que permite identificarlo.

También pueden poseer una lista de filigranas que se activan al introducir una secuencia de teclas. Cada jugador puede poseer entre ninguna y muchas filigranas. Por simplicidad, que una filigrana se ejecute implica imprimir su nombre por salida estándar. Esta es la lista de filigranas y la/s respectivas secuencias de teclas que las activan:

La filigrana sólo debe darse si la secuencia dada coincide exactamente con la esperada. Por ejemplo, la secuencia up up up down down no debería activar la Ruleta (up up down down).

Los atributos base de los jugadores vienen alterados por dos tipos de factores: las botas que utilizan, la condición física y el uso de bebidas energéticas. Estos factores suponen una alteración sobre el valor base de cada atributo. Cada jugador poseerá unas botas, tendrá una condición física y puede no tener ninguna bebida energética o una como máximo. Esta es la lista de componentes y su alteración sobre los valores base:

En caso de redondeo debes de tomar el valor entero más cercano.

Jugadores

A continuación encontrarás la lista de jugadores con sus atributos, filigranas y condicionantes disponibles.

Castolo

 

Valeny

 

Ivarov

Entrada / Salida

Tu sistema recibirá como argumento el nombre de un fichero. El fichero contendrá el nombre de un jugador y una lista de secuencias teclas. Debe de mostrar por la salida estándar la lista de atributos de ese jugador y las filigranas que ha realizado. A continuación se muestra un ejemplo. Recuerda que el formato de la salida debe de coincidir con la que se plantea en el ejemplo, especialmente en el caso de los atributos (Nombre atributo: valor).

Ejemplo de entrada

Castolo

up up down down

right down left

left right left left

up up down down

Ejemplo de salida

Resistencia: 82

Velocidad: 86

Pase: 78

Tiro: 87

Defensa: 66

Capacidad de Reacción: 83

Técnica: 85

Ruleta

Sombrero

Consideraciones Adicionales

Como habrás podido observar, no es un ejercicio demasiado técnico desde el punto de vista algorítmico. Pretendemos evaluar tus capacidades y tu visión para construir software.

Piensa en como tu implementación simplificará la extensión de características. Es decir, cómo de fácil será poder seguir añadiendo nuevos jugadores, nuevas filigranas, nuevas botas, diferentes formas de leer la entrada de datos...

Además de revisar manualmente tu implementación, será sometida a tests con diferentes entradas de ficheros. Recuerda que para esta implementación puedes utilizar cualquier lenguaje de programación orientado a objetos (POO).

Tómate el tiempo que necesites y a ser posible, disfruta con lo que hagas. No dudes en contactarnos si tienes alguna duda.

Desafío 2 / the $handles

Como sabrás - si no es así aprovecha para informarte - nuestra cartera permite hacer envíos de dinero de forma online sin tener que pedir direcciones para depositar haciendo uso de un sistema de handles.

La sencilla tarea para este desafío es que pienses en cómo implementarías un sistema como este. Es decir, diseñar el sistema para poder enviar Bitcoin Cash a otro usuario si conocemos su $handle. Además, debes de incluir los pros y contras de cada una de las soluciones que se te ocurran.

No hay instrucciones específicas sobre qué debes explicar o qué no. Tu criterio para hacerlo forma también parte del desafío.

Tan solo se requieren las explicaciones escritas, pero puedes incluir diagramas o fragmentos de código para añadir expresividad a tus explicaciones.

Consideraciones Adicionales

Para hacernos llegar tus soluciones hazlo directamente a través del siguiente email: jobs@handcash.io

Recuerda incluir un archivo ZIP con dos carpetas: desafío 1 y desafío 2. Incluye dentro de cada una lo que necesites. Además, incluye tu nombre completo en el email con una carta de presentación donde nos expliques por qué crees que serías un buen candidato para este equipo :)