Es diciembre de 2014 y 2015 casi ha comenzado. Sin embargo, parece que no todos se han dado cuenta de esto.
¡Pero la gente de PPCG viene al rescate!
Entrada
Su programa recibe una cuadrícula como la del muro, donde los días que están en el mes de diciembre son diferentes de los de noviembre y enero. Cada semana comienza con el domingo y termina con el sábado.
Los días dentro del mes están representados por a #
. Los días que quedan fuera del mes están representados por un (espacio, código ASCII 32). Cada semana está en una línea separada. Las líneas están separadas por un carácter de nueva línea (
\n
). Su programa puede requerir la omisión o la inclusión de una nueva línea al final de la entrada.
Por ejemplo, esta es la entrada para diciembre de 2009:
#####
#######
#######
#######
#####
El calendario es siempre del mes de diciembre.
Tarea
Dada la entrada, debe encontrar el año asociado con el calendario. Dado que hay varios años para los que coincide un calendario, debe devolver el año (antes de 2015) que sea el más cercano a 2015. (Excluyendo 2015 en sí).
Su programa debe producir el resultado correcto para cualquier año <2015, excluyendo aquellos que tienen un diseño de calendario para diciembre que es igual al de otro año (antes de 2015) más cercano a 2015.
Si el año es <2014, también debe calcular la diferencia del año a 2014. Por ejemplo, para 2012 la diferencia es 2
.
Salida
La salida de su programa debe ser:
- El texto:
Your calendar is for <year>.
(Nota: dado que esto originalmente se deletreaba como "calendario", también aceptaré esa ortografía). - Seguido de una nueva línea (
\n
o\r\n
). - Seguido por el texto:
It's almost 2015.
- Si el año es <2014, esto debe ser seguido por el texto:
You're <difference> years behind.
Esto debe estar en una línea separada. - Seguido de una nueva línea (
\n
o\r\n
). - Seguido por el texto:
Go buy a new calendar!
- Opcionalmente seguido de una nueva línea (
\n
o\r\n
).
Reglas
- Puede elegir si desea recibir el calendario como un argumento de línea de comandos (p
yourprogram.exe <calendar>
. Ej. ) O solicitar la entrada del usuario. - Puede suponer que su programa no recibirá entradas no válidas. La entrada no válida incluye el diseño del calendario para el que no existe ningún año.
- El código más corto (en bytes, en cualquier idioma) gana.
Cualquier argumento de línea de comandos no estándar (argumentos que normalmente no se requieren para ejecutar un script) cuentan para el recuento total de caracteres.
Lo que su programa no debe hacer:
- Depende de cualquier recurso externo.
- Depende de tener un nombre de archivo específico.
- Salida de cualquier cosa que no sea la salida requerida.
- Tardar excepcionalmente en correr. Si su programa se ejecuta más de un minuto en la computadora de un usuario doméstico promedio, no es válido.
- Su programa no debe estar escrito en un lenguaje de programación para el que no existía un compilador / intérprete disponible públicamente antes de que se publicara este desafío.
Ejemplos
Entrada:
#####
#######
#######
#######
#####
Salida:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Entrada:
######
#######
#######
#######
####
Salida:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Entrada:
#
#######
#######
#######
#######
##
Salida:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!