(Je voulais publier ceci pendant 1542: le conflit de planification était toujours le xkcd actuel, mais j'avais un conflit de planification.)
Contribution
L'entrée sera une liste d' 3néléments, qui représentent des névénements. Le premier élément de chaque groupe de 3 sera le nom d'un événement; les deuxième et troisième, respectivement l'heure de début et l'heure de fin. Par exemple:
foo 12 34 bar 56 78
représente un événement fooqui commence à «l'heure 12» (les heures sont simplement représentées par des nombres entiers; vous pouvez les considérer comme des minutes après minuit) et se termine à 34, et un deuxième événement barqui commence à 56 et se termine à 78.
Les noms des événements seront toujours composés uniquement de caractères alphanumériques, et les heures seront toujours des entiers ≥ 0 et <1440. L'heure de fin sera toujours au moins 1 supérieure à l'heure de début. Ils ne sont en aucun cas garantis pour être triés.
Si vous le souhaitez, vous pouvez prendre cela comme une chaîne unique séparée par des espaces; sinon, il doit être pris comme un tableau, une liste, un vecteur ou l'équivalent de votre langue.
Sortie
La sortie doit être une liste de noms d'événements séparés par des espaces. Les règles pour lesquelles les noms d'événements à afficher sont les suivantes:
Aucun des événements que vous générez ne peut entrer en conflit les uns avec les autres. Par exemple, avec l'entrée
a 0 10 b 5 15, vous ne pouvez pas sortir les deuxaetbparce que les heures sont en conflit (c'est-à-dire qu'elles se chevauchent partiellement). Si un événement se termine exactement au début d'un autre, vous pouvez inclure les deux.Vous ne pouvez pas sortir l'événement appelé
NSCC("National Scheduling Conflict Competition"), dont il y aura toujours exactement un dans l'entrée. Vous devez également générer au moins un événement qui entre en conflit (se chevauche partiellement)NSCC(et il y en aura toujours au moins un également).Vous devez générer autant d'événements que possible tout en suivant les deux règles ci-dessus. (C'est pour que vous ayez l'air aussi occupé que possible, afin que manquer le NSCC semble plus crédible.)
Cela peut également être affiché sous la forme d'une chaîne séparée par des espaces ou d'un tableau, d'une liste, d'un vecteur, etc.
Il peut y avoir plusieurs sorties possibles.
Cas de test
Notez que les sorties répertoriées ne sont que des exemples. Votre code peut produire quelque chose de différent, tant qu'il suit toujours les trois règles ci-dessus (notamment, cela signifie qu'il doit y avoir le même nombre d'événements que l'exemple).
Entrée: UnderwaterBasketWeavingConvention 50 800 NSCC 500 550
Sortie:UnderwaterBasketWeavingConvention
Entrée: SconeEating 0 50 RegexSubbing 45 110 CodeGolfing 95 105 NSCC 100 200
Sortie:SconeEating CodeGolfing
Entrée: VelociraptorHunting 0 300 NerdSniping 200 500 SEChatting 400 700 DoorknobTurning 650 750 NSCC 725 775
Sortie:NerdSniping DoorknobTurning
Entrée: NSCC 110 115 A 100 120 B 120 140 C 105 135 D 100 105 E 135 500
Sortie:C D E
Entrée: A 800 900 NSCC 700 1000 B 650 750 C 950 1050 D 655 660 E 660 665 F 1030 1040 G 1040 1060
Sortie:A D E F G
Entrée: A 10 11 B 11 12 C 12 13 D 13 14 NSCC 15 1090 E 10 16
Sortie:E
N'hésitez pas à ajouter plus de cas de test dans une modification s'il y a des cas de bord que j'ai manqués.
Règles
Votre code doit se terminer dans les 30 secondes pour tous les cas de test fournis (il s'agit davantage d'un contrôle d'intégrité, car il devrait probablement se terminer beaucoup plus rapidement pour tous les cas de test combinés) sur une machine personnelle raisonnable.
Il s'agit de code-golf , donc le code le plus court en octets l'emporte.

underwaterBasketWeavingConvention 50 800 nscc 550au lieu de votre exemple?