Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
dmitrigrabov committed Sep 18, 2018
1 parent fb1af61 commit 28c4078
Showing 1 changed file with 14 additions and 22 deletions.
36 changes: 14 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
> **Pair programming exercise**
> **Pair programming**
>
> * Fork and clone repo
> * Fork and clone repo this repo
> * run `npm install` after cloning to download external dependencies
> * Write a solution to each exercise and a corresponding test which ensures correctness of solution
> * Try to write the test before writing the solution. This will force you to think closely about the task
> * One person should be writing the test and another the solution. Alternate roles after each exercise
> * For some tests you may have to write several test cases to make sure all edge cases are covered
> * Create at least two test for each question to cover different inputs and outputs
> * Run `npm test` regularly to ensure your tests pass
> * Commit and push after each solution created
> * Create a pull request after first push
>
> * To run all tests in the background continuously you can do so using `npm test -- --watchAll`

> **Exercises**
>
> * `longestString` - Write a function which receives an array of strings. It should return the longest string from the array
>
Expand All @@ -24,25 +26,15 @@
> 9. `q` with number 9
> 10. `o` with number 0
> * `uniqueStrings` - Write a function which receives an array of strings. It should return an array of unique strings from the input array
> * `developer` - Write a function a constructor called `Developer` which receives 2 parameters an input string containing name and an array of programming languages the developer knows
> * `inherit` - using prototypal inheritance add a function called learn language, which accepts a new language in string format and adds it to array of programming languages the developer knows. The values in array should be unique
> * `garden` - create a constructor called Garden. It should receive an object as input which contains names of plants as keys and numbers as corresponding quantities as values. We want to set each plant name as a key on our new object and the quantity as corresponding value.
> ```js
> // plants
> {
> roses: 10,
> carnations: 13,
> tulips: 7
> }
> ```
> * `extend` - using prototypal inheritance add a method called `plant` which receives an object of plants and corresponding quantities as keys and adds them to current stock
> * `harvest` - using prototypal inheritance add a method called harvest to Garden. It should receive and object which contains plant names as keys and quantities to harvest as values. Reduce the quantity of existing plants in garden by the number of plants to be harvested. If number of certain plant falls to 0 or below. Remove the corresponding key from object
> * `developer` - Create a constructor called `Developer` which receives 2 parameters an input string containing name and an array of programming languages the developer knows
> * `learn` - using prototypal inheritance add a method to `Developer` called `learnLanguage`, which accepts a new language in string format and adds it to array of programming languages the developer knows. The values in array should be unique.
> * `stringsConcat` - Write a function which receives an array of strings and numbers. The function should concatenate all strings and return the resulting string.
> * `negativeOnly` - Write a function which receives one array of positive and negative numbers. It should return an array containing only the negative numbers
> * `camelise` - Write a function which receive a string of lower case, space separated words. It should convert the string to camel case. That is capitalise the first letter of every word except the first and remove all spaces
> * `merging` - Write a function which receives an array of objects. It should merge them into a single object. The objects with fewer values should take precedence over objects with more values. The input objects should remain unaffected, by the merge. For example input `[{a: 5}, {a: 3, b: 21, c:32}]` to `{a:5, b:21, c:32}`
> * `possibleValues` - Write a function which receives an array of objects. Your function should output an object which contains all the keys from input objects. The corresponding value of each key should be an array which contains a list of all values the corresponding key had in all input objects. Values should be unique. For example `[{a: 5}, {a: 3, b: 21, c:32}, {a: 3, c:32}]` to `{a:[5,3], b:[21], c:[32]}`
> **Stretch goals**
>
> * `isPrime` - Write a function which receives an integer an returns `true` if the input is a prime number, `false` otherwise
> * `walkabout` - write a constructor called Walker. It should receive one parameter, a string which is either 'N', 'S', 'E' or 'W' which indicates the direction the walker is facing. Walker's initial coordinates should be (0,0), where the first coordinate represents the x coordinate (horizontal) and the second coordinate represents y coordinate (vertical).
> * `walkabout` - create a constructor called `Walker`. Walker's initial coordinates should be (0,0), where the first coordinate represents the x coordinate (horizontal) and the second coordinate represents y coordinate (vertical).
> * Add a `walk` method to `Walker` using its prototype which accepts a direction as a string and a number representing the number of steps to be taken. When called the walker should update its coordinates and add the move made to its journey history. The journey history should be stored using coordinates representing the location at the end of each move.
> * Add a `pathTaken` method to `Walker` using its prototype. It should output the journey taken taken as a list of coordinates

0 comments on commit 28c4078

Please sign in to comment.