Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
7 views

Tech Coding Challenge

Uploaded by

sribd
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Tech Coding Challenge

Uploaded by

sribd
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

Thanks for taking the time to complete this technical challenge.

We think it is an
interesting problem to solve, and hope you agree!

Please take some time to go through it, and build a solution you will be proud to
discuss and show to other developers. Whilst we would like to receive solutions as
soon as possible, we understand people have other commitments – we would rather you
take enough time to produce your best attempt, than rush to submit something less
than that.

Here are some general instructions on how to approach this exercise:


• Please complete the exercise using whichever programming language you are most
comfortable with
• Add a readme file with instructions on how to run the program
• If there are special cases etc, that are not covered as part of the requirement,
please make your own decision on how this should be handled
• If you do make assumptions, please detail why you made them in the readme file

Both the test and implementation code will be assessed. This will be primarily, but
not solely, based upon:
• How comprehensively the code is tested
• The design choices made when implementing the solution (maintainability,
legibility, refactorability, extensibility.)
• Exception and special case handling
You should aim to implement to a level where you would be happy to have somebody
look at it and judge your result.

*** The Problem ***

__Description__

You're given the task of writing a simple console version of a drawing program.
At this time, the functionality of the program is quite limited but this might
change in the future.
In a nutshell, the program should work as follows:
1. Create a new canvas
2. Start drawing on the canvas by issuing various commands
3. Quit

Command Description
C w h Should create a new canvas of width w and height h.
L x1 y1 x2 y2 Should create a new line from (x1,y1) to (x2,y2). Currently only
horizontal or vertical lines are supported. Horizontal and vertical
lines
will be drawn using the 'x' character.
R x1 y1 x2 y2 Should create a new rectangle, whose upper left corner is (x1,y1)
and
lower right corner is (x2,y2). Horizontal and vertical lines will
be drawn
using the 'x' character.
B x y c Should fill the entire area connected to (x,y) with "colour" c. The
behavior of this is the same as that of the "bucket fill" tool in
paint
programs.
Q Should quit the program.

__Sample I/O__
Below is a sample run of the program. User input is prefixed with enter command:

enter command: C 20 4
----------------------
| |
| |
| |
| |
----------------------

enter command: L 1 2 6 2
----------------------
| |
|xxxxxx |
| |
| |
----------------------

enter command: L 6 3 6 4
----------------------
| |
|xxxxxx |
| x |
| x |
----------------------

enter command: R 14 1 18 3
----------------------
| xxxxx |
|xxxxxx x x |
| x xxxxx |
| x |
----------------------

enter command: B 10 3 osouthEastCpm


----------------------
|oooooooooooooxxxxxoo|
|xxxxxxooooooox xoo|
| xoooooooxxxxxoo|
| xoooooooooooooo|
----------------------

enter command: Q

You might also like