Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

IMPORTANT! Use Haskell Write a function that maps a list of Strings that may hav

ID: 3605314 • Letter: I

Question

IMPORTANT! Use Haskell

Write a function that maps a list of Strings that may have multiple words to Strings with only the first word left. E.g. ["Today is Thursday", "Banquet", "unreal games"] becomes ["Today", "Banquet", "unreal"].

Write a function that takes a two-dimensional matrix of Strings and transforms all empty strings to "0".

Sort a list of Strings by length of the first word in the strings (if the strings have more than one word)

Pack repeats in a list of Chars into separate lists, resulting in a sorted list of lists: E.g.,

Explanation / Answer

#include <iostream>

#include <string.h>

using namespace std;

// This function recursively removes duplicates

// and returns modified string

char* removeDup(char * str, int n)

{

    int len = strlen(str);

    int k = 0; // To store index of result

    // Start from second character and add

    // unique ones

    for (int i=1; i< len; i++)

    {

        // If different, increment k and add

        // previous character

        if (str[i-1] != str[i])

            str[k++] = str[i-1];

        else

            // Keep skipping (removing) characters

            // while they are same.

            while (str[i-1] == str[i])

                i++;

    }

    // Add last character and terminator

    str[k++] = str[i-1];

    str[k] = '';

    // Recur for string if there were some removed

    // character

    if (k != n)

        removeDup(str, k);// Shlemial Painter's Algorithm

    // If all characters were unique

    else return str;

}

int main()

{

  char str1[] = "geeksforgeeg";

    cout << removeDup(str1, strlen(str1)) << endl;

    char str2[] = "azxxxzy";

    cout << removeDup(str2, strlen(str2)) << endl;

    char str3[] = "caaabbbaac";

    cout << removeDup(str3, strlen(str3)) << endl;

    char str4[] = "gghhg";

    cout << removeDup(str4, strlen(str4)) << endl;

    char str5[] = "aaaacddddcappp";

    cout << removeDup(str5, strlen(str5)) << endl;

    char str6[] = "aaaaaaaaaa";

    cout << removeDup(str6, strlen(str6)) << endl;

  char str7[] = "qpaaaaadaaaaadprq";

    cout << removeDup(str7, strlen(str7)) << endl;

    char str8[] = "acaaabbbacdddd";

    cout << removeDup(str8, strlen(str8)) << endl;

    char str9[] = "acbbcddc";

    cout << removeDup(str9, strlen(str9)) << endl;

}