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