(1542:Scheduling Conflict が現在のxkcdである間にこれを投稿するつもりでしたが、スケジューリングの競合がありました。)
入力
入力は3n
、n
イベントを表す要素のリストになります。3の各グループの最初の要素はイベントの名前になります。2番目と3番目、それぞれ開始時刻と終了時刻。例えば:
foo 12 34 bar 56 78
foo
「時刻12」で始まるイベント(時刻は単純に整数で表されます。時刻は真夜中過ぎの分と考えることができます)と34で終了しbar
、56で始まり78で終了する2番目のイベントを表します。
イベントの名前は常に英数字のみで構成され、時刻は常に0以上1440未満の整数になります。終了時刻は常に開始時刻より少なくとも1大きくなります。それらは、いかなる方法でもソートされることを保証されません。
必要に応じて、スペースで区切られた単一の文字列としてこれを使用できます。それ以外の場合は、配列、リスト、ベクトル、または言語の同等物として取得する必要があります。
出力
出力は、スペースで区切られたイベント名のリストである必要があります。出力するイベント名のルールは次のとおりです。
出力するイベントが互いに競合することはありません。たとえば、input
a 0 10 b 5 15
では、時間が競合するため(つまり、部分的に重複するため)、両方a
を出力することはできませんb
。イベントが別のイベントの開始と同時に終了する場合、両方を含めることができます。NSCC
「National Scheduling Conflict Competition」と呼ばれるイベントを出力することはできません。このイベントでは、常に入力に1つが含まれます。また、競合する(少なくとも部分的に重複する)イベントを少なくとも1つ出力する必要がありますNSCC
(常に少なくとも1つが存在します)。上記の2つのルールに従って、できるだけ多くのイベントを出力する必要があります。(これは、できるだけ忙しいように見えるようにするためです。そのため、NSCCの欠落はより信頼できるように見えます。)
これは、単一のスペースで区切られた文字列または配列、リスト、ベクトルなどとして出力される場合もあります。
複数の出力が存在する可能性があります。
テストケース
リストされている出力は例にすぎないことに注意してください。上記の3つのルールに従っている限り、コードは異なるものを出力する可能性があります(特に、これは例と同じ量のイベントが存在する必要があることを意味します)。
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
私が見逃したエッジケースがある場合は、編集でさらにテストケースを追加してください。
ルール
提供されたすべてのテストケースについて、コードは30秒以内に完了する必要があります(これはおそらく、すべてのテストケースを組み合わせた場合にはるかに高速に完了するため、健全性チェックになります)。
これはcode-golfであるため、バイト単位の最短コードが優先されます。
underwaterBasketWeavingConvention 50 800 nscc 550
たとえば、あなたの例の代わりに使用していますか?