---

name: Отрицание
theory: |

  Наряду с конъюнкцией (И) и дизъюнкцией (ИЛИ), часто используется операция «отрицание». Отрицание меняет логическое значение на противоположное. В программировании ему соответствует унарный оператор `!`.

  Если есть функция, проверяющая чётность числа, то с помощью отрицания можно выполнить проверку нечётности:

  ```php
  <?php

  function isEven($number)
  {
      return $number % 2 === 0;
  }

  isEven(10);  // true
  !isEven(10); // false
  ```

  То есть мы просто добавили `!` слева от вызова функции и получили обратное действие. Отрицание — мощный инструмент, который позволяет лаконично выражать задуманные правила в коде без необходимости писать новые функции.

  А что если написать так `!!isEven(10)`? Внезапно, но код сработает. В логике двойное отрицание подобно отсутствию отрицания вообще.

  ```php
  <?php

  isEven(10);   // true
  !isEven(10);  // false
  !!isEven(10); // true
  ```

instructions: |
  
  В этом уроке вам нужно будет реализовать две функции `isPalindrome()` и `isNotPalindrome()`

  1. Функция `isPalindrome()` определяет, является ли слово палиндромом или нет. Палиндром это слово, которое читается одинаково в обоих направлениях.

      ```php
      <?php

      isPalindrome('wow'); // true
      isPalindrome('mom'); // true
      isPalindrome('hexlet'); // false

      // Слова в функцию могут быть переданы в любом регистре
      // Поэтому сначала нужно привести слово в нижний регистр strtolower()
      isPalindrome('Wow'); // true
      ```

      Для того чтобы развернуть слово задом наперёд используйте функцию `strrev()`.

  2. Функция `isNotPalindrome()` проверяет что слово НЕ является палиндромом:

      ```php
      <?php

      isNotPalindrome('wow'); // false
      isNotPalindrome('mom'); // false
      isNotPalindrome('hexlet'); // true
      ```

      Для этого, вызовите функцию `isPalindrome()` внутри `isNotPalindrome()` и примените отрицание.

tips:
  - |
    [Законы Де Моргана](https://ru.wikipedia.org/wiki/Законы_де_Моргана)
