Originariamente pubblicato (ed eliminato) da @Tlink , molto probabilmente ispirato a questa domanda StackOverflow .
Dato che è stato un peccato, è stato cancellato, perché sembrava una buona sfida in generale, ho pensato di ripubblicarlo con una formattazione e regole adeguate. (Ho provato a contattare @Tlink e ottenere il suo permesso di pubblicarlo, ma non risponde più, motivo per cui ho deciso di pubblicarlo ora.)
Input: sei cifre.
Output: la prima o l'ultima ora valida nel formato 24 ore ( 00:00:00
fino a 23:59:59
). (Puoi scegliere tu stesso se hai emesso il primo o l'ultimo orario valido.)
Esempio:
Quando gli input sono 1,8,3,2,6,4
, è possibile creare i seguenti orari:
12:36:48 12:38:46 12:46:38 12:48:36
13:26:48 13:28:46 13:46:28 13:48:26
14:26:38 14:28:36 14:36:28 14:38:26
16:23:48 16:24:38 16:28:34 16:28:43
16:32:48 16:34:28 16:38:24 16:38:42
16:42:38 16:43:28 16:48:23 16:48:32
18:23:46 18:24:36 18:26:34 18:26:43
18:32:46 18:34:26 18:36:24 18:36:42
18:42:36 18:43:26 18:46:23 18:46:32
21:36:48 21:38:46 21:46:38 21:48:36
23:16:48 23:48:16
Quindi usciremo uno 12:36:48
o 23:48:16
in questo caso, rispettivamente il primo / ultimo.
Regole della sfida:
- Indica se hai emesso la prima o l'ultima ora valida nella tua risposta.
- L'I / O è flessibile. L'input può essere sei numeri interi separati; una stringa contenente le sei cifre; una lista / matrice di numeri interi; un singolo numero (possibilmente ottale); ecc. L'output può essere un elenco / array di cifre correttamente ordinato; una stringa nel formato
HH:mm:ss
/HHmmss
/HH mm ss
; ogni cifra stampata con delimitatore di nuova riga; ecc. La tua chiamata. - Puoi prendere le cifre nell'ordine che preferisci, quindi possono già essere ordinate dal più basso al più alto o viceversa.
- Se non è possibile creare un tempo valido con le cifre indicate (es.
2,5,5,5,5,5
), Chiariscilo nel modo che desideri. Può restituirenull
/false
;"Not possible"
; crash con un errore; ecc. (Non è possibile generare un tempo non valido come55:55:52
, o un altro tempo valido come00:00:00
.) Indicare come gestisce gli input per i quali non è possibile creare un tempo valido. - Non è consentito produrre tutti i tempi validi validi. Solo il primo / l'ultimo deve essere emesso / restituito.
24
per ore (es.24:00:00
) o60
per minuti / secondi (es.00:60:60
) non sono validi. Le gamme sono[00-23]
per ore e[00-59]
per minuti e secondi.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
Input: Earliest output: Latest output:
1,2,3,4,6,8 12:36:48 23:48:16
2,5,5,5,5,5 None possible None possible
0,0,0,1,1,1 00:01:11 11:10:00
1,1,2,2,3,3 11:22:33 23:32:11
9,9,9,9,9,9 None possible None possible
2,3,5,5,9,9 23:59:59 23:59:59
1,2,3,4,5,6 12:34:56 23:56:41
0,0,0,0,0,0 00:00:00 00:00:00
1,5,5,8,8,8 18:58:58 18:58:58
1,5,5,5,8,8 15:58:58 18:58:55
1,1,1,8,8,8 18:18:18 18:18:18
06:08:60
valido, dato che c'è stato un secondo balzo in quel minuto?
60
per minuti e secondi non è valido. Intervalli sono [00-23]
, [00-59]
e [00-59]
. Chiarirà questo nella sfida.
23:48:16
un output valido per l'esempio?