Grazie alla comunità PPCG, Babbo Natale è riuscito a ordinare i suoi regali nell'ordine corretto per trasferirsi nel molo di trasporto. Sfortunatamente, i segni del molo di trasporto sono rotti, quindi non sa dove mettere tutti i regali! I regali sono tutti raggruppati e non secondo le loro gamme, che Babbo ammette sarebbe stata un'idea migliore.
Ora, dati i presenti nell'ordine ordinato, determinare tutte le possibili configurazioni di intervallo minimo che porterebbero il presente nell'ordine corretto. Ossia, trova tutte le configurazioni di intervallo minimo in modo tale che l'ordinamento dei regali secondo l'algoritmo in Challenge # 5 non cambierebbe l'ordine.
Sfida
Una configurazione di intervallo minima è un elenco di intervalli in modo che ciascuno di essi sia il più piccolo possibile. Cioè, se un intervallo è designato per coprire un sottoinsieme specifico di regali, allora il minimo e il massimo dell'intervallo devono essere uguali a quelli del sottoinsieme. In altre parole, la riduzione di qualsiasi intervallo nella copertina causerebbe che non sia più una copertura.
La sfida è trovare tutte le possibili configurazioni di portata minima che si applicherebbero alle dimensioni attuali. Facciamo un esempio:[3, 1, 2, 5, 4, 7, 6]
C'è un caso banale, che è quello di prendere la portata dell'intera configurazione attuale. In questo caso, [[1, 7]]
sarebbe una soluzione.
Per esempi con elementi unici, un altro caso banale sarebbe [[3], [1], [2], [5], [4], [7], [6]]
(perché non è necessario ordinare gli intervalli).
Per questo esempio, lo vediamo anche [[1, 3], [4, 7]]
e [[1, 3], [4, 5], [6, 7]]
funzionerebbe, così come [[1, 3], [5], [4], [6, 7]]
e [[1, 3], [4, 5], [7], [6]]
.
La risposta finale per [3, 1, 2, 5, 4, 7, 6]
sarebbe [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
.
Specifiche di formattazione
L'input verrà fornito come un elenco semplice di numeri interi positivi all'interno dell'intervallo di numeri supportato ragionevole della tua lingua in qualsiasi formato ragionevole. L'input può contenere elementi duplicati. L'output dovrebbe essere fornito come un elenco 3D di numeri interi positivi in qualsiasi formato ragionevole.
Ogni intervallo nell'output (che si trova al secondo livello) può essere rappresentato come [min, max]
, [num]
se si tratta di un intervallo a valore singolo o come l'intero intervallo stesso, ma il formato di output deve essere coerente. Specificare se si desidera utilizzare un formato di output ragionevole leggermente diverso.
I valori duplicati devono essere coperti da un singolo intervallo nell'output; vale a dire, non è possibile sovrapporre due intervalli nell'output.
La soluzione può restituire gli intervalli in qualsiasi ordine e questo non deve essere deterministico.
Regole
- Si applicano scappatoie standard
- Questo è code-golf, quindi vince la risposta più breve in byte
- Nessuna risposta sarà accettata
Caso di prova per un elenco con elementi duplicati:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Implementazione di riferimento
L'intestazione è il collegamento.
Nota: ho tratto ispirazione per questa serie di sfide da Advent Of Code . Non ho affiliazione con questo sito
Puoi vedere un elenco di tutte le sfide della serie guardando la sezione "Linked" della prima sfida qui .
Buon golf!