我需要检查特定数字序列的接收,例如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](http://codereview.stackexchange.com/tour)找到更好的运气。请记住阅读[他们的要求](http://codereview.stackexchange.com/help/on-topic),因为它们比这个网站更严格。 – DavidG
听起来类似于[this](http://stackoverflow.com/q/7693992/1997232)(不幸未回答)问题。 – Sinatr
这个问题看起来很适合[Code Review.SE](http://codereview.stackexchange.com/),前提是(a)你希望检查代码的每个方面,而不仅仅是一些, (b)你的代码已经在工作_(c)你正在要求检查_concrete,真正的code_,而不是抽象的设计(不管它是否被表示为代码)。如果您同意所有这些内容,请阅读[主题内容](http://codereview.stackexchange.com/help/on-topic),如果您的问题符合要求,请在此处将其删除并重新发布到CR 。 – Phrancis