Assumptions:
-
Function returns a list of strings.
-
Unless a requirement specifies spaces, it is intented to ignore them (e.g., "list is surrounded by an initial and an ending
a" assumes that in this test any space in the initial and ending line is ignored. -
The order of requirements matter, as it influences the implementation.
-
Requirements are not stricly independent: e.g., 8,10,11,12,13,14 imply 15; 7 and 17 are equivalent.
-
As new requirements are introduced, they complement rather than replace existing ones, which keep being valid.
-
It is indeed possible to design requirements in a way that new specifications replace and supersede certain existing ones. That's not the case of the following requirements.
- contains only chars up to target
- contains all of them
- distributed in 2 times minus 1 lines
- no line is empty
- in first half all lines are disjointed (they don't contain the same characters)
- first half is sorted
- the whole list is vertically symmetric
- each letter but extremes are repeated twice
- each line is a palyndrom
- center element contains no surrounding spaces
- peripheral elements contains no inner spaces
- each line contains 1 leading space more than the next one
- each line contains 1 trailing space more than the next one
- each line contains 2 inner spaces less than the next one
- all lines have the same length
- The whole list is surrounded by
a - halves are symmetric (duplicates 7)
- all lines have an odd length