Skip to content

Instantly share code, notes, and snippets.

@tnip
Last active March 25, 2019 19:50
Show Gist options
  • Save tnip/fec57383ad155335b3b0a177ef76d6b9 to your computer and use it in GitHub Desktop.
Save tnip/fec57383ad155335b3b0a177ef76d6b9 to your computer and use it in GitHub Desktop.
bool hasDoubleDecker(values) {
if (values == null || values.length < 5) {
return false;
}
for (var i = 0; i < values.length - 4; i++) {
if (values[i] == values[i + 2] &&
values[i] == values[i + 4] &&
values[i + 1] == values[i + 3]) {
return true;
}
}
return false;
}
bool cleanerHasDoubleDecker(values) {
if (values == null || values.length < 5) {
return false;
}
for (var i = 0; i < values.length - 4; i++) {
if (values[i] == values[i + 2] &&
values[i] == values[i + 4] &&
values[i + 1] == values[i + 3]) {
return true;
} else {
if (values[i] != values[i + 2]) {
i++;
} else if (values[i + 1] != values[i + 3]) {
i += 2;
} else if (values[i] != values[i + 4]) {
i += 3;
}
}
}
return false;
}
int longestDoubleDecker(values) {
if (values == null || values.length < 5) {
return 0;
}
var longestDoubleDecker = 0;
var currentDoubleDeckerCount = 0;
for (var i = 0; i < values.length - 4; i++) {
if (hasDoubleDecker(values.sublist(i, i + 5))) {
currentDoubleDeckerCount++;
if (currentDoubleDeckerCount > longestDoubleDecker) {
longestDoubleDecker = currentDoubleDeckerCount;
}
} else {
currentDoubleDeckerCount = 0;
}
}
return longestDoubleDecker;
}
main() {
print('hasDoubleDecker');
print(hasDoubleDecker(null));
print(hasDoubleDecker([0]));
print(hasDoubleDecker([0, 1, 0, 1]));
print(hasDoubleDecker([0, 1, 0, 1, 0]));
print(hasDoubleDecker([0, 1, 0, 1, 0, 1]));
print(hasDoubleDecker([0, 1, 0, 1, 2, 1]));
print(hasDoubleDecker([0, 1, 2, 3, 2, 3, 2, 3, 1]));
print(hasDoubleDecker([0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 4]));
print('');
print('cleanerHasDoubleDecker');
print(cleanerHasDoubleDecker(null));
print(cleanerHasDoubleDecker([0]));
print(cleanerHasDoubleDecker([0, 1, 0, 1]));
print(cleanerHasDoubleDecker([0, 1, 0, 1, 0]));
print(cleanerHasDoubleDecker([0, 1, 0, 1, 0, 1]));
print(cleanerHasDoubleDecker([0, 1, 0, 1, 2, 1]));
print(cleanerHasDoubleDecker([0, 1, 2, 3, 2, 3, 2, 3, 1]));
print(cleanerHasDoubleDecker([0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 4]));
print('');
print('longestDoubleDecker');
print(longestDoubleDecker(null));
print(longestDoubleDecker([0]));
print(longestDoubleDecker([0, 1, 0, 1]));
print(longestDoubleDecker([0, 1, 0, 1, 0]));
print(longestDoubleDecker([0, 1, 0, 1, 0, 1]));
print(longestDoubleDecker([0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1]));
print(longestDoubleDecker([0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 2]));
print(longestDoubleDecker([2, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 2]));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment