(Chciałem to opublikować, gdy 1542: Konflikt planowania wciąż był bieżącym xkcd, ale miałem konflikt planowania).
Wkład
Dane wejściowe będą listą 3nelementów, które reprezentują nzdarzenia. Pierwszym elementem w każdej grupie 3 będzie nazwa zdarzenia; drugi i trzeci odpowiednio czas rozpoczęcia i zakończenia. Na przykład:
foo 12 34 bar 56 78
reprezentuje zdarzenie, fooktóre zaczyna się od „czasu 12” (czasy są reprezentowane po prostu liczbami całkowitymi; możesz myśleć o nich jako minutach po północy) i kończy się o 34, a drugie zdarzenie, barktóre zaczyna się o 56 i kończy o 78.
Nazwy zdarzeń będą zawsze składać się wyłącznie ze znaków alfanumerycznych, a czasy będą zawsze liczbami całkowitymi ≥ 0 i <1440. Czas zakończenia będzie zawsze o co najmniej 1 większy niż czas rozpoczęcia. Nie gwarantuje się, że zostaną w jakikolwiek sposób posortowane.
Jeśli chcesz, możesz wziąć to jako ciąg oddzielony spacjami; w przeciwnym razie powinien być traktowany jako tablica, lista, wektor lub odpowiednik twojego języka.
Wydajność
Dane wyjściowe powinny być oddzieloną spacjami listą nazw zdarzeń. Reguły, dla których nazwy zdarzeń mają być generowane, są następujące:
Żadne z generowanych zdarzeń nie może powodować konfliktów. Na przykład, przy wejściu
a 0 10 b 5 15, nie może wyjście zarównoaabponieważ czasy konfliktu (czyli częściowo pokrywają się). Jeśli wydarzenie kończy się dokładnie tak, jak inne, możesz dołączyć oba.Nie możesz wyrenderować wydarzenia o nazwie
NSCC(„Krajowy konkurs konfliktu planowania”), którego zawsze będzie dokładnie jeden z danych wejściowych. Również koniecznością wyjścia przynajmniej jedno zdarzenie, które konfliktów (częściowo pokrywa się) zNSCC(i zawsze będzie co najmniej jeden z tych, jak również).Musisz wygenerować jak najwięcej zdarzeń, przestrzegając dwóch powyższych zasad. (Jest tak, abyś wyglądał na tak zajętego, jak to możliwe, aby pominięcie NSCC wydawało się bardziej wiarygodne).
Może być również wyprowadzany jako pojedynczy ciąg oddzielony spacją lub tablica, lista, wektor itp.
Możliwe jest więcej niż jedno wyjście.
Przypadki testowe
Zauważ, że wymienione dane wyjściowe są tylko przykładami. Twój kod może wyświetlać coś innego, o ile nadal spełnia trzy powyższe reguły (w szczególności oznacza to, że musi być taka sama liczba zdarzeń jak w przykładzie).
W: UnderwaterBasketWeavingConvention 50 800 NSCC 500 550
Out:UnderwaterBasketWeavingConvention
W: SconeEating 0 50 RegexSubbing 45 110 CodeGolfing 95 105 NSCC 100 200
Out:SconeEating CodeGolfing
W: VelociraptorHunting 0 300 NerdSniping 200 500 SEChatting 400 700 DoorknobTurning 650 750 NSCC 725 775
Out:NerdSniping DoorknobTurning
W: NSCC 110 115 A 100 120 B 120 140 C 105 135 D 100 105 E 135 500
Out:C D E
W: 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
W: A 10 11 B 11 12 C 12 13 D 13 14 NSCC 15 1090 E 10 16
Out:E
Możesz dodać więcej przypadków testowych w edycji, jeśli są przypadki, które przegapiłem.
Zasady
Twój kod musi zostać ukończony w ciągu 30 sekund dla wszystkich dostarczonych przypadków testowych (jest to raczej kontrola poprawności, ponieważ prawdopodobnie powinien zakończyć się znacznie szybciej dla wszystkich przypadków testowych łącznie) na rozsądnej maszynie osobistej.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.

underwaterBasketWeavingConvention 50 800 nscc 550zamiast swojego przykładu?