(Intendevo pubblicare questo nel 1542: Scheduling Conflict era ancora l'attuale xkcd, ma avevo un conflitto di pianificazione.)
Ingresso
L'input sarà un elenco di 3nelementi, che rappresentano neventi. Il primo elemento in ciascun gruppo di 3 sarà il nome di un evento; il secondo e il terzo, rispettivamente l'ora di inizio e di fine. Per esempio:
foo 12 34 bar 56 78
rappresenta un evento fooche inizia al "tempo 12" (i tempi sono rappresentati semplicemente da numeri interi; puoi pensarli come minuti dopo la mezzanotte) e termina a 34, e un secondo evento barche inizia a 56 e termina a 78.
I nomi degli eventi saranno sempre composti solo da caratteri alfanumerici e i tempi saranno sempre numeri interi ≥ 0 e <1440. L'ora di fine sarà sempre almeno 1 maggiore dell'ora di inizio. Non è garantito che vengano ordinati in alcun modo.
Se lo desideri, puoi prenderlo come una singola stringa separata da spazio; altrimenti dovrebbe essere considerato come un array, un elenco, un vettore o l'equivalente della tua lingua.
Produzione
L'output dovrebbe essere un elenco separato da spazi di nomi di eventi. Le regole per le quali nomi di eventi da emettere sono le seguenti:
Nessuno degli eventi che hai prodotto potrebbe essere in conflitto tra loro. Ad esempio, con l'input
a 0 10 b 5 15, non è possibile generare entrambiaebperché i tempi sono in conflitto (ovvero si sovrappongono parzialmente). Se un evento termina esattamente quando ne inizia un altro, puoi includerli entrambi.Non puoi generare l'evento chiamato
NSCC("Concorso nazionale sui conflitti di programmazione"), di cui ci sarà sempre esattamente uno nell'input. È inoltre necessario generare almeno un evento in conflitto (parzialmente sovrapposto) conNSCC(e ci sarà sempre almeno uno di quelli).È necessario generare il maggior numero possibile di eventi seguendo le due regole precedenti. (Questo è così che sembri il più impegnato possibile, in modo che la mancanza del NSCC sembri più credibile.)
Questo può anche essere emesso come una singola stringa separata da spazio o una matrice, un elenco, un vettore, ecc.
Possono esserci più di un output possibile.
Casi test
Si noti che le uscite elencate sono solo esempi. Il tuo codice potrebbe generare qualcosa di diverso, purché segua ancora le tre regole precedenti (in particolare, ciò significa che deve esserci la stessa quantità di eventi dell'esempio).
In: UnderwaterBasketWeavingConvention 50 800 NSCC 500 550
Out:UnderwaterBasketWeavingConvention
In: SconeEating 0 50 RegexSubbing 45 110 CodeGolfing 95 105 NSCC 100 200
Out:SconeEating CodeGolfing
In: VelociraptorHunting 0 300 NerdSniping 200 500 SEChatting 400 700 DoorknobTurning 650 750 NSCC 725 775
Out:NerdSniping DoorknobTurning
In: NSCC 110 115 A 100 120 B 120 140 C 105 135 D 100 105 E 135 500
Out:C D E
In: A 800 900 NSCC 700 1000 B 650 750 C 950 1050 D 655 660 E 660 665 F 1030 1040 G 1040 1060
Out:A D E F G
In: A 10 11 B 11 12 C 12 13 D 13 14 NSCC 15 1090 E 10 16
Out:E
Sentiti libero di aggiungere altri casi di test in una modifica se ci sono casi limite che mi sono perso.
Regole
Il codice deve essere completato entro 30 secondi per tutti i casi di test forniti (si tratta più di un controllo di integrità, poiché probabilmente dovrebbe essere completato molto più velocemente per tutti i casi di test combinati) su un ragionevole computer personale.
Questo è code-golf , quindi vince il codice più breve in byte.

underwaterBasketWeavingConvention 50 800 nscc 550posto del tuo esempio?