Minha escola e muitos outros implementam um tipo de programação chamada de Rotating Block Schedule. É uma maneira de as pessoas terem 8 aulas, mas terem 6 períodos em um dia escolar.
Há quatro dias em um cronograma de blocos que se repetem sem parar e não têm nada a ver com os dias reais da semana. Cada um recebe um número [1-4]
.
A forma como o cronograma funciona é que você listar todas as suas aulas de manhã, períodos 1-4
: [1, 2, 3, 4]
. Esta é a sua programação para o primeiro dia, ou dia 1. O resto dos dias basta girar a lista: [2, 3, 4, 1]
, [3, 4, 1, 2]
, [4, 1, 2, 3]
.
No entanto, o último período da manhã é "descartado" e você não vê esse professor naquele dia. Por isso, os dias são: [1, 2, 3]
, [2, 3, 4]
, [3, 4, 1]
, [4, 1, 2]
.
A tarde é o mesmo, exceto que ele usa períodos 5-8
em vez disso: [5, 6, 7]
, [6, 7, 8]
, [7, 8, 5]
, [8, 5, 6]
.
Sua tarefa
É difícil acompanhar todo esse giro, então você precisa escrever um programa para imprimir minha programação, considerando o dia em que é como entrada. Seu código deve colocar Homeroom e Lunch nos pontos corretos. Aqui está a saída exata que seu código precisa ter para entradas 1-4
:
Homeroom Homeroom Homeroom Homeroom
Period 1 Period 2 Period 3 Period 4
Period 2 Period 3 Period 4 Period 1
Period 3 Period 4 Period 1 Period 2
Lunch Lunch Lunch Lunch
Period 5 Period 6 Period 7 Period 8
Period 6 Period 7 Period 8 Period 5
Period 7 Period 8 Period 5 Period 6
Mas espere - mais uma coisa!
Às vezes, no primeiro dia de aula ou em outros dias especiais, minha escola tem um "Dia 0". Isso significa apenas que terei todas as minhas aulas naquele dia, junto com a sala de aula e o almoço. Seu código terá que lidar com o dia 0. Aqui está a saída para um dia 0:
Homeroom
Period 1
Period 2
Period 3
Period 4
Lunch
Period 5
Period 6
Period 7
Period 8
Este é o código-golfe, pelo que o código mais curto em bytes vence!
1, 2, 3, 5, 6, 7
?