#include #include #include #include #include #include #include #include #define BIT_MASK 0xDEADBEAF #define MULTILINE_DEF(a,b) if ((a)>2) { \ auto temp = (b)/2; \ (b)+=10; \ someFunctionCall((a),(b));\ } namespace LevelOneNamespace { extern auto someFunctionCall(int16_t, float *) -> int; namespace LevelTwoNamespace { template bool is_sorted(T(&array)[size]) { return std::adjacent_find(array, array + size, std::greater()) == array + size; } std::vector returnVector( uint32_t* LongNameForParameter1, double* LongNameForParameter2, const float& LongNameForParameter3, std::map& LongNameForParameter4) { //TODO: This is a long comment that allows you to understand how long comments will be trimmed. Here should be deep thought but it's just not right time for this for (auto& i: LongNameForParameter4) { auto b = someFunctionCall(static_cast(*LongNameForParameter2),reinterpret_cast(LongNameForParameter2)); i.second++; } do { auto a = 100; if (a) a--; else a++; } while (false); return {}; } } } int main() { std::srand(std::time(0)); int list[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; using LevelOneNamespace::LevelTwoNamespace::is_sorted; do { std::random_shuffle(list, list + 9); } while (is_sorted(list)); int score = 0; do { std::cout << "Current list: "; std::copy(list, list + 9, std::ostream_iterator(std::cout, " ")); int rev; while (true) { std::cout << "\nDigits to reverse? "; std::cin >> rev; if (rev > 1 && rev < 10) break; std::cout << "Please enter a value between 2 and 9."; } ++score; std::reverse(list, list + rev); } while (!is_sorted(list)); std::cout << "Congratulations, you sorted the list.\n" << "You needed " << score << " reversals." << std::endl; return 0; }