Flexbox: Alternar "linha" e "linha inversa" de acordo com o número da linha

Estou tentando criar um layout responsivo com o Flexbox que permita alternar as duas direçõesrow erow-reverse.

Talvez você possa entender melhor com alguma imagem (lembre-se da ordem das caixas):

E redimensionando:

Ou ainda:

Você pode imaginar uma flecha que atravessa cada caixa; deve ser possível passar de 1 a 8 seguindo a sequência de números (como uma cobra).

Como consegui-lo usando o flexbox?

Eu acho que posso usar oorder Propriedade CSS, mas sinto falta de uma maneira dinâmica de defini-la. Eu não acho que posso alcançar esse resultado com JavaScript, pois não há como obter o número da linha dinâmica (exceto com hacks feios, e eu quero evitá-los). Então, você tem alguma ideia?

Obrigado.

Se você deseja escrever um exemplo com base no meu código, pode usar o seguinte:

.flexbox-container {
  display: flex;
  flex-wrap: wrap;
}

.flex-item {
  width: 380px;
  height: 100px;
  background: red;
  margin: 5px;
  
  font-family: sans-serif;
  color: white;
  text-align: center;
  font-size: 2em;
  line-height: 150%;
}
<div class="flexbox-container">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
  <div class="flex-item">4</div>
  <div class="flex-item">5</div>
  <div class="flex-item">6</div>
  <div class="flex-item">7</div>
  <div class="flex-item">8</div>
</div>

questionAnswers(2)

yourAnswerToTheQuestion