我需要檢查特定數字序列的接收,例如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