#include #include #include #include #include #include #include #include #include #include using namespace std; class TopBiologist { public: string findShortestNewSequence(string sequence); }; string TopBiologist::findShortestNewSequence(string sequence) { int l, n; string letters = "ACGT"; int i, j, k, top; string totest; n = letters.size(); /* Keep enumerating this for successively larger strings. */ for (l = 1; true; l++) { /* Calculate n^l */ top = 1; for (i = 0; i < l; i++) top *= n; /* Enumerate each string, and see if it is sequence. If not, return it. */ for (i = 0; i < top; i++) { j = i; totest.clear(); for (k = 0; k < l; k++) { totest.push_back(letters[j%n]); j /= n; } if (sequence.find(totest) == string::npos) return totest; } } return ""; }