int main2() { const int max = 128; char s[max]; while (read_word(cin, s, max)) { cout << s << " is"; if (! is_palindrome2(s, strlen(s))) cout << " not"; cout << " a palindrome\n"; } }
constexpr std::tuple<T, T, T> largest_square_palindrome(const T & max) { static_assert(std::is_integral<T>::value, "T can only be integral"); T one = 0; T two = 0; T res = 0; for (T lhs = max; lhs * max > res; --lhs) { for (T rhs = max; rhs > lhs; --rhs) { const auto product = lhs * rhs; if (product > res && is_palindrome2(product)) { one = lhs; two = rhs; res = product; } } } return std::make_tuple(res, one, two); }
int main() { { Node * p1 = new Node( 'a' ); Node * p2 = new Node( 'b' ); Node * p3 = new Node( 'c' ); Node * p4 = new Node( 'd' ); Node * p5 = new Node( 'c' ); Node * p6 = new Node( 'b' ); Node * p7 = new Node( 'a' ); p1->next = p2; p2->next = p3; p3->next = p4; p4->next = p5; p5->next = p6; p6->next = p7; std::cout << is_palindrome( p1 ) << std::endl; std::cout << is_palindrome2( p1 ) << std::endl; std::cout << is_palindrome3( p1 ) << std::endl; } { Node * p1 = new Node( 'a' ); Node * p2 = new Node( 'b' ); Node * p3 = new Node( 'c' ); Node * p4 = new Node( 'c' ); Node * p5 = new Node( 'b' ); Node * p6 = new Node( 'a' ); p1->next = p2; p2->next = p3; p3->next = p4; p4->next = p5; p5->next = p6; std::cout << is_palindrome( p1 ) << std::endl; std::cout << is_palindrome2( p1 ) << std::endl; std::cout << is_palindrome3( p1 ) << std::endl; } { Node * p1 = new Node( 'a' ); Node * p2 = new Node( 'b' ); Node * p3 = new Node( 'a' ); p1->next = p2; p2->next = p3; std::cout << is_palindrome( p1 ) << std::endl; std::cout << is_palindrome2( p1 ) << std::endl; std::cout << is_palindrome3( p1 ) << std::endl; } { Node * p1 = new Node( 'a' ); Node * p2 = new Node( 'a' ); p1->next = p2; std::cout << is_palindrome( p1 ) << std::endl; std::cout << is_palindrome2( p1 ) << std::endl; std::cout << is_palindrome3( p1 ) << std::endl; } { Node * p1 = new Node( 'a' ); std::cout << is_palindrome( p1 ) << std::endl; std::cout << is_palindrome2( p1 ) << std::endl; std::cout << is_palindrome3( p1 ) << std::endl; } { std::cout << is_palindrome( nullptr ) << std::endl; std::cout << is_palindrome2( nullptr ) << std::endl; std::cout << is_palindrome3( nullptr ) << std::endl; } return 0; }