Пример #1
0
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";
  }
}
Пример #2
0
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);
}
Пример #3
0
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;
}