Hitscotty
12/29/2017 - 4:42 AM

code


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;
    }
}