Skip to content

Main Idea & Strategy

Romutchio edited this page Mar 30, 2019 · 1 revision

Идея

Чтобы освоить оценку сложности алгоритмов разным людям требуется разное количество практики. Некоторые схватывают уже после 2-3 примеров. Некоторым нужно прорешать штук 10.

Идея: сделать бота для телеграмма, в котором каждый сможет упражняться столько, сколько ему нужно. Бот должен генерировать каждый раз новые задания, постепенно увеличивая уровень сложности.

Механика

  1. Все задания разбиты на уровни. Уровень определяет тему заданий. Чтобы пройти уровень, нужно заполнить прогрессбар уровня до конца. Level 1️⃣. Progress: 🔘🔘🔘🔘⚫️https://changaco.oy.lc/unicode-progress-bars/ 
  2. Внутри уровня много генераторов. Каждый генератор объявляет сколько ячеек прогресс бара он добавляет. Корректный ответ — +1, Ошибка — -1, но только если правильных ответов на задачи этого генератора больше, чем неправильных.
  3. Прохождение уровня может открывать возможность прохождения других уровней.
  4. В любой момент можно перейти на любой из открытых уровней и продолжить упражняться там.
  5. При неудачном ответе можно запросить объяснения. Объяснения могут становиться подробнее с каждым разом.

Реализация

Все задания разбиты на темы. Внутри тема разбивается на уровни сложности. Чтобы пройти уровень, нужно набрать достаточное количество очков — заполнить прогрессбар уровня до конца.

Архитектура

  • Уровень — это набор генераторов.

  • Генератор умеет генерировать код, правильный ответ и список возможных вариантов ответа, объяснения.

  • Генератор должен быть максимально общим. Но при этом должна быть простая реализация по шаблону, примерно такому:

      for(var $var$=0; $var$<n; $var$ $inc$)
      	c++;
      var: one of [i, k, j, index]
      inc: one of [++ +=1 +=2 +=3]
      answer: Θ(n)
    
  • Генерация вариантов ответов:

    1. Сложность других генераторов в этом уровне.
    2. Чуть-чуть отличающаяся сложность от правильной
    3. Неправильный вариант ответа, который чаще выбирают статистически.