甲茎叶情节显示在组一串数值的,这是由所有,但最后一位决定。例如,假设我们有以下数据集:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
我们可以生成此茎叶图:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
第一行的主干为0,因此其“叶子”(位于-之后的数字)|
代表0(含0)和10(不含)之间的值。每个茎上的叶子都经过分类。没有叶子的茎(如3)仍出现在图中。101的值在100包含和110之间,因此它的词干为10(100除以10)。
您面临的挑战是检查一段文字是否是有效的茎叶图。有效地块满足以下规则:
- 数据范围内的每个茎(即10个宽的组)正好有一行(包括中间没有叶子的茎)
- 没有茎超出范围
- 所有叶子按升序排列
- 所有茎都按升序排列
- 仅包含数字字符(除分隔符外
|
)
您不必处理具有小数部分的数字。您可以批准或拒绝词干中多余的前导零,但不允许使用空白词干。至少会有一个值。您只能在每行的叶子后面假设多余的空格。您可以假设前导和/或尾随换行符。所有字符均为可打印ASCII。
您的函数或程序应返回或输出(到屏幕或标准输出)有效绘图的真实值,或无效绘图的错误值。您可以将标准输入,文件中的输入当作一个大字符串,作为一个字符串数组-最为方便。
以下是一些有效的测试用例(用空行分隔):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
这是一些无效的测试用例,在右边有注释:
|0 Blank stem
5|347 Missing a stem (6) in the range
7|9
4| Has a stem (4) outside the range
5|26
6|7
11|432 Leaves aren't sorted correctly
12|9989
5|357 Stems aren't sorted correctly
4|002
6|1
4|5 Duplicate stem
4|6
4|6
5|1
51114 No stem and leaf separator
609
1|2|03 Multiple separators
2|779|
4|8abcdefg9 Invalid characters
5|1,2,3
75 | 4 6 Invalid characters (spaces)
76 | 2 8 8 9
这是代码高尔夫球,所以最短的代码获胜!不允许出现标准漏洞。
出色的第一个挑战!
—
AdmBorkBork
不错的第一个挑战。您可能要添加的一个测试用例
—
凯文·克鲁伊森
4|;5|26;6|7
与第一个词干超出范围但在结尾处(即)相似12|3;13|4559;14|
。
1|2|3
。