The project is created using React. I chose this platform because of React's ability to client-side render the HTML along with the asynchronous functionality of Javascript.
Demo: https://philipk19238.github.io/botomat/
Use any language to complete this challenge. The implementation is up to you: it can be a command-line application or have a graphical interface.
Your application should collect a name and robot type from the types we list below. For each, it should create a Robot of the type the user chooses, e.g. Larry, Bipedal.
Given the list of tasks below, your application should then assign the Robot a set of five tasks, all of which complete after a duration that we show in milliseconds.
- Collect a name and robot type from user.
- Instantiate a Robot of the type provided by the user with the name provided by the user
- for example: Bipedal, Larry
- Set up methods on Robot to complete tasks from the provided list
Robot completes tasks and removes them from the list when they are done (i.e. enough time has passed since starting the task).
Tasks have a description and an estimated time to complete.
[
{
description: 'do the dishes',
eta: 1000,
},{
description: 'sweep the house',
eta: 3000,
},{
description: 'do the laundry',
eta: 10000,
},{
description: 'take out the recycling',
eta: 4000,
},{
description: 'make a sammich',
eta: 7000,
},{
description: 'mow the lawn',
eta: 20000,
},{
description: 'rake the leaves',
eta: 18000,
},{
description: 'give the dog a bath',
eta: 14500,
},{
description: 'bake some cookies',
eta: 8000,
},{
description: 'wash the car',
eta: 20000,
},
]
{
UNIPEDAL: 'Unipedal',
BIPEDAL: 'Bipedal',
QUADRUPEDAL: 'Quadrupedal',
ARACHNID: 'Arachnid',
RADIAL: 'Radial',
AERONAUTICAL: 'Aeronautical'
}
Be creative and have fun! Use this list or create your own features.
- Allow users to create multiple robots at one time
- Create a leaderboard for tasks completed by each Robot
- Create tasks specific for each robot type, this could work in conjunction with the leaderboard. For e.g. robots that are assigned tasks that their type can’t perform won’t get “credit” for finishing the task.
- Add persistance for tasks, bots and leaderboard stats
- Scott Hoffman https://github.com/scottshane
- Olivia Osby https://github.com/oosby
In the project directory, you can run:
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
Note: this is a one-way operation. Once you eject
, you can’t go back!
If you aren’t satisfied with the build tool and configuration choices, you can eject
at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject
will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
You don’t have to ever use eject
. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.