Sha256: 37c089b48f02730463c22371f5b542c355c8caa379d5ab6cdb30f7a71e6d56f5
Contents?: true
Size: 1.8 KB
Versions: 110
Compression:
Stored size: 1.8 KB
Contents
# Diamond The diamond kata takes as its input a letter, and outputs it in a diamond shape. Given a letter, it prints a diamond starting with 'A', with the supplied letter at the widest point. ## Requirements * The first row contains one 'A'. * The last row contains one 'A'. * All rows, except the first and last, have exactly two identical letters. * All rows have as many trailing spaces as leading spaces. (This might be 0). * The diamond is horizontally symmetric. * The diamond is vertically symmetric. * The diamond has a square shape (width equals height). * The letters form a diamond shape. * The top half has the letters in ascending order. * The bottom half has the letters in descending order. * The four corners (containing the spaces) are triangles. ## Examples In the following examples, spaces are indicated by `·` characters. Diamond for letter 'A': ```plain A ``` Diamond for letter 'C': ```plain ··A·· ·B·B· C···C ·B·B· ··A·· ``` Diamond for letter 'E': ```plain ····A···· ···B·B··· ··C···C·· ·D·····D· E·······E ·D·····D· ··C···C·· ···B·B··· ····A···· ``` ## Hints - Testing this one can be tricky without simply hardcoding a bunch of inputs and outputs. [Property based testing](https://fsharpforfunandprofit.com/posts/property-based-testing/) is another way to think about testing that allows you to more easily test this type of algorithm. The test suite uses the [FsCheck](https://fscheck.github.io/FsCheck/) property-based testing framework to define the tests. ## Source Seb Rose [http://claysnow.co.uk/recycling-tests-in-tdd/](http://claysnow.co.uk/recycling-tests-in-tdd/) ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise.
Version data entries
110 entries across 110 versions & 1 rubygems