Адаптивная плиточка без отступов в CSS

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

Напишем сначала HTML код:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
  <div class="child">9</div>
  <div class="child">10</div>
  <div class="child">11</div>
  <div class="child">12</div>
</div>

Давайте теперь добавим стили родителю блоков:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}

Теперь зададим стили самим блокам, не задавая им ширину:

css.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

Очевидно, что ширина блоков должна быть в процентах, чтобы при изменении экрана блоки плавно меняли свою ширину. При этом в определенных точках экрана мы должны менять ширину блоков так, чтобы в ряд помещалось определенное количество этих блоков.

Давайте напишем код, который поставит четыре блока в ряд:

css@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}

А теперь поставим три блока в ряд:

css@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}

А теперь поставим два блока в ряд:

css@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}

Один блок в ряд:

css@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}

Давайте соберем весь код вместе:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}
.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}
@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}
@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}
@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}
Задание 1

Переделайте мой код так, чтобы ширина блоков вычислялась через функцию calc.

Задание 2

Сделайте плитку, которая при уменьшении экрана будет сначала четыре элемента в ряд, потом два элемента в ряд, а потом один элемент в ряд.

Задание 3

Сделайте плитку, которая при уменьшении экрана будет сначала шесть элементов в ряд, потом три элемента в ряд, а потом один элемент в ряд.