【发布时间】:2015-12-11 23:33:37
【问题描述】:
我需要检查特定数字序列的接收,例如 3,3,3,2,2,3,但是这个重复序列可以从不同的位置开始,例如 3,3,3,3,2, 2
我创建了一个环形缓冲区,用于存储接收到的数字并与所有可能的序列进行比较
class MFMSequence {
int _index = 0;
int[] _buffer = new int[6];
public void add(int value) {
_buffer[_index] = value;
_index = (_index + 1) % 6;
}
public bool is4e() {
return (_buffer.SequenceEqual(new int[] { 3, 3, 3, 2, 2, 3 }) ||
_buffer.SequenceEqual(new int[] { 3, 3, 3, 3, 2, 2 }) ||
_buffer.SequenceEqual(new int[] { 2, 3, 3, 3, 3, 2 }) ||
_buffer.SequenceEqual(new int[] { 2, 2, 3, 3, 3, 3 }) ||
_buffer.SequenceEqual(new int[] { 3, 2, 2, 3, 3, 3 }) ||
_buffer.SequenceEqual(new int[] { 3, 3, 2, 2, 3, 3 }));
}
public bool is00() {
return (_buffer.SequenceEqual(new int[] { 2, 2, 2, 2, 2, 2 }));
}
}
这是可行的,但我觉得它很难看!关于如何更优雅地编码的任何想法
【问题讨论】:
-
您的代码目前似乎可以运行,并且您正在寻求改进它。一般来说,这些问题对于本网站来说过于固执己见,但您可能会在CodeReview.SE 找到更好的运气。记得阅读their requirements,因为他们比这个网站更严格。
-
听起来类似于this(很遗憾没有回答)问题。
-
这个问题看起来可能非常适合Code Review.SE,前提是 (a) 您希望审查代码的每个方面,而不仅仅是一些,( b) 您的代码已经在工作,并且 (c) 您要求审查具体的、真实的代码,而不是抽象设计(无论它是否表示为代码)。如果您同意所有这些,请阅读what's on topic,如果您的问题符合,请在此处删除并重新发布到 CR。
标签: c#