string getTitle (string [] task){
return task[0];
}
string[][] roadmap(string[][] tasks, string[][] queries) {
var results = new List<IEnumerable<string>>();
// execute each query
for(int i = 0; i < queries.Length; i++){
var currentName = queries[i][0];
var currentTime = DateTime.Parse(queries[i][1]);
// convert to linq
// get all tasks for currentName and on assigned date
var _tasks = tasks
.Where(t => {
var isAssigned = t.Contains(currentName);
var startDate = DateTime.Parse(t.ElementAt(1));
var endDate = DateTime.Parse(t.ElementAt(2));
var s = DateTime.Compare(currentTime, startDate); // needs to be less than 0
var e = DateTime.Compare(currentTime, endDate); // needs to be greater than 0
return isAssigned && s >= 0 && e <= 0 ;
})
.OrderBy(t => t.ElementAt(2))
.ThenBy(t => t.ElementAt(0))
.Select(t => t.ElementAt(0));
// no tasks found go to next
if(_tasks.Count() == 0){
results.Add(new List<string>());
continue;
}
results.Add(_tasks);
}
return results.Select(r => r.ToArray()).ToArray();
}
string[] chatBot(string[][] conversations, string[] currentConversation)
{
string[] uniqueWords = currentConversation.Distinct().ToArray();
int conversationIndex = -1;
int maxLastWordIndex = 0;
int maxMatchingWords = 0;
for (int i=0; i<conversations.Length; i++)
{
int matchingWords = -1;
int lastWordIndex = -1;
if (maxMatchingWords >= uniqueWords.Length)
{
continue;
}
for (int y=0; y<uniqueWords.Length; y++)
{
for(int k=conversations[i].Length-1; k>=0; k--)
{
if (conversations[i][k] == uniqueWords[y])
{
//Console.WriteLine("FOUNDONE");
matchingWords++;
if (k > lastWordIndex)
{
lastWordIndex = k;
}
break;
}
}
}
if (matchingWords > maxMatchingWords)
{
conversationIndex = i;
maxLastWordIndex = lastWordIndex;
maxMatchingWords = matchingWords;
}
}
if (conversationIndex >= 0)
{
ArrayList al = new ArrayList(currentConversation);
for (int i=maxLastWordIndex+1; i<conversations[conversationIndex].Length; i++)
{
al.Add(conversations[conversationIndex][i]);
}
return al.ToArray(typeof(string)) as string[];
}
else
{
return currentConversation;
}
}