一个counterstring是某种形式是在软件测试中使用自描述的测试数据。不知道它实际上是James Bach发明的,但我从那里知道。
想法如下:测试数据包含许多星号(*
)。星号前面的数字告诉您此时的测试数据有多长时间。如果您需要知道测试数据中不是星号的位置,请找到最后一个星号,查看前面的数字,然后加上后面的数字。
序列开始如下:
2*4*6*8*11*14*17*20*23*
^
如您所见,标记的星号位于位置14。
如果文件碰巧被截断,如下所示
[...]2045*20
那么你就可以得到,有2047个字符的地方(2045其中星号是加2的限制2
和0
)。
创建最短的程序(这是code-golf)是您的任务,该程序输出(std :: out或file或其他文件)该格式的任意长测试字符串。以字符为单位的长度作为参数给出。该程序最多应支持2 GB的测试数据(输入值2147483647字符)。
2 GB文件中的“危险”位置:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
如果决定在995 * 999 *和995 * 1000 *或类似范围内做出决定,这应该回答@Leaky Nun的问题:否。
输入值为2147483647的2 GB文件的末尾是:
2147483640*2147483
995*999*
和之间选择995*1000*
吗?