Mi piacciono molto i tempi che seguono determinati schemi. In particolare, mi piacciono i tempi in cui tutte le cifre sono uguali o tutte le cifre aumentano aritmeticamente di una da sinistra a destra. Inoltre, odio visceralmente quando le persone mettono le lettere ai miei tempi, quindi tutte queste assurdità di AM / PM sono morte per me. Quindi, i miei tempi preferiti sono:
0000 0123 1111 1234 2222 2345
Per la mia pace della mente, ho bisogno di te per scrivermi un unico programma che, data l'ora attuale come input, sia: (A) se è non è ora uno dei miei momenti preferiti, mi dice sia (i) quanti minuti si è è stato dalla mia ultima volta preferita e (ii) da quanti minuti passerà la mia prossima ora preferita; e (B) se ora è uno dei miei tempi preferiti, fornisce un singolo "valore del segnale".
Ingresso
Il programma dovrebbe accettare (con qualsiasi metodo: argomento della funzione, argomento della stdin
riga di comando, ecc.) L'ora corrente, in uno dei seguenti formati:
Un tempo di quattro cifre come una stringa
Un numero intero che può essere azzerato a sinistra per creare un tempo di quattro cifre come stringa
Una sequenza di quattro (o meno) numeri interi, ordinata in modo tale che il primo numero intero nella sequenza sia la cifra (significativa) più a sinistra nell'input temporale (ad esempio,
0951
potrebbe essere validamente rappresentato come[0, 9, 5, 1]
o[9, 5, 1]
)- La rappresentazione
0000
come sequenza di lunghezza zero è accettabile
- La rappresentazione
Nel caso di un input di stringa, dovrebbe contenere solo cifre, nessun punto e virgola o altra punteggiatura. Si può presumere che gli ingressi siano sempre validi 24 ore su 24:, HHMM
dove 0 <= HH <= 23
e 0 <= MM <= 59
. Ignorare la possibilità di un secondo di salto.
Produzione
Il programma deve fornire (i ritorni di funzione stdout
, ecc. Vanno bene) (A) o (B) , a seconda che il valore di input sia o meno un tempo target.
Per un):
Fornisci due valori numerici in qualsiasi formato sensibile, ad esempio:
Uscita a stringa singola con un delimitatore adatto
Uscite sequenziali di numeri interi / stringhe, ad es.
bash
Stampa di due righe sustdout
:49 34
Lunghezza-due valori restituiti ordinati, come un elenco Python, un array C, ecc .:
[49, 34]
I valori possono venire in entrambi gli ordini. Ad esempio, entrambi i seguenti sarebbero output validi per un input di 1200
:
49 34
34 49
L'ordine e il separatore devono essere uguali per tutti i valori di input!
Per (B):
Produrre qualsiasi risultato altrimenti irraggiungibile. Lo stesso risultato deve essere prodotto per tutti e sei i tempi target, tuttavia. I loop infiniti sono esclusi.
Ingressi / uscite campione
YAY!!!
è usato qui come esempio dimostrativo e non è prescrittivo.
Input Output
------ --------
0000 YAY!!!
0020 20 63
0105 65 18
0122 82 1
0123 YAY!!!
0124 1 587
0852 449 139
1111 YAY!!!
1113 2 81
1200 49 34
1234 YAY!!!
1357 83 505
1759 325 263
1800 326 262
1801 327 261
2222 YAY!!!
2244 22 61
2345 YAY!!!
2351 6 9
Questo è code-golf , quindi vince il codice più breve in byte. Le scappatoie standard non sono ammesse.