Challenge #1 - Soccer game
Skills to assess
The goal behind this challenge is assessing your skills as a software developer in terms of the quality of your code: module creation, cohesion, coupling or coding among others.
This challenge consists in the creation of a part of a soccer game, specifically, the part in charge of managing player attributes and abilities.
The players have a series of attributes, represented by integer values ranging from 1 to 99. The list of attributes is composed by: Stamina, Speed, Passing, Shot, Defense, Agility and Dribbling. In addition, each player has a Name for identification purposes.
Also, they can unlock a series of tricks when introducing a key sequence. Each player can have between none to many tricks. For simplicity, when a trick is executed, its name will be printed through standard output. This is the list of tricks and the respective key sequences that activate them:
Tricks can only happen if the input sequence is exactly like the one expected. For example, the sequence up up up down down shouldn’t activate the “ruleta” (up up down down).
The base player attributes come altered by two types of factors: the “sneakers” they use, their physical condition and the use of energy drinks. These factors … an alteration over the base value of each attribute. Each player will have a pair of sneakers, a given physical conditioning and can have zero or one energy drinks max. This is the list of components and the alteration they produce over base values:
In case of rounding, you must take the nearest integer value.
Here’s the list of players with their attributes, tricks and available conditions.
Input / Output
Your system will receive as argument a file name. The file will contain the name of a player and a list of key sequences. It must show by standard output the list of attributes of that player and the tricks it has done. Here’s an example. Remember that the output format must coincide with the one show in this example bellow, specially in the case of attributes (Attribute name: value)
up up down down
right down left
left right left left
up up down down
Capacidad de Reacción: 83
As you can see, this test is not very technical from an algorithmic standpoint. Our goal is to evaluate your ability and your vision for building software.
Think about how your implementation would simplify the extension of features. By that we mean, how easy would be to keep adding new players, new skills, new sneakers, different ways of reading input data…
Bsides manually reviewing your implementation, it will be subjected to tests with different file inputs. Remember that for this implementation you can use any object oriented programming language of your choice.
Take all the time you need and enjoy this test. Do not hessitate to contact us in case of doubt.
Challenge #2 / the $handles
As you might now - if that’s not the case, take your time to inform you - our wallet allows to send money online without asking for addresses making use of the $handles system.
The easy task for this challenge is to think about how you would implement a system like this one: designing a system to send Bitcoin Cash to another user if we know his/her $handle. Also, you must include the pros and cons of each of the solutions that may occur to you.
There are no specific instructions about what you should or should not explain. Your criteria when doing so is also part of the challenge.
Only written explanations are required, but you can include any diagram or code fragments to add expressiveness to your explanations.
You can send us your solutions via email to: firstname.lastname@example.org
Remember to include a ZIP file with two folders: challenge_1 and challenge_2. Include whatever you need. Also, include your full name in the email with a cover letter explaining us why do you think you would be a great fit for this team :)