Bonev 序列
Bonev 序列以保加利亚数学家 Georgi Bonev 的名字命名,是由正整数组成的数字序列,它具有以下两个特征:
1. 序列以“1”或“2”开始和结束。
2. 序列中相邻数字之间的绝对差为 0 或 1。
问题描述:编写一个多线程程序,生成给定长度的 Bonev 序列并对所有序列进行统计和分类。序列的长度由命令行上的整数指定,另外此命令行上还会提供一个文件名,用于保存应用程序生成的 Bonev 序列。这些序列将根据起始数字和结束数字进行分类。因此,它们可分为以下四类:
• 1-1 (以“1”开始,以“1”结束)
• 1-2 (以“1”开始,以“2”结束)
• 2-1 (以“2”开始,以“1”结束)
• 2-2 (以“2”开始,以“2”结束)
输入描述:程序的输入内容包括正整数和文件名,这两者都将在应用程序的命令行中输入。整数表示要生成和统计的 Bonev 序列的长度。文件名所指定的文件将用于保存应用程序生成的 Bonev 序列。
输出描述:应用程序将生成两个输出。第一个输出是每一类序列的数字个数以及所有序列的总数字个数。程序报告的数字将打印到标准输出。
第二个预期输出是列出所有生成的序列,这些序列包含在一个给定的文本文件中,每个序列占一行。为使文件中所有输出行的长度相同,如果生成的序列中包含大于 9 的数字,则使用大写字母作为占位符。如果序列中包含值“10”,则使用“A”;如果包含“11”,则使用“B”,依此类推。以长度为 18 的输出序列“123456789A98765432”为例。采用这种方法就不必在序列元素之间加空格,还可以减小文件大小。
输入命令行示例:bonev.exe 3 bonev3.txt
输出(屏幕)示例:
Number of length 3 Bonev Sequences
1-1 sequences: 2
1-2 sequences: 2
2-1 sequences: 2
2-2 sequences: 3
Total 9
输出(文件)示例, bonev3.txt:
111
222
121
112
211
221
122
212
232