Nous sommes en décembre 2014 et 2015 a presque commencé. Cependant, il semble que tout le monde ne s'en soit pas rendu compte.
Mais les gens de PPCG viennent à la rescousse!
Contribution
Votre programme reçoit une grille comme celle du mur, où les jours du mois de décembre sont différents de ceux de novembre et janvier. Chaque semaine commence le dimanche et se termine le samedi.
Les jours du mois sont représentés par un #
. Les jours qui ne font pas partie du mois sont représentés par un (espace, code ASCII 32). Chaque semaine est sur une ligne distincte. Les lignes sont séparées par un caractère de nouvelle ligne (
\n
). Votre programme peut nécessiter la suppression ou l'inclusion d'une nouvelle ligne à la fin de l'entrée.
Par exemple, voici l'entrée pour décembre 2009:
#####
#######
#######
#######
#####
Le calendrier est toujours du mois de décembre.
Tâche
Compte tenu de l'entrée, vous devez trouver l'année associée au calendrier. Puisqu'il y a plusieurs années pour lesquelles un calendrier correspond, vous devez renvoyer l'année (avant 2015) qui est la plus proche de 2015. (Sauf 2015 elle-même.)
Votre programme doit produire la sortie correcte pour toute année <2015, à l'exclusion de celles dont le calendrier de décembre est égal à celui d'une autre année (avant 2015) plus proche de 2015.
Si l'année est <2014, vous devez également calculer la différence de l'année par rapport à 2014. Par exemple, pour 2012, la différence est 2
.
Production
La sortie de votre programme doit être:
- Le texte:
Your calendar is for <year>.
(Remarque: étant donné que cela était à l'origine orthographié comme «calendrier», j'accepte également cette orthographe.) - Suivi d'une nouvelle ligne (
\n
ou\r\n
). - Suivi du texte:
It's almost 2015.
- Si l'année est <2014, ceci doit être suivi du texte:
You're <difference> years behind.
Cela doit être sur une ligne séparée. - Suivi d'une nouvelle ligne (
\n
ou\r\n
). - Suivi du texte:
Go buy a new calendar!
- Facultativement suivi d'une nouvelle ligne (
\n
ou\r\n
).
Règles
- Vous pouvez choisir si vous souhaitez recevoir le calendrier en tant qu'argument de ligne de commande (par exemple
yourprogram.exe <calendar>
) ou inviter l'utilisateur à entrer. - Vous pouvez supposer que votre programme ne recevra aucune entrée invalide. L'entrée non valide inclut la disposition du calendrier pour laquelle il n'existe aucune année.
- Le code le plus court (en octets, dans n'importe quelle langue) gagne.
Tous les arguments de ligne de commande non standard (arguments qui ne sont normalement pas requis pour exécuter un script) comptent pour le nombre total de caractères.
Ce que votre programme ne doit pas faire:
- Dépendez de toutes les ressources externes.
- Dépendre d'avoir un nom de fichier spécifique.
- Sortie autre chose que la sortie requise.
- Prenez exceptionnellement longtemps à courir. Si votre programme s'exécute sur une minute sur l'ordinateur d'un utilisateur à domicile moyen, il n'est pas valide.
- Votre programme ne doit pas être écrit dans un langage de programmation pour lequel il n'existait pas de compilateur / interprète accessible au public avant la publication de ce défi.
Exemples
Contribution:
#####
#######
#######
#######
#####
Production:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Contribution:
######
#######
#######
#######
####
Production:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Contribution:
#
#######
#######
#######
#######
##
Production:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!