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
?Respostas:
Boneco de neve 1.0.2 , 190 bytes
A coluna mais à esquerda realmente parece muito legal, não é?
...
... quem eu estou brincando, eu prefiro programar em PHP do que isso.
Versão "legível":
Pensamentos e reflexões:
Em primeiro lugar, eu definitivamente preciso implementar uma maneira mais bonita de imprimir novas linhas. Porque strings com novas linhas em um bloco recuado são super feias.
Eu gosto do meu truque
ae
- você raramente vê oae
operador sem oE
capitalizado no código real do boneco de neve. (Você também raramente vê o código do Snowman que não foi escrito por mim, mas está além do ponto.)Para os não iniciados, o Snowman tem duas maneiras de ligar para os operadores. Modo "consumir" e modo "não consumir". O modo "consumir" chamará o operador com as variáveis solicitadas e as descartará. O modo de não consumo chamará o operador e ainda deixará as variáveis intactas.
O que geralmente não é o que você deseja
ae
(array cada), porque o bloco que você está chamando em cada elemento fica lá e fica no seu caminho, usando uma preciosa das oito variáveis.No entanto, essa é uma situação rara na qual
ae
é realmente o que queremos (consulte os comentários no código para obter mais explicações).Estou realmente começando a pensar que o Snowman precisa de mais de dois modos, além de apenas "consumir" e "não consumir". Por exemplo, com
aa
(basicamente indexação de matriz), você só tem duas maneiras de chamá-lo:(O Snowman não usa uma estrutura de pilha / matriz, mas isso é simplesmente usado para maior clareza aqui.)
É bastante comum que você queira
["foo" "f"]
(ou seja, consuma a variável de índice, mas não a original). É um processo super complicado para se livrar desse incômodo0
se você usar o modo "não consumir".Uma coisa semelhante acontece quando você chama "array-each" no modo "não consumir", como é feito aqui. A matriz e o bloco permanecem, mesmo durante a execução do referido bloco . O que é ... muito, muito estranho.
Por outro lado, o objetivo do design do Snowman é ser o mais confuso possível, por isso não tenho certeza se isso é um problema.
fonte
CJam,
6555 bytesExperimente on-line no intérprete CJam .
fonte
Python 3,
193192182168165 bytesApenas uma solução rápida.
Python 2, 161 bytes
fonte
"\n".join
Pitão, 51 bytes
fonte