É dezembro de 2014 e 2015 já começou. No entanto, parece que nem todo mundo percebeu isso.
Mas o pessoal do PPCG vem em socorro!
Entrada
Seu programa recebe uma grade como a da parede, onde os dias do mês de dezembro parecem diferentes dos de novembro e janeiro. Cada semana começa no domingo e termina no sábado.
Os dias do mês são representados por a #
. Os dias que ficam fora do mês são representados por um (espaço, código ASCII 32). Cada semana é em uma linha separada. As linhas são separadas por um caractere de nova linha (
\n
). Seu programa pode exigir a omissão ou inclusão de uma nova linha no final da entrada.
Por exemplo, esta é a entrada para dezembro de 2009:
#####
#######
#######
#######
#####
O calendário é sempre do mês de dezembro.
Tarefa
Dada a entrada, você deve encontrar o ano associado ao calendário. Como há vários anos para os quais um calendário corresponde, você deve retornar o ano (antes de 2015) o mais próximo de 2015. (Excluindo o próprio 2015).
Seu programa deve produzir a saída correta para qualquer ano <2015, excluindo aqueles que possuem um layout de calendário para dezembro igual ao de outro ano (antes de 2015) mais próximo de 2015.
Se o ano for <2014, você também deve calcular a diferença do ano para 2014. Por exemplo, para 2012, a diferença é 2
.
Resultado
A saída do seu programa deve ser:
- O texto:
Your calendar is for <year>.
(Observação: como esse foi originalmente escrito como "calendário", também aceito a ortografia.) - Seguido por uma nova linha (
\n
ou\r\n
). - Seguido pelo texto:
It's almost 2015.
- Se o ano for <2014, isso deve ser seguido pelo texto:
You're <difference> years behind.
Isso deve estar em uma linha separada. - Seguido por uma nova linha (
\n
ou\r\n
). - Seguido pelo texto:
Go buy a new calendar!
- Opcionalmente seguido por uma nova linha (
\n
ou\r\n
).
Regras
- Você pode escolher se deseja receber o calendário como argumento da linha de comando (por exemplo
yourprogram.exe <calendar>
) ou solicitar a entrada do usuário. - Você pode assumir que seu programa não receberá entrada inválida. Entrada inválida inclui layout de calendário para o qual não existe ano.
- O código mais curto (em bytes, em qualquer idioma) vence.
Quaisquer argumentos de linha de comando não padrão (argumentos que normalmente não são necessários para executar um script) contam para a contagem total de caracteres.
O que seu programa não deve fazer:
- Depende de quaisquer recursos externos.
- Depende de ter um nome de arquivo específico.
- Saída qualquer coisa que não seja a saída necessária.
- Demore excepcionalmente para executar. Se o seu programa for executado mais de um minuto no computador de um usuário doméstico comum, é inválido.
- Seu programa não deve ser escrito em uma linguagem de programação para a qual não existia um compilador / intérprete publicamente disponível antes que esse desafio fosse lançado.
Exemplos
Entrada:
#####
#######
#######
#######
#####
Resultado:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Entrada:
######
#######
#######
#######
####
Resultado:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Entrada:
#
#######
#######
#######
#######
##
Resultado:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!