Код Senior Реализация с нуля обновлено

Контраст цветов

Условие

contrastRatio(hex1, hex2) по формуле WCAG: относительная яркость через линеаризацию каналов, отношение (L1 + 0.05) / (L2 + 0.05). Поддержи короткую запись #abc. Верни число, округлённое до сотых.

Что проверяют тесты

  • чёрное на белом

  • одинаковые цвета

  • порядок не важен

  • короткая запись

  • серый на белом проходит для крупного текста

Как подойти

Формула из WCAG, и знать её наизусть не требуется - требуется понимать, что контраст считается не по разнице RGB, а по относительной яркости с гамма-коррекцией и разными весами каналов. Пороги: 4.5:1 для обычного текста, 3:1 для крупного и элементов интерфейса. Это то, что превращает «сделай посветлее» в проверяемое требование.

Подсказки: 3
  1. Каналы надо линеаризовать - простое среднее яркости неверно.
  2. Зелёный вносит в яркость больше половины веса.
  3. Больший результат всегда делится на меньший, поэтому порядок аргументов не важен.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.