Mi escuela secundaria y muchos otros implementan un tipo de horario llamado Horario de Bloque Giratorio. Esta es una forma de que las personas tengan 8 clases, pero que tengan 6 períodos en un día escolar.
Hay cuatro días en un horario de bloque que se repiten una y otra vez, y no tienen nada que ver con los días reales de la semana. A cada uno se le asigna un número [1-4]
.
La forma en que funciona el programa es que la lista de todas las clases de la mañana, los períodos 1-4
: [1, 2, 3, 4]
. Esta es la programación para el primer día o el día 1. El resto de los días sólo gire la lista: [2, 3, 4, 1]
, [3, 4, 1, 2]
, [4, 1, 2, 3]
.
Sin embargo, el último período de la mañana se "cae" y no ve a ese maestro ese día. De ahí que los días son: [1, 2, 3]
, [2, 3, 4]
, [3, 4, 1]
, [4, 1, 2]
.
La tarde es el mismo, excepto que utiliza períodos 5-8
en su lugar: [5, 6, 7]
, [6, 7, 8]
, [7, 8, 5]
, [8, 5, 6]
.
Tu tarea
Es difícil realizar un seguimiento de toda esta rotación, por lo que debe escribir un programa para imprimir mi horario dado qué día es como entrada. Su código tiene que colocar Homeroom and Lunch en los lugares correctos. Aquí está la salida exacta que su código debe tener para las 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
Pero espera, ¡una cosa más!
A veces, en el primer día de clases, o en otros días especiales, mi escuela tiene un "Día 0". Esto solo significa que tendré todas mis clases ese día junto con el aula y el almuerzo. Su código tendrá que lidiar con el día 0. Aquí está la salida para un día 0:
Homeroom
Period 1
Period 2
Period 3
Period 4
Lunch
Period 5
Period 6
Period 7
Period 8
Este es el código de golf, ¡el código más corto en bytes gana!
1, 2, 3, 5, 6, 7
?Respuestas:
Muñeco de nieve 1.0.2 , 190 bytes
Esa columna de la izquierda en realidad se ve muy bien, ¿no?
...
... a quién estoy bromeando, prefiero programar en PHP que esto.
Versión "legible":
Pensamientos y reflexiones:
En primer lugar, definitivamente necesito implementar una forma más bonita de imprimir nuevas líneas. Porque las cadenas con líneas nuevas en un bloque sangrado son súper feas.
Me gusta mi truco con:
ae
rara vez se ve alae
operador sin elE
código en mayúsculas del muñeco de nieve real. (Rara vez ve el código de Snowman que no he escrito yo, pero eso no viene al caso).Para los no iniciados, Snowman tiene dos formas de llamar a los operadores. Modo "Consumir" y modo "no consumir". El modo "Consumir" llamará al operador con las variables solicitadas y luego descartará las variables. El modo sin consumo llamará al operador y aún dejará las variables intactas.
Lo que generalmente no es lo que desea con
ae
(array-each), porque el bloque que está llamando a cada elemento permanecerá allí y se interpondrá en su camino, utilizando una preciosa de las ocho variables.Sin embargo, esta es una situación rara en la que en realidad
ae
es lo que queremos (ver los comentarios en el código para más explicaciones).Estoy realmente empezando a pensar que Snowman necesita más de dos modos, además de "consumir" y "no consumir". Por ejemplo, con
aa
(básicamente indexación de matriz), solo obtiene dos formas de llamarlo:(Snowman no usa una estructura de pila / matriz, pero eso simplemente se usa aquí para mayor claridad).
Es bastante común que desee
["foo" "f"]
(es decir, consumir la variable de índice, pero no la original). Es un proceso súper complicado para deshacerse de ese molesto0
si usa el modo "no consumir".Algo similar ocurre cuando se llama "array-each" en modo "no consumir", como se hace aquí. La matriz y el bloque se quedan, incluso durante la ejecución de dicho bloque . Lo cual es ... muy, muy raro.
Por otra parte, el objetivo de diseño de Snowman es ser lo más confuso posible, por lo que no estoy seguro de si esto es un problema en absoluto.
fuente
CJam,
6555 bytesPruébelo en línea en el intérprete de CJam .
fuente
Python 3,
193192182168165 bytesSolo una solución rápida.
Python 2, 161 bytes
fuente
"\n".join
Pyth, 51 bytes
fuente