È dicembre 2014 e il 2015 è quasi iniziato. Tuttavia, sembra che non tutti lo abbiano capito.
Ma la gente di PPCG viene in soccorso!
Ingresso
Al tuo programma viene assegnata una griglia come quella del muro, in cui i giorni del mese di dicembre sembrano diversi da quelli di novembre e gennaio. Ogni settimana inizia con la domenica e termina con il sabato.
I giorni all'interno del mese sono rappresentati da a #
. I giorni che non rientrano nel mese sono rappresentati da un (spazio, codice ASCII 32). Ogni settimana è su una linea separata. Le linee sono separate da un carattere di nuova riga (
\n
). Il tuo programma potrebbe richiedere l'ommissione o l'inclusione di una nuova riga alla fine dell'input.
Ad esempio, questo è l'input per dicembre 2009:
#####
#######
#######
#######
#####
Il calendario è sempre del mese di dicembre.
Compito
Dato l'input, è necessario trovare l'anno associato al calendario. Poiché vi sono più anni per i quali un calendario corrisponde, è necessario restituire l'anno (prima del 2015) che è il più vicino al 2015. (Escluso il 2015 stesso.)
Il tuo programma deve produrre l'output corretto per qualsiasi anno <2015, esclusi quelli che hanno un layout di calendario per dicembre uguale a quello di un altro anno (prima del 2015) più vicino al 2015.
Se l'anno è <2014, è necessario calcolare anche la differenza dell'anno rispetto al 2014. Ad esempio, per il 2012 la differenza è 2
.
Produzione
L'output del tuo programma deve essere:
- Il testo:
Your calendar is for <year>.
(Nota: poiché questo è stato scritto originariamente come "calendario", accetterò anche quell'ortografia.) - Seguito da una nuova riga (
\n
o\r\n
). - Seguito dal testo:
It's almost 2015.
- Se l'anno è <2014, questo deve essere seguito dal testo:
You're <difference> years behind.
deve essere su una riga separata. - Seguito da una nuova riga (
\n
o\r\n
). - Seguito dal testo:
Go buy a new calendar!
- Facoltativamente seguito da una nuova riga (
\n
o\r\n
).
Regole
- È possibile scegliere se si desidera ricevere il calendario come argomento della riga di comando (ad esempio
yourprogram.exe <calendar>
) o richiedere l'input dell'utente. - Puoi presumere che il tuo programma non riceverà input non validi. L'input non valido include il layout del calendario per il quale non esiste un anno.
- Vince il codice più breve (in byte, in qualsiasi lingua).
Qualsiasi argomento non standard della riga di comando (argomenti che normalmente non sono richiesti per eseguire uno script) conta per il conteggio totale dei caratteri.
Cosa non deve fare il tuo programma :
- Dipende da qualsiasi risorsa esterna.
- Dipende dall'avere un nome file specifico.
- Invia qualcosa di diverso da quello richiesto.
- Ci vuole molto tempo per correre. Se il tuo programma dura più di un minuto sul computer di un utente medio, non è valido.
- Il tuo programma non deve essere scritto in un linguaggio di programmazione per il quale non esisteva un compilatore / interprete disponibile pubblicamente prima che questa sfida fosse pubblicata.
Esempi
Ingresso:
#####
#######
#######
#######
#####
Produzione:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Ingresso:
######
#######
#######
#######
####
Produzione:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Ingresso:
#
#######
#######
#######
#######
##
Produzione:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!