(Bunu 1542 sırasında göndermek istemiştim : Zamanlama Çatışması hala geçerli xkcd idi, ama zamanlama çatışması yaşadım.)
Giriş
Giriş, olayları 3n
temsil eden öğelerin bir listesi olacaktır n
. Her 3 gruptaki ilk öğe, bir etkinliğin adı olacaktır; ikinci ve üçüncü, sırasıyla başlangıç ve bitiş zamanı. Örneğin:
foo 12 34 bar 56 78
bir etkinliği gösterdiğini foo
"zaman 12" başlar; 34 de ve uçları (kez tamsayılar tarafından sadece temsil dakikalar geçmiş gece yarısı olarak bunlardan düşünebiliriz), ve ikinci bir olay bar
olduğunu 56 yaşında başlar ve 78'de biter.
Olayların adları her zaman yalnızca alfasayısal karakterlerden oluşacak ve zamanlar her zaman ≥ 0 ve <1440 tamsayıları olacak. Bitiş zamanı her zaman başlangıç zamanından en az 1 büyük olacaktır. Herhangi bir şekilde sıralanmaları garanti edilmez.
İsterseniz, bunu boşlukla ayrılmış tek bir dize olarak kabul edebilirsiniz; aksi takdirde bir dizi, liste, vektör veya dilinizin karşılığı olarak alınmalıdır.
Çıktı
Çıktı, boşlukla ayrılmış bir olay adı listesi olmalıdır. Olay adlarının çıkarılacağı kurallar aşağıdaki gibidir:
Çıktığınız olayların hiçbiri birbiriyle çakışamaz. Örneğin, giriş ile
a 0 10 b 5 15
, her iki çıkış olmayabilira
veb
, çünkü katı çatışma (olup, kısmen üst üste gelir). Bir olay tam olarak başladığı gibi biterse, her ikisini de ekleyebilirsiniz.NSCC
Girdide her zaman tam olarak biri olacak olan ("Ulusal Zamanlama Çatışması Yarışması") adlı etkinliği çıkartamazsınız. Ayrıca sen zorunluluk çıkışı en az bir etkinliğin olduğu çakışmaları (kısmen örtüşür)NSCC
(ve her zaman sıra bu en az biri olacaktır).Yukarıdaki iki kurala uyurken olabildiğince fazla olay çıkarmanız gerekir. (Bu, olabildiğince meşgul görünmek için, böylece NSCC'yi kaçırmak daha güvenilir görünüyor.)
Bu, boşlukla ayrılmış tek bir dize veya bir dizi, liste, vektör vb. Olarak da çıkarılabilir.
Birden fazla olası çıktı olabilir.
Test durumları
Listelenen çıktıların yalnızca örnek olduğunu unutmayın. Kodunuz hala yukarıdaki üç kurala uyduğu sürece farklı bir şey çıktısı alabilir (özellikle bu , örnekte olduğu gibi aynı miktarda olay olması gerektiği anlamına gelir ).
Giriş: UnderwaterBasketWeavingConvention 50 800 NSCC 500 550
Çıkış:UnderwaterBasketWeavingConvention
Giriş: SconeEating 0 50 RegexSubbing 45 110 CodeGolfing 95 105 NSCC 100 200
Çıkış:SconeEating CodeGolfing
Giriş: VelociraptorHunting 0 300 NerdSniping 200 500 SEChatting 400 700 DoorknobTurning 650 750 NSCC 725 775
Çıkış:NerdSniping DoorknobTurning
Giriş: NSCC 110 115 A 100 120 B 120 140 C 105 135 D 100 105 E 135 500
Çıkış:C D E
Giriş: A 800 900 NSCC 700 1000 B 650 750 C 950 1050 D 655 660 E 660 665 F 1030 1040 G 1040 1060
Çıkış:A D E F G
Giriş: A 10 11 B 11 12 C 12 13 D 13 14 NSCC 15 1090 E 10 16
Çıkış:E
Kaçırdığım kenar vakaları varsa, bir düzenlemeye daha fazla test senaryosu eklemekten çekinmeyin.
kurallar
Makul bir kişisel makinede verilen tüm test durumları için kodunuz 30 saniye içinde tamamlanmalıdır (bu, birleştirilmiş bütün test durumları için muhtemelen daha hızlı tamamlaması gerektiği için bir akıl sağlığı kontrolünden ibarettir).
Bu kod golf , yani bayt cinsinden en kısa kod kazanır.
underwaterBasketWeavingConvention 50 800 nscc 550
, örnek yerine?