Mon lycée et bien d'autres mettent en œuvre un type d'horaire appelé horaire à blocs rotatifs. C'est une façon pour les gens d'avoir 8 classes, mais d'avoir 6 périodes dans une journée d'école.
Il y a quatre jours dans un calendrier de bloc qui se répètent encore et encore et n'ont rien à voir avec les jours réels de la semaine. Un numéro leur est attribué à chacun [1-4]
.
La façon dont le programme fonctionne est que vous listez toutes vos classes du matin, les périodes 1-4
: [1, 2, 3, 4]
. Ceci est votre emploi du temps pour le premier jour, ou le jour 1. Le reste des jours tourner juste la liste: [2, 3, 4, 1]
, [3, 4, 1, 2]
, [4, 1, 2, 3]
.
Cependant, la dernière période du matin est "abandonnée" et vous ne voyez pas ce professeur ce jour-là. Par conséquent , les jours sont: [1, 2, 3]
, [2, 3, 4]
, [3, 4, 1]
, [4, 1, 2]
.
L'après - midi est le même, sauf qu'il utilise des périodes 5-8
plutôt: [5, 6, 7]
, [6, 7, 8]
, [7, 8, 5]
, [8, 5, 6]
.
Ta tâche
Toute cette rotation est difficile à suivre, vous devez donc écrire un programme pour imprimer mon calendrier en fonction du jour où il est entré. Votre code doit placer Homeroom et Lunch aux bons endroits. Voici la sortie exacte dont votre code a besoin pour les entrées 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
Mais attendez - Encore une chose!
Parfois, le premier jour d'école, ou d'autres jours spéciaux, mon école a un "Jour 0". Cela signifie simplement que j'aurai tous mes cours ce jour-là avec ma chambre et mon déjeuner. Votre code devra gérer les jours 0. Voici la sortie pour un jour 0:
Homeroom
Period 1
Period 2
Period 3
Period 4
Lunch
Period 5
Period 6
Period 7
Period 8
C'est le code-golf donc le code le plus court en octets gagne!
1, 2, 3, 5, 6, 7
?Réponses:
Snowman 1.0.2 , 190 octets
Cette colonne la plus à gauche est plutôt jolie, non?
...
... à qui je plaisante, je préfère programmer en PHP que ça.
Version "lisible":
Réflexions et réflexions:
Tout d'abord, j'ai certainement besoin d'implémenter une manière plus jolie d'imprimer des nouvelles lignes. Parce que les chaînes avec des sauts de ligne dans un bloc en retrait sont super moches.
J'aime mon truc avec -
ae
vous voyez rarement l'ae
opérateur sans leE
capital dans le vrai code Snowman. (Vous voyez également rarement du code Snowman qui n'est pas écrit par moi, mais c'est d'ailleurs le point.)Pour les non-initiés, Snowman a deux façons d'appeler les opérateurs. Mode «consommer» et mode «non consommé». Le mode "Consommer" appellera l'opérateur avec les variables demandées puis supprimera les variables. Le mode sans consommation appellera l'opérateur et laissera toujours les variables intactes.
Ce qui n'est généralement pas ce que vous voulez avec
ae
(tableau-chacun), car le bloc que vous appelez sur chaque élément y restera et vous gênera, en utilisant une précieuse des huit variables.Cependant, cela est une situation rare dans laquelle
ae
est en fait ce que nous voulons (voir les commentaires dans le code pour plus d' explications).Je commence vraiment, vraiment à penser que Snowman a besoin de plus de deux modes, autres que "consommer" et "ne pas consommer". Par exemple, avec
aa
(essentiellement l'indexation de tableaux), vous n'avez que deux façons de l'appeler:(Snowman n'utilise pas de structure pile / tableau, mais c'est simplement utilisé pour plus de clarté ici.)
Il est assez courant de vouloir
["foo" "f"]
(c'est-à-dire consommer la variable d'index, mais pas celle d'origine). C'est un processus très compliqué pour se débarrasser de cet ennuyeux0
si vous utilisez le mode "ne pas consommer".Une chose similaire se produit lorsque vous appelez "array-each" en mode "do-not-consume", comme c'est le cas ici. Le tableau et le bloc restent, même pendant l'exécution dudit bloc . Ce qui est ... vraiment, vraiment bizarre.
Là encore, l'objectif de conception de Snowman est d'être aussi déroutant que possible, donc je ne suis pas sûr que ce soit un problème.
la source
CJam,
6555 octetsEssayez-le en ligne dans l' interpréteur CJam .
la source
Python 3,
193192182 182168165 octetsJuste une solution rapide.
Python 2, 161 octets
la source
"\n".join
Pyth, 51 octets
la source